Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Anordnung der Buttons in Messagedlg (https://www.delphipraxis.net/208990-anordnung-der-buttons-messagedlg.html)

Maekkelrajter 10. Okt 2021 12:58

Anordnung der Buttons in Messagedlg
 
Liste der Anhänge anzeigen (Anzahl: 2)
Kann man im (VCL-) Messagedialog die Anordnung, d. h. die Reihenfolge der Buttons beeinflussen?. Die Reihenfolge der Elemente in 'Buttons' hat leider keinen Einfluss auf die Anordnung der Buttons im Dialog.

Delphi-Quellcode:
Messagedlg('Nur Markierte Tracks durchsuchen?   ',mtConfirmation[mbYes,mbYesToAll,mbCancel],0);

sieht genauso aus wie
Delphi-Quellcode:
Messagedlg('Nur Markierte Tracks durchsuchen?   ',mtConfirmation[mbYes,mbCancel,mbYesToAll],0);

oder
Delphi-Quellcode:
Messagedlg('Nur Markierte Tracks durchsuchen?   ',mtConfirmation[mbYesToAll,mbYes,mbCancel],0);

(siehe Anhang links)

Nach meinem Empfinden sollte der 'Abbruch' - Button an letzter Stelle stehen, siehe Anhang rechts (jpg 'gefälscht'). Natürlich könnte ich den Dialog selbst basteln, aber vielleicht habe ich ja nur die entscheidende Stellschraube übersehen?

Gruß LP

Uwe Raabe 10. Okt 2021 13:34

AW: Anordnung der Buttons in Messagedlg
 
Zitat:

Zitat von Maekkelrajter (Beitrag 1495893)
Die Reihenfolge der Elemente in 'Buttons' hat leider keinen Einfluss auf die Anordnung der Buttons im Dialog.

Das ist korrekt. Da es sich dabei um ein Set
Delphi-Quellcode:
TMsgDlgButtons
handelt ist die Reihenfolge der Elemente egal. Bei der Erstellung der Buttons wird die Reihenfolge der zugrunde liegenden Typs
Delphi-Quellcode:
TMsgDlgBtn
verwendet:
Delphi-Quellcode:
  TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
    mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
Das kann man auch nicht beeinflussen.

himitsu 10. Okt 2021 13:46

AW: Anordnung der Buttons in Messagedlg
 
Nja, die Reihenfolge so mancher Buttons fand ich auch schon immer etwas "ungünstig". (vorallem von den "ALL"-Buttons)

Du kannst dir einen eigenen Dialog bauen.
Da sind sogar ein paar überalterte Unit-Vorlagen in Datei > Neu enthalten.

Du könntest Delphi-Referenz durchsuchenCreateMessageDialog verwenden, welcher den Windowsdialog mit der VCL nachbaut.
Da könntest du dann die Captions der Buttons ändern.
Dieses CreateMessageDialog wird von der VCL intern auch verwendet, wenn man "neuere" Dialoge auf uralten Windowsen anzeigen will, oder wenn dort die "neuen" CommonControlsV6 deaktiviert sind, wenn z.B. im Windows 7 oder Server2016 die Designs deaktiviert wurden, weil jemand denkt der Win2000-Style wäre soooo cool und dabei vergisst, dass es nicht nur das Design beeinflusst, sondern auch die Verfügbarkeit/Version gewisser APIs.

Oder du machts es richtig und beschäftigst dich mit TTaskDialog oder direkt mit der TaskDialog-WinAPI.

Bernhard Geyer 10. Okt 2021 13:58

AW: Anordnung der Buttons in Messagedlg
 
Ich würde bei Dialoge die mehr als zwei Auswahloptionen anbieten den TaskDialog nutzen.
Damit kannst du auch etwas Erklärungstext unterbringen.

Mehr als 2 Button bei normalen MessageDialog halte ich für Benutzerunfreundlich, da die fertigen Button-Texte meinstens nicht 100%ig passen und man dann eh überlegen muss was genau jetzt sich hinter den aktuellen (über Ja/Nein oder OK/Abbrechen) verbirgt.

Maekkelrajter 10. Okt 2021 22:52

AW: Anordnung der Buttons in Messagedlg
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich muss zu meiner Schande gestehen, dass ich TTaskDialog, wie so viele Features der neueren Delphi-Versionen, überhaupt nicht kannte. Ist zwar etwas aufwändiger zu implementieren, aber dafür ungleich flexibler als der Standard Message Dialog. Im konkreten Fall sieht meine Lösung (Rohfassung) schon recht ordentlich aus (s. Anhang) Danke für die Tipps in dieser Richtung!

Gruß LP

himitsu 10. Okt 2021 23:40

AW: Anordnung der Buttons in Messagedlg
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Prinzip verstößt schon dieser Dialog gegen die Designrichtlinien von Microsoft.
* Erstmal sind wichtige Infos sinnlos doppelt vorhanden
* und man muß den Text genau lesen, um die Buttons wirklich richtig zu verstehen.

https://docs.microsoft.com/en-us/win...#command-links



Nja, bei Dingen, wie Löschen könnte man [Löschen] und [Abbrechen] mit einer "Bestätigen" oder "Alles"-Checkbox kombinieren,
oder man nimmt TaskButtons (siehe Flags tfUseCommandLinks).

Hier sind die "Haupt"-Texte kurz genug, so dass man sie komplett als Captions der Buttons verwenden könnte.

Anhang 54467

Wenn mehr als Einwas markiert ist, dann das Markierte als Standard/Default.
Bei nur einem Markierten könnte man sich überlegen "Alles" als Default zu machen. (oder man lässt den Dialog immer gleich und belässt es bei "nur Markiertes")
Und bei keinem Markierten sollte darf "nur Markiertes" eigentlich garnicht zur Auswahl stehen. (oder es muß nachher eben eine Fehlermeldung kommen, siehe vorherriges Oder)


Die Klasse von Delphi hat noch paar kleine Macken/Fehlstellen, aber die grundlegenden Dinge sind schon drin. (Buttons, RadioButtons, CheckBoxen, Icons und ProgressBar)
Die Dialoge wie vom UAC (Name+Passwort) oder der KopierDialog sind die Fortsetzung.
https://tmssoftware.com/site/blog.asp?post=57

dummzeuch 11. Okt 2021 09:53

AW: Anordnung der Buttons in Messagedlg
 
Bevor Du Dir einen eigenen Dialog baust, kannst Du Dir mal die w_dzDialog Unit in meiner dzlib anschauen, da haben ich nämlich genau diesen Dialog nachgebaut, weil mir diverse Dinge fehlten. Ich weiss aber gerade nicht, wie dort die Reihenfolge der Buttons festgelegt ist, zur Not gibt es aber "Custom" Buttons, die man explizit definieren kann.

https://osdn.net/projects/dzlib-tool...ot=dzlib-tools

venice2 11. Okt 2021 11:12

AW: Anordnung der Buttons in Messagedlg
 
Zitat:

Im Prinzip verstößt schon dieser Dialog gegen die Designrichtlinien von Microsoft.
Was interessieren schon die Designrichtlinien von $MS erlaubt ist was gefällt und für die aktuelle Situation benötigt wird.
Na ja bin halt ein Sonderfall hier!
Kein Komponente, keine VCL alles Selber machen ein paar Bildchen und das war's.
Nur schade das über die Jahre hinweg sich niemand dafür hier jemand Interessiert hat.

himitsu 11. Okt 2021 11:31

AW: Anordnung der Buttons in Messagedlg
 
Ein großer Teil von dem, was die sich vorstellen, ist garncht so verkehrt.

Und es kann nicht schaden, wenn die meisten Programme eines Systems ein ähnliches/konstistentes Verhalten haben, damit die Nutzer es "intuitiver" bedienen können.

Wäre schon ein klein Bissl blöd, wenn jedes Programm sich selbst entscheiden würde, ob man Aktionen mit der linken oder rechten Maustaste ausfüheren soll,
oder ob eben [OK] [Abbrechen] oder [Abbrechen] [OK] oder [好的] [中止] oder [中止] [好的] oder [擦除硬盘] [发布个人数据] [没有] oder


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz