Announcement

Collapse
No announcement yet.

Probleme mit MessageDLG

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

  • Probleme mit MessageDLG

    Moin moin !

    Seit inzischen mehreren Stunden ärgere ich mich mit einer Sicherheitsabfrage herum. Die Abfrage erfolgt mit dem
    folgenden Code:

    i := MessageDlg('Soll der
    Datensatz gelöschet werden ?', mtConfirmation, [mbYes, mbNo], 0, mbYes);

    Laut dem Beispiel der Delphi-Hilfe sollte ich durch einen Vergleich des Abfrage-Ergebnisses in Variable i
    mit den Konstanten mrYes und mrNo prüfen können, welche Schaltfläche der Anwender gedrückt hat.

    Es hat nicht funktioniert !

    Eine Kontrolle der Ergebnisse und Konstantenwerte hat folgendes ergeben:

    mrYes = 6

    mrNo = 7

    Anwender drückt Yes => i = 3

    Anwender drückt No => i = 4

    Handelt es sich um einen Fehler im Delphi-Beispiel, oder habe ich falsche Konstantenbezeichnungen erwischt ?

    Eigentlich wollte ich das Ergebnis in i nicht mit den Werten 3 bzw. 4 direkt, sondern mit Konstanten vergleichen - man weiß ja nie wann Microsoft wieder mal was ändert.

    Herzlichen Dank für alle Anregungen

    Gruß

    Hauke Gintner

  • #2
    Hallo<br>
    Ich glaube, du hast falsche Konstantenbezeichnungen erwischt, die beziehen sich nämlich mMn auf die Funktion MessageDlg aus der Unit dialogs, du verwendest aber MessageDlg aus der Unit qdialogs, und die Rückgabewerte dieser beiden Funktionen unterscheiden sich in der Tat voneinander.
    Mein Tip wäre entweder die Funktion aus der Unit dialogs zu nehmen (dann stimmen die Rückgabewerte mit den Konstanten überein, der Parameter DefaultBtn fällt dann aber weg - allerdings ist bei der Buttonkombination Yes/No standardmäßig sowieso ersterer Default) oder die Funktion MessageBox zu verwenden (aus der Unit Windows, da mußt du bezüglich der Syntax mal in die Delphihilfe schauen

    Comment


    • #3
      Hallo Hauke,

      dein Problem liegt beim MessageDlg. Mit 5 Parametern wird die Deklaration aus QDialogs genommen, die plattformunabhängig ist.

      In der unit QControls sind mryes = 3 und mrno = 4 definiert.

      Der MessageDlg mit 4 Parametern (benutze ich immer) hat zwar keinen expliziten Defaultbutton, dafür werden mryes und mrno aus der unit controls genommen und sind dementsprechend 6 und 7.

      Das ist eine böse Falle!!

      Grüße

      Juli

      Comment


      • #4
        Herzlichen Dank !

        Es hat funktioniert. MessageDlg mit 4 Parametern hat Delphi aber erst dann korrekt umgesetzt, nachdem ich QDialogs aus der USES-Anweisung entfernt hatte.

        Gruß

        H. Gintne

        Comment


        • #5
          Alternativ hättest du auch dialogs.MessageDlg aufrufen könne

          Comment

          Working...
          X