![]() |
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: |
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.
|
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 |
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 |
AW: MessageDlg Button neben Text
![]() Zitat:
|
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) |
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: ![]() Und tatsächlich: Wenn ich vorher
Code:
aufrufe, dann erscheint mein MessageDlg auch mit XE und dem
UseLatestCommonDialogs := false;
Windows-Classic Theme wie ich es erwarte. :thumb: Das ist in Dialogs wohl sowas wie eine Legacy-Option! :idea: Martin |
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 |
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. |
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.
|
AW: MessageDlg Button neben Text
Hallo bra,
Zitat:
Win 7 halte ich durchaus noch für aktuell - und ich mag halt den Windows-Classic Theme. :P Sorry, nein, ich habe auf die Schnelle kein Windows 8 zur Verfügung.:roll: Aber wenn das mal einer machen mag :?: - hier ist zum direkten optischen Vergleich mein Source des besagten Dialogs:
Delphi-Quellcode:
Martin
if (MessageDlg('Änderungen nicht gespeichert!'+sLineBreak+
'Trotzdem neu?', mtWarning,[mbyes, mbno],0)=mrYes) then begin ... end; |
AW: MessageDlg Button neben Text
Um nochmal etwas aufzuräumen: die von mh18058 in Beitrag #9 gezeigten Dialoge zeigen (von links nach rechts):
Wo da jetzt Win95-Design sein soll, erschließt sich mir nicht, vielleicht mit der Ausnahme, dass die normale MessageBox wohl tatsächlich seit Win95 ihre Darstellung nicht verändert hat. Dass in den Screenshots zum Teil das Classic Theme verwendet wird, sollte ja wohl keine Rolle spielen, denn das soll sich jeder wählen, wie er/sie das für richtig hält. Es geht nur um die Art und Weise, wie die Dialoge von der Bedienung her sind, welche Elemente sie darstellen; das Theme ist völlig egal. Und um die Frage nach dem Aussehen unter Win8+ zu beantworten: es gibt da keinen Unterschied zu Win7 mit Aero (Glass), denn das Theme ist wie gerade gesagt völlig egal. Wenn
Delphi-Quellcode:
, dann werden die eben nicht verwendet und MessageDlg sowie die Öffnen-/Speichern-Dialoge fallen zurück auf ihr früheres Aussehen, unter Beibehaltung des Theme des OS. Probiert's mal selbst aus: Nehmt euch ein altes Programm, das noch nichts von den neuen Möglichkeiten weiß (z.B. einen alten Editor wie ConTEXT) und schaut euch die Dialoge dort an.
UseLatestCommonDialogs:= False
MfG Dalai |
AW: MessageDlg Button neben Text
Ich würde da kein großes Theater drum machen und nicht groß Zeit und Arbeit drin investieren. Und es so hin nehmen. wenn jemand Skins verwendet, sieht es wieder anders aus.
|
AW: MessageDlg Button neben Text
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz