Hallo,
Ich habe ein seltsames Problem zu dem ich keine Lösung finden kann.
Aus meinem Hauptfenster öffne ich ein neues mit nem Modalresult. Jedoch nicht direkt mit frmPosition.showModal, sondern die Funktion frmPosition.Execute. In dieser Funktion öffnet sich das Fenster dann selber, um nach dem schliessen noch ein wenig selber aufräumen zu können. So weit so gut. Nun habe ich aber genau den selben Schritt in diesem Fenster noch mal gemacht. D.h. ich habe ein weiteres Fenster über eine Execute funktion geöffnet. Natürlich eine eigene. Beides Methoden der jeweiligen Klassen.
Wenn ich nun das zuletzt geöffnete Fenster mit nem ModalResult := mrOK schliesse, werden beide Fenster geschlossen.
Die Äussere Execute des frmPosition sieht wie folgt aus.
Delphi-Quellcode:
function TfrmPosition.Execute(oPos: CPosition): CPosition;
var bolValOk: Boolean;
mrRes : integer;
begin
oCurrentPos := oPos;
edtDescription.Text := oCurrentPos.getText;
edtCount.text := floattostr(oCurrentPos.getCount);
edtPrice.Text := floattostr(oCurrentPos.getPrice);
bolValOk := false;
mrRes := mrOK;
while(not bolValOk AND (mrRes = mrOk)) do
begin
mrRes := self.ShowModal;
{HIER SPRINGT ER DURCH DEN MODALRESULT DES INNNEREN EXECUTE RAUS :-(((((}
if (mrRes = mrOk)then
begin
oCurrentPos.setText(edtDescription.text);
oCurrentPos.setVat(vats[cmbVat.ItemIndex]);
oCurrentPos.setPUnit(units(cmbPUnit.ItemIndex));
try
oCurrentPos.setCount(strtofloat(edtCount.Text));
bolValOk := true;
except
showmessage('Anzahl ist keine Korrekte Zahl!');
bolValOk := false;
end;
try
oCurrentPos.setPrice(strtofloat(edtPrice.Text));
except
showmessage('Preis ist keine Korrekte Zahl!');
bolValOk := false
end;
end
else
begin
oCurrentPos.destroy;
oCurrentPos := nil;
end;
end;
Execute := oCurrentPos;
end;
Kennt das jemand und hat vielleicht ne Lösung? Er Spring erst Raus, nachdem er die Innere Execute fertig abgeschlossen hat. Aber die Äussere macht er nicht zu ende. Scheint für mich, als ob das MODALRESULT nicht korrekt gelöscht wird, und das zweite Fenster das selbe MODALRESULT bekommt.
Bin dankbar für jeden Hinweis.
MfG,
A.Hachmann