Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - mrYes und mrNo vertauschen?


D. Annies - Mi 13.02.13 20:51
Titel: mrYes und mrNo vertauschen?
Hi, Delpher,

kann man die Abfrage genau "umdrehen"?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TBuchMain.Button40Click(Sender: TObject);   // PROGRAMM START
begin                  // stdwert
  datatransfer := false;
  if (label30.Caption <> label38.Caption) then
  begin
    if messagedlgpos('Datentransfer starten?'+#13'von   '+label38.Caption+#13+
      'nach '+label30.caption, mtConfirmation, [mbYes, mbNo], 0,580,270) = mrYes then   // Hier <drehen> ??
    begin
      datatransfer := true;
      Unterverzeichnissystem(self);
      messagedlgpos('Datentransfer beginnt, '   + #13+
                    'von   Ort: ' + label38.Caption + #13+       // stdwert
                    'nach Ort: '  + label30.caption,
                     mtInformation, [mbOk], 0,380,270);
      screen.Cursor := crno;
        FindFiles(label38.Caption, '*.*', true);                 // stdwert
      screen.Cursor := crdefault;
      messagedlgpos('Datentransfer beendet', mtInformation, [mbOk], 0,580,270);
    end
  end
  else label6.Caption := 'Arbeitssitzung - Intern/Stick';


Ich meine damit, dass mbNo voreingestellt ist, oder die Logik sich genau anders verhält - ich möchte nämlich
mit RETN weiterblättern und nicht jedesmal den Tab bemühen, o. ä.

Vielen Dank für eine Idee,
Detlef


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 14.02.2013 um 13:15


Mathematiker - Mi 13.02.13 20:57

Hallo,
warum drehst Du die Frage nicht herum, z.B.

Delphi-Quelltext
1:
2:
3:
4:
5:
    if 
      messagedlgpos('Keinen Datentransfer durchführen?'+#13'von   '+label38.Caption+#13+
      'nach '+label30.caption, mtConfirmation, [mbYes, mbNo], 0,580,270) = mrNo then   // Hier <drehen> ??
    begin
    ...

oder so ähnlich.

Beste Grüße
Mathematiker


Gerd Kayser - Mi 13.02.13 21:28

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
Ich meine damit, dass mbNo voreingestellt ist

MessageDlgPos hat noch einen weiteren Parameter.

Delphi-Quelltext
1:
2:
    if messagedlgpos('Datentransfer starten?'+#13'von   '+label38.Caption+#13+
      'nach '+label30.caption, mtConfirmation, [mbYes, mbNo], 0,580,270, mbNo) = mrYes then


Irgendwie klappt das nicht mit dem Hervorheben. "0,580,270, mbNo"


WasWeißDennIch - Do 14.02.13 09:19

Bei MessageBox klappt das hervorragend.

Delphi-Quelltext
1:
2:
if MessageBox(0'Festplatte wirklich formatieren?''Bestätigen', MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) = idYes then
  Tschuess;


Gerd Kayser - Do 14.02.13 11:50

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Bei MessageBox klappt das hervorragend.

Ich meinte den Editor dieser Webseite. Irgendwas scheint der gegen mich zu haben ...
Neuer Versuch:

Delphi-Quelltext
1:
2:
if messagedlgpos('Datentransfer starten?'+#13'von   '+label38.Caption+#13+
      'nach '+label30.caption, mtConfirmation, [mbYes, mbNo], 0,580,270mbNo) = mrYes then


Edit: Kaum macht man es richtig, dann klappts. ;-)


WasWeißDennIch - Do 14.02.13 12:34

Sry, falsch verstanden. Andererseits bevorzuge ich persönlich MessageBox, weil MessageDlg so ein "selbstgepinseltes VCL-Gedöns" ist, während MessageBox von Windows kommt und sich deshalb optisch an das OS anpasst. Aber es kann natürlich jeder benutzen, was er will.


Gerd Kayser - Do 14.02.13 13:29

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Aber es kann natürlich jeder benutzen, was er will.

Das sehe ich genauso. Da ich es hasse, wenn zusätzlich zum Hauptformular noch weitere Fenster auf dem Desktop herumfliegen, benutze ich TLMDFormDisplay, um weitere Formulare in dieser Komponente auf dem Hauptformular anzuzeigen. MessageBoxen (Sicherheitsabfragen usw.) werden auf dem Hauptformular auf einem zusätzlichen Panel angezeigt, das bei Bedarf ein- oder ausgeblendet werden kann.

Auf dem Bild in der Anlage wird es deutlich, wie ich das mache.


D. Annies - Do 14.02.13 20:27

Danke für eure Antworten. MessageBox kannte ich noch nicht, aber ich habe bei meinem Versuch auch noch
einen Fehler:


Delphi-Quelltext
1:
2:
if MessageBox(0'Datentransfer starten?'+#13'von   '+label38.Caption+#13+
                 'nach '+label30.caption, 'Bestätigen', MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) = idYes then


H e l p ... :))

Detlef


WasWeißDennIch - Do 14.02.13 20:55


Delphi-Quelltext
1:
2:
if MessageBox(0, PChar('Datentransfer starten?'+ sLineBreak + 'von   '+label38.Caption + sLineBreak +
                 'nach '+label30.caption), 'Bestätigen', MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) = idYes then


D. Annies - Do 14.02.13 22:40

Danke für eure Mithilfe!

Jetzt suche ich weitere Stellen, um diese gute Logik einzubinden ...

Bis denne,
Detlef