Seltsames Verhalten bei Dialog [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...

Seltsames Verhalten bei Dialog [gelöst]

Beitragvon and4more » 12. Feb 2017, 10:04 Seltsames Verhalten bei Dialog [gelöst]

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 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
and4more
 
Beiträge: 194
Registriert: 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
Nach oben

Beitragvon jacade » 12. Feb 2017, 11:00 Re: Seltsames Verhalten bei Dialog

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
jacade
 
Beiträge: 3
Registriert: 29. Okt 2016, 10:57
OS, Lazarus, FPC: Debian 8 (L 1.6 FPC 3.0.0) | 
CPU-Target: 64bit
Nach oben

Beitragvon Mathias » 12. Feb 2017, 18:15 Re: Seltsames Verhalten bei Dialog

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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 2819
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon and4more » 12. Feb 2017, 20:53 Re: Seltsames Verhalten bei Dialog

...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
and4more
 
Beiträge: 194
Registriert: 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
Nach oben

Beitragvon Bitschubser » 13. Feb 2017, 10:25 Re: Seltsames Verhalten bei Dialog

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.
Bitschubser
 
Beiträge: 60
Registriert: 27. Aug 2012, 14:43

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried