Hallo,
ich habe einen ganz seltsamen Effekt bei der verwendung von MessageDlg. Sobald der Dialog angezeigt wurde, können hinterher auf meiner Form einzelen Controls (genau die, zu denen ich vor Anzeige des Dialogs wechseln wollte) nicht mehr fokussiert werden. Der Cursor steht dann an völlig anderen Positionen, Text im inaktiven Control kann aber markiert werden, eingegebener Text erscheint nicht da, wo der Cursor blinkt etc. ...
Ich habe zwar über einen Workaround das Problem erst mal gelöst, würde aber trotzdem gerne wissen, woran es liegt, damit ich entscheiden kann, ob nicht auch der Workaround nochmal geändert werden muss. Hier der Quelltextauszug:
// WorkAround über CreateMessageDialog nötig, da MessageDlg zu absurden Fehlern führte
// Alter Code mit MessageDlg
// wErgebnis:=MessageDlg('Ihre Daten wurden geändert. Wollen Sie speichern?',
// mtWarning, [mbYes, mbNo, mbCancel],0);
// neuer Code (Workaround)
msgForm:=CreateMessageDialog('Ihre Daten wurden geändert. Wollen Sie speichern?', mtWarning, [mbYes, mbNo, mbCancel]);
msgForm.ShowModal;
wErgebnis := msgForm.ModalResult;
msgForm.free;
// Ende Codebeispiel
Obwohl doch die Kombination aus CreateMessageDialog, Anzeigen und Auswerten der Form letztlich nichts anderes ist, als MessageDlg funktioniert das.
Etwas mulmig ist mir aber schon dabei, da ja CreateMessageDialog möglicherweise nach ein paar Änderungen im Quelltext an völlig anderen Stellen ebenfalls zu solchen absurden Fehlern führen könnte. Ist es hier besser, den Aufwand in Kauf zu nehmen und MessageDlg einfach selbst neu zu machen??
Gruß,
Siegbert
ich habe einen ganz seltsamen Effekt bei der verwendung von MessageDlg. Sobald der Dialog angezeigt wurde, können hinterher auf meiner Form einzelen Controls (genau die, zu denen ich vor Anzeige des Dialogs wechseln wollte) nicht mehr fokussiert werden. Der Cursor steht dann an völlig anderen Positionen, Text im inaktiven Control kann aber markiert werden, eingegebener Text erscheint nicht da, wo der Cursor blinkt etc. ...
Ich habe zwar über einen Workaround das Problem erst mal gelöst, würde aber trotzdem gerne wissen, woran es liegt, damit ich entscheiden kann, ob nicht auch der Workaround nochmal geändert werden muss. Hier der Quelltextauszug:
// WorkAround über CreateMessageDialog nötig, da MessageDlg zu absurden Fehlern führte
// Alter Code mit MessageDlg
// wErgebnis:=MessageDlg('Ihre Daten wurden geändert. Wollen Sie speichern?',
// mtWarning, [mbYes, mbNo, mbCancel],0);
// neuer Code (Workaround)
msgForm:=CreateMessageDialog('Ihre Daten wurden geändert. Wollen Sie speichern?', mtWarning, [mbYes, mbNo, mbCancel]);
msgForm.ShowModal;
wErgebnis := msgForm.ModalResult;
msgForm.free;
// Ende Codebeispiel
Obwohl doch die Kombination aus CreateMessageDialog, Anzeigen und Auswerten der Form letztlich nichts anderes ist, als MessageDlg funktioniert das.
Etwas mulmig ist mir aber schon dabei, da ja CreateMessageDialog möglicherweise nach ein paar Änderungen im Quelltext an völlig anderen Stellen ebenfalls zu solchen absurden Fehlern führen könnte. Ist es hier besser, den Aufwand in Kauf zu nehmen und MessageDlg einfach selbst neu zu machen??
Gruß,
Siegbert
Comment