Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   MessageDlg Button neben Text (https://www.delphipraxis.net/189399-messagedlg-button-neben-text.html)

mh18058 8. Jun 2016 13:36

MessageDlg Button neben Text
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

ich habe ein Projekt von TurboDelphi2006 nach XE3 portiert und erhalte nun einen MessageDlg,
bei dem die Buttons neben dem Text stehen und nicht, wie gewohnt mittig unter dem Text.
Ich verwende {$LONGSTRINGS OFF}, aber daran liegt es nicht ...

Wie bekomme ich den MessageDlg richtig angezeigt? :gruebel:

Luckie 8. Jun 2016 13:40

AW: MessageDlg Button neben Text
 
Der MessageDlg kommt aus der VCL und basiert auf einer TForm. Da wird Embaracadero was geändert haben. Aber ich meine eine Windows Messagebox sieht auch so aus, wie auf deinem ersten Screenshot.

Dalai 8. Jun 2016 14:08

AW: MessageDlg Button neben Text
 
IIRC verwenden neuere Delphis auf Vista+ automatisch die Taskdialoge (glaub die heißen so). Und die sehen eben genauso aus wie die mittels MessageBox gerufenen Dialoge.

MfG Dalai

mh18058 8. Jun 2016 14:26

AW: MessageDlg Button neben Text
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Michael,
Hallo Dalai, danke für Eure prompten Antworten.

Die beiden Screenshots sind beide unter Win7 gemacht. Das erste
von einem unter TurboDelphi2006 kompilierten Version meines Programms
und das zweite von einem unter XE7 kompilierten Version.
Deshalb gleube ich, daß der Unterschied vom Compiler kommt.

Übrigens zeigt Paint folgenden MessageDlg. Da ist Text und Buttons
untereinander, wenn auch nicht wirklich mittig zentriert. :roll:
Und wenn ich in XE7 in den Projekt-Optionen das Erscheinungsbild
auf "silver" ändere, dann erscheint mein MessageDlg wie auf dem
2. Bild. :P

Ich find´s komisch ... und weiß nicht warum! :pale:

Martin

Dalai 8. Jun 2016 14:32

AW: MessageDlg Button neben Text
 
http://zarko-gajic.iz.hr/displaying-...ipsis-issues/:
Zitat:

Introduced way back in Delphi 2009 the TTaskDialog (defined in Dialogs.pas) implements task dialogs.
[...]
Using MessageDlg can result in 2 different displays of the actual message dialog. What will get displayed (and more importantly how) to the user is dependent on several factors including the following: Windows version your application is running on, if the application was built including runtime themes and if Windows uses themes.

If your application is running on Windows XP, MessageDlg internally creates and displays a standard Delphi form (though set to look and work as a dialog). If your application is running on at least Windows Vista (therefore Windows Vista, 7, 8, 10, etc) and runtime themes are enabled and used by Windows, MessageDlg will internally create the shiny task dialog!
MfG Dalai

himitsu 8. Jun 2016 14:52

AW: MessageDlg Button neben Text
 
In etwas "aktuelleren" Delphis wurde halt das Verhalten geändert.

Entweder Delphi nutzt da selber einen TForm-Nachfahren und baut den Dialog selber oder es nutzt die Windows-Dialog-API, abhängig von der Windows-Version und des Systemeinstellungen, bzw. den Projektoptionen (vorallem Vista+ mit aktivem "Design" aka Common Controls v6.0)
Und neuer Delphis nutzen hier die "moderenere" TaskDialog-API, drum sieht es im XE eben anders aus.

Windows hat den StyleGuid geändert.
* Buttons nun rechts, statt mittig
* Buttons in einem farblich abgergrenzten Bereich ... sieht man hier nicht, da die NewCommonControls nicht aktiviert sind (XPStyle)




Warum das mit den LongStrings?
(String = ShortString statt String = AnsiString, bzw. UnicodeString seit D2009)

mh18058 8. Jun 2016 15:11

AW: MessageDlg Button neben Text
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Dalai,

meine Frage ist gelöst! :-D
Dank Deines Hinweises hab´ ich das hier gefunden:
http://docwiki.embarcadero.com/Libra...tCommonDialogs

Und tatsächlich: Wenn ich vorher
Code:
UseLatestCommonDialogs := false;
aufrufe, dann erscheint mein MessageDlg auch mit XE und dem
Windows-Classic Theme wie ich es erwarte. :thumb:
Das ist in Dialogs wohl sowas wie eine Legacy-Option! :idea:

Martin

Dalai 8. Jun 2016 15:15

AW: MessageDlg Button neben Text
 
Beachte, dass beim Setzen der Variable UseLatestCommonDialogs auf False noch andere Dinge geändert werden. Zum Beispiel sehen Öffnen-/Speichern-Dialoge so aus wie bis einschließlich XP (was ich gar nicht so schlecht finde, weil die neueren Dialoge unübersichtlich, langsam und teilweise überladen sind).

MfG Dalai

mh18058 8. Jun 2016 16:23

AW: MessageDlg Button neben Text
 
Liste der Anhänge anzeigen (Anzahl: 4)
Roundup:

wie Dalai erwähnt, ändern sich die anderen Dialoge ebenfalls.
Hier ein OpenDialog einmal mit UseLatestCommonDialogs := true;
und einmal mit UseLatestCommonDialogs := false;

Der "neue" Dialog erscheint auch nicht mehr mittig auf dem
Bildschirm und ehrlich gesagt, gefällt mir der Alte auch besser.
Insofern ist UseLatestCommonDialogs := false; in diesem Fall
auch die bessere Einstellung.

Das unterschiedliche Erscheinungsbild tritt übrigens nicht nur beim
Windows-Classic Theme, sondern auch bei dem moderneren Windows7-Basis
Theme auf. Nur wirkt es da nicht so störend. Das sind die beiden
anderen Bilder meines MessageDlg, einmal true und einmal false.

Also, auch da wieder was gelernt! 8-)

@himitsu: mit {$LONGSTRINGS OFF} setze ich den Compiler auf
die alten Stringtypen. Damit ging die Portierung schnell voran.
Ich dachte die geänderten Strings machen in den Dialogen Ärger,
dem ist aber nicht so!
Deinen Vorschlag mit den String-Typen werde ich mal ausprobieren.

bra 8. Jun 2016 17:17

AW: MessageDlg Button neben Text
 
Hast du mal getestet, wie das unter Windows 8+ aussieht? Ich würde eher nicht diese Windows 95-Dialoge verwenden, sondern schon das aktuelle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Seite 1 von 2  1 2      

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