Delphi-PRAXiS

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.

mh18058 8. Jun 2016 20:02

AW: MessageDlg Button neben Text
 
Hallo bra,

Zitat:

Zitat von bra (Beitrag 1339786)
nicht diese Windows 95-Dialoge verwenden, sondern schon das aktuelle.

Du beliebst zu scherzen! :-D
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:
  if (MessageDlg('Änderungen nicht gespeichert!'+sLineBreak+
                 'Trotzdem neu?',
                 mtWarning,[mbyes, mbno],0)=mrYes) then
  begin
    ...
  end;
Martin

Dalai 8. Jun 2016 20:22

AW: MessageDlg Button neben Text
 
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
    Delphi-Quellcode:
    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
Delphi-Quellcode:
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

Luckie 8. Jun 2016 23:19

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.

bra 9. Jun 2016 08:54

AW: MessageDlg Button neben Text
 
Zitat:

Zitat von mh18058 (Beitrag 1339791)
Win 7 halte ich durchaus noch für aktuell - und ich mag halt den Windows-Classic Theme. :P

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 ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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