Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Messagedlg(..) nicht ja sonder nein


Michael POHL - Di 03.03.09 20:26
Titel: Messagedlg(..) nicht ja sonder nein
Hallo Kollegen,
weiss jemand wie man beim Messagedlg() die 'Nein' Taste selektiert?

Delphi-Quelltext
1:
If MessageDlg('Auftrag soll ohne Kunden und Farbbezeichnung geschlossen werden?' +#13+'Die Auftragsnummer geht verloren!', mtConfirmation,[mbYes,mbNo],0) = mryes then......                    


mbNo sozusagen:)


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 03.03.2009 um 20:22
Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt


alzaimar - Di 03.03.09 20:35

Ist die Nein-Taste nicht mit einem 'Accelerator' versehen? Das ist ein unterstrichenes Zeichen. Wenn der Knopf z.B. mit 'Nein' beschriftet ist, sollte 'ALT-N' reichen. Oder wie meinst Du das?


LexXis - Di 03.03.09 20:38

Ich rate mal ins Blaue: Du suchst mrNo?


Delete - Di 03.03.09 20:42

Du willst die Standard-Taste umstellen, verstehe ich das richtig? Das geht IIRC mit dem MessageDlg nicht, wohl aber mit der MessageBox, da gibt es die MB_DEFBUTTON-Konstanten für sowas.


alzaimar - Di 03.03.09 21:10

3 Antworten, 3x raten. Mich dünkt, er hat die Frage nicht richtig formuliert.


Webo - Di 03.03.09 21:19

Ich verstehe ihn so, dass er standartmäßig die "Nein"-Taste im Fokus haben will, so dass, wenn man direkt Enter drückt auch "Nein" ausgewählt wird.


Michael POHL - Mi 04.03.09 08:38

Riiiiiiichtig:)
ich möchte wenn das Fenster aufgeht, das der User wenn er ohne denken 'entert' Nein drückt.


zuma - Mi 04.03.09 09:35

wie DeddyH schon sagt, geht das mit MessageDlg wohl nicht ...

Evtl. einfach die Logik umdrehen ??

Delphi-Quelltext
1:
If MessageDlg('Auftrag ohne Kunden und Farbbezeichnung !' +#13+'Speichern abbrechen ?(Die Auftragsnummer geht verloren!)', mtConfirmation,[mbYes,mbNo],0) = mryes then......                    


Somit wird einfach nicht mehr gespeichert, wenn der DAU mal wieder ohne Denken wild Tasten drückt ... nach meiner Erfahrung der einzige Weg, User zur korrekten Programmnutzung zu erziehen ;)

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt


Reinhard Kern - Mi 04.03.09 12:59

user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:
Somit wird einfach nicht mehr gespeichert, wenn der DAU mal wieder ohne Denken wild Tasten drückt ... nach meiner Erfahrung der einzige Weg, User zur korrekten Programmnutzung zu erziehen ;)



Hallo,

es kann ja wohl nicht ernsthaft die Aufgabe eines Programmierers sein, die Wirkung von Bedienungsfehlern zu maximieren, um den User zu disziplinieren.

Konsequent angewandt wären wir von rauchenden Motherboards und explodierenden Monitoren umgeben, weil jeder Programmierer meint, er müsste die Menschen davor in seinem Sinne erziehen.

Bisher habe ich alle technischen Systeme so fehlertolerant wie möglich ausgelegt. Ich lebe offensichtlich in einer anderen Welt.

Gruss Reinhard


zuma - Mi 04.03.09 15:28

user profile iconReinhard Kern hat folgendes geschrieben Zum zitierten Posting springen:

Hallo,

es kann ja wohl nicht ernsthaft die Aufgabe eines Programmierers sein, die Wirkung von Bedienungsfehlern zu maximieren, um den User zu disziplinieren.


Evtl. hast du mich missverstanden ?
Nicht mehr gespeichert bedeutet NICHT, das alles verworfen wird, sondern man den nicht aus der Maske lässt, bis alle notwendigen Eingaben da sind oder gewollt abgebrochen werden soll.

Das ;) sollte auch auf eine in meinem Post versteckte Ironie hindeuteten, was mir scheinbar nicht richtig gelungen ist.


Reinhard Kern - Mi 04.03.09 17:22

user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:
[Evtl. hast du mich missverstanden ?
Nicht mehr gespeichert bedeutet NICHT, das alles verworfen wird, sondern man den nicht aus der Maske lässt, bis alle notwendigen Eingaben da sind oder gewollt abgebrochen werden soll...


Das ging aus dem Posting nicht hervor, ist natürlich ok, wenn es so gemacht wird.

Das Smiley habe ich schon bemerkt, aber mit Zweifel - ich habe schon oft erlebt, dass Programmierer bei Fehlbedienungen Mordgelüste an den Usern entwickeln anstatt ihre Software zu verbessern. Das zeigt schon der Begriff DAU, eigentlich ist der DAU das Mass aller Dinge: wenn er ein Programm bedienen kann, ist es wirklich brauchbar. Es ist bloss manchmal schwierig, DAUs zum Test zu finden.

Gruss Reinhard


zuma - Mi 04.03.09 17:55

Stimmt schon, das mit den DAU's ...
Mein Spruch heisst ja auch immer:
Wenn meine Oma das Prog ohne Anleitung bedienen kann, ist es gut ...

Letztlich ist jeder Programmierer dumm (oder bereits 'burned out'), wenn er nicht die Fehler der DAU's als Anregung nimmt, um seine Software zu verbessern.


jaenicke - Mi 04.03.09 19:10

Du könntest es auch so machen:

Delphi-Quelltext
1:
2:
  if MessageBox(Handle, 'Auftrag soll ohne Kunden und Farbbezeichnung geschlossen werden?'#13#10
    + 'Die Auftragsnummer geht verloren!', 'Sicher?', MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = mrYes then

Das hat auch den Vorteil, dass es unter Vista z.B. besser aussieht (das erste ist dein Original, das zweite dieser Quelltext):

user defined image


Delete - Mi 04.03.09 19:19

Das hatte ich hier [http://www.delphi-forum.de/viewtopic.php?p=552039#552039] bereits gesagt.