Seltsames Verhalten bei Dialog [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Seltsames Verhalten bei Dialog [gelöst]

Beitrag von and4more »

Hallo liebes Forum, hätte da mal wieder 'ne Frage, weil's mich zur Zeit total nervt, da es mir den geordneten Ablauf meines Programms über den Haufen wirft. Und zwar möchte ich eine User-Entscheidung abfragen, aber wenn ich folgenden (Beispiel-)Code eingebe:

Code: Alles auswählen

 
  case QuestionDlg('Dialog Test','Bitte klicken Sie auf einen Knopf',
  mtInformation,[mbYes,'Ja, ich will',mbNo,'Lass mich in Ruhe',mbCancel,
  'Fenster schließen ohne irgendwas',mbIgnore,'Zurück zur Basis'],'') of
  mrYes: ShowMessage('Gedrückt wurde mrYes '+#10#13+'mit dem Wert von: '+
         IntToStr(mrYes));
  mrNo:  ShowMessage('Gedrückt wurde mrNo '+#10#13+'mit dem Wert von: '+
         IntToStr(mrNo));
  mrIgnore: ShowMessage('Gedrückt wurde mrIgnore '+#10#13+'mit dem Wert von: '+
            IntToStr(mrIgnore));
  mrCancel: ShowMessage('Gedrückt wurde mrCancel '+#10#13+'mit dem Wert von: '+
            IntToStr(mrCancel));
  else ShowMessage('Gedrückt wurde irgendwas anderes');
  end;
 

...kommt bei den ersten 3 Buttons "Gedrückt wurde was anderes", beim 4. Button und beim "x" oben rechts kommt "Gedrückt wurde mrYes...". Das soll doch so wohl nicht sein?!? Die Units "Dialogs", "LCLType","Controls" und "Forms" sind drin. Wenn ich "else" am Schluss weglasse, schließt das Abfragefenster ohne eine Message bei den ersten drei Buttons. Hab ich irgendwas übersehen oder falsch gemacht? Vielleicht seh' ich den Wald vor lauter Bäumen nicht, aber gemäß den gegoogelten Beispielen und Erklärungen müsste der Code eigentlich passen. Weiß jemand Rat?
Liebe Grüße
Zuletzt geändert von and4more am So 12. Feb 2017, 20:53, insgesamt 1-mal geändert.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

jacade
Beiträge: 4
Registriert: Sa 29. Okt 2016, 11:57
OS, Lazarus, FPC: Debian 8 (L 1.6 FPC 3.0.0)
CPU-Target: 64bit

Re: Seltsames Verhalten bei Dialog

Beitrag von jacade »

Ich denke, dass du bei dem Aufruf von QuestionDlg mrYes, mrNo,... anstelle von mbYes, mbNo,... übergeben musst. Das klappt bei mir:

Code: Alles auswählen

 
case QuestionDlg('Dialog Test','Bitte klicken Sie auf einen Knopf',
  mtInformation,[mrYes,'Ja, ich will',mrNo,'Lass mich in Ruhe',mrCancel,
  'Fenster schließen ohne irgendwas',mrIgnore,'Zurück zur Basis'],'') of
  mrYes: ShowMessage('Gedrückt wurde mrYes '+#10#13+'mit dem Wert von: '+
         IntToStr(mrYes));
  mrNo:  ShowMessage('Gedrückt wurde mrNo '+#10#13+'mit dem Wert von: '+
         IntToStr(mrNo));
  mrIgnore: ShowMessage('Gedrückt wurde mrIgnore '+#10#13+'mit dem Wert von: '+
            IntToStr(mrIgnore));
  mrCancel: ShowMessage('Gedrückt wurde mrCancel '+#10#13+'mit dem Wert von: '+
            IntToStr(mrCancel));
  else ShowMessage('Gedrückt wurde irgendwas anderes');
  end;
 

Siehe auch hier: http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/questiondlg.html

Mathias
Beiträge: 6193
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Seltsames Verhalten bei Dialog

Beitrag von Mathias »

Bei diesem kleinen Code sieht man es gut, bei "Ja, ich will", wird eine 33 zurück gegeben.

Code: Alles auswählen

var
  Nr: integer;
begin
  Nr := QuestionDlg('Titel', 'Text',
    mtInformation, [33, 'Ja, ich will', 34, 'Lass mich in Ruhe', 35,
    'Fenster schließen ohne irgendwas', 36, 'Zurück zur Basis'], '');
 
  ShowMessage('Es wurde: '+IntToStr(Nr)+' gedrückt !');
end;

Somit kann man Nummern nach belieben mitgeben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Seltsames Verhalten bei Dialog

Beitrag von and4more »

...danke, danke, danke irgendwie hab' ich in den Erklärungen immer mbYes, mbNo, mbirgendwas gelesen. Mit mrYes, etc. funktioniert alles wie gewünscht. Vielen Dank für die Tipps, jetzt ist alles paletti.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Bitschubser
Beiträge: 61
Registriert: Mo 27. Aug 2012, 15:43

Re: Seltsames Verhalten bei Dialog

Beitrag von Bitschubser »

and4more hat geschrieben:...danke, danke, danke irgendwie hab' ich in den Erklärungen immer mbYes, mbNo, mbirgendwas gelesen. Mit mrYes, etc. funktioniert alles wie gewünscht. Vielen Dank für die Tipps, jetzt ist alles paletti.

...die mbXXX sind für die einfache Variante, wo man nur Standard-Buttons verwendet und (zumindest bei Windows) es dem Betriebssytem überlässt diese mit den Standard-Texten zu beschriften.

Antworten