AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MessageDlg Button neben Text

Ein Thema von mh18058 · begonnen am 8. Jun 2016 · letzter Beitrag vom 9. Jun 2016
Antwort Antwort
Benutzerbild von Dalai
Dalai

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

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 14: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.372 Beiträge
 
Delphi 12 Athens
 
#2

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 14: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)
Ein Therapeut entspricht 1024 Gigapeut.

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

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

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 15: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
Angehängte Grafiken
Dateityp: jpg MessageDlg_XE_with_UseLatestCommonDialogs_false.JPG (13,1 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

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

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 15: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 16:26 Uhr) Grund: Typo
  Mit Zitat antworten Zitat
mh18058

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

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 16: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.
  Mit Zitat antworten Zitat
bra

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

AW: MessageDlg Button neben Text

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

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

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 20:02
Hallo bra,

nicht diese Windows 95-Dialoge verwenden, sondern schon das aktuelle.
Du beliebst zu scherzen!
Win 7 halte ich durchaus noch für aktuell - und ich mag halt den Windows-Classic Theme.

Sorry, nein, ich habe auf die Schnelle kein Windows 8 zur Verfügung.
Aber wenn das mal einer machen mag - hier ist zum direkten optischen Vergleich
mein Source des besagten Dialogs:
Delphi-Quellcode:
  if (MessageDlg('Änderungen nicht gespeichert!'+sLineBreak+
                 'Trotzdem neu?',
                 mtWarning,[mbyes, mbno],0)=mrYes) then
  begin
    ...
  end;
Martin
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

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

AW: MessageDlg Button neben Text

  Alt 8. Jun 2016, 20:22
Um nochmal etwas aufzuräumen: die von mh18058 in Beitrag #9 gezeigten Dialoge zeigen (von links nach rechts):
  • die neuen Öffnen-/Speichern-Dialoge (IIRC auch Common Dialogs genannt)
  • die älteren Öffnen-/Speichern-Dialoge wie in Win2k/XP, die man (im Delphi) auch unter Vista+ mit UseLatestCommonDialogs:= False; bekommen kann.
  • den seit Vista existierenden TaskDialog
  • und schließlich die normale MessageBox.

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 UseLatestCommonDialogs:= False , 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.

MfG Dalai
  Mit Zitat antworten Zitat
bra

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

AW: MessageDlg Button neben Text

  Alt 9. Jun 2016, 08:54
Win 7 halte ich durchaus noch für aktuell - und ich mag halt den Windows-Classic Theme.
Ich kenne auch so jemand, der noch mit Classic Theme unterwegs ist. Nur verwendet das außer ein paar IT'lern heutzutage kaum noch einer. Und mit dem Programm arbeiten müssen ja i.d.R. die Anwender und nicht der Programmierer
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 22:45 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-2025 by Thomas Breitkreuz