Announcement

Collapse
No announcement yet.

Bug in MessageDlg() ??

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bug in MessageDlg() ??

    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

  • #2
    Ergänzung :

    Der oben befürchtete Fall ist schon eingetreten - eine Änderung an anderer Stelle und jetzt geht CreateMessageDialog auch nicht mehr...

    Also doch ein eigenes Dialogfenster erstellen??

    Ich würde mich freuen, wenn jemand einen einfacheren Weg wüsste. Für einen Dialog geht das ja noch, aber die komplette Funktionalität von MessagDlg nachprogrammieren == > das muss man ja nicht unbedingt erfreulich finden ;-)

    Gruß,

    Siegber

    Comment


    • #3
      Hallo,

      wie sieht ein <b>kleines</b> Beispielprojekt aus, mit dem dieser Effekt <b>jederzeit</b> reproduziert werden kann

      Comment

      Working...
      X