AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MessageDlg Button neben Text

Ein Thema von mh18058 · begonnen am 8. Jun 2016 · letzter Beitrag vom 9. Jun 2016
Antwort Antwort
Seite 1 von 2  1 2   
mh18058

Registriert seit: 21. Nov 2008
15 Beiträge
 
#1

MessageDlg Button neben Text

  Alt 8. Jun 2016, 14:36
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?
Miniaturansicht angehängter Grafiken
messagedlg_falsch.jpg   messagedlg_richtig.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 14:40
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#3

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 15:08
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
  Mit Zitat antworten Zitat
mh18058

Registriert seit: 21. Nov 2008
15 Beiträge
 
#4

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 15:26
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.
Und wenn ich in XE7 in den Projekt-Optionen das Erscheinungsbild
auf "silver" ändere, dann erscheint mein MessageDlg wie auf dem
2. Bild.

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

Martin
Miniaturansicht angehängter Grafiken
messagedlg_von_paint.jpg   messagedlg_xe7_silver.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#5

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 15:32
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.139 Beiträge
 
Delphi 12 Athens
 
#6

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 15:52
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Jun 2016 um 15:55 Uhr)
  Mit Zitat antworten Zitat
mh18058

Registriert seit: 21. Nov 2008
15 Beiträge
 
#7

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 16:11
Hallo Dalai,

meine Frage ist gelöst!
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.
Das ist in Dialogs wohl sowas wie eine Legacy-Option!

Martin
Miniaturansicht angehängter Grafiken
messagedlg_xe_with_uselatestcommondialogs_false.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#8

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 16:15
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

Geändert von Dalai ( 8. Jun 2016 um 17:26 Uhr) Grund: Typo
  Mit Zitat antworten Zitat
mh18058

Registriert seit: 21. Nov 2008
15 Beiträge
 
#9

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 17:23
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!

@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.
Miniaturansicht angehängter Grafiken
opendialog_xe_with_uselatestcommondialogs_true.jpg   opendialog_xe_with_uselatestcommondialogs_false.jpg   messagedlg_xe_with_win7_basis_and_uselatestcommondialogs_true.jpg   messagedlg_xe_with_win7_basis_and_uselatestcommondialogs_false.jpg  
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 18:17
Hast du mal getestet, wie das unter Windows 8+ aussieht? Ich würde eher nicht diese Windows 95-Dialoge verwenden, sondern schon das aktuelle.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 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