AGB  ·  Datenschutz  ·  Impressum  







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

ShowMessage 2. Parameter

Ein Thema von Willie1 · begonnen am 10. Jan 2025 · letzter Beitrag vom 14. Jan 2025
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.654 Beiträge
 
Delphi 12 Athens
 
#1

AW: ShowMessage 2. Parameter

  Alt 10. Jan 2025, 21:14
Wieso unnötig? ShowMessage mit zwei Parametern ruft ja den neuen TaskDialog auf, wenn nicht irgendetwas dagegen spricht. Am Ende landet man hier und da wird die Prüfung gemacht:

Delphi-Quellcode:
function MessageDlgPosHelp(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: string; TaskDlgFlags: TTaskDialogFlags): Integer;
begin
  if TOSVersion.Check(6) and UseLatestCommonDialogs and
     IsNewCommonCtrl and not ((shDialogs in TStyleManager.SystemHooks) and not StyleServices(Screen.ActiveCustomForm).IsSystemStyle) then
    Result := DoTaskMessageDlgPosHelp('', Msg, DlgType, Buttons,
      HelpCtx, X, Y, HelpFileName, TaskDlgFlags)
  else
    Result := DoMessageDlgPosHelp(CreateMessageDialog(Msg, DlgType, Buttons),
      HelpCtx, X, Y, HelpFileName);
end;
Die beiden Dialoge im ScreenShot entstehen aus demselben Code, jeweils durch ändern von UseLatestCommonDialogs.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
698 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 16:24
Hallo Uwe,

ich habe Themes und CommCtrl eingebunden. Aber mein Delphi 11.3 kennt IsNewCommonCtrl nicht. Die Hilfe auch nicht.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.

Geändert von Willie1 (11. Jan 2025 um 16:26 Uhr)
  Mit Zitat antworten Zitat
fred42

Registriert seit: 1. Jan 2025
9 Beiträge
 
#3

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 19:52
Hallo Uwe,

ich habe Themes und CommCtrl eingebunden. Aber mein Delphi 11.3 kennt IsNewCommonCtrl nicht. Die Hilfe auch nicht.
siehe hier

vcl.Dialogs;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.654 Beiträge
 
Delphi 12 Athens
 
#4

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 22:27
Die Abfrage mal auseinandergenommen:
Delphi-Quellcode:
  if TOSVersion.Check(6) and
     UseLatestCommonDialogs and
     IsNewCommonCtrl and
     not ((shDialogs in TStyleManager.SystemHooks) and not StyleServices(Screen.ActiveCustomForm).IsSystemStyle) then
TOSVersion.Check(6) bedeutet Windows Vista oder höher

UseLatestCommonDialogs ist zwar per default = True, könnte aber irgendwo in deinem Code geändert worden sein

Für IsNewCommonCtrl muss in den Projekt-Optionen unter Manifest Laufzeit-Themes aktiviert sein.

der not Block bedeutet: Es muss shDialogs aus TStyleManager.SystemHooks entfernt werden oder es muss der Windows Style aktiv sein. Solltest du also mit VCL-Styles arbeiten, muss das shDialogs da raus, denn dann werden die Dialoge von Windows verwendet. Sollen die Dialog auch im VCL-Style dargestellt werden, dann gehen halt die neuen Task-Dialoge nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
171 Beiträge
 
Delphi 12 Athens
 
#5

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 22:35
Ich benutze die "neuen" Dialoge mit einer kleinen Hilfsunit und die funktionieren eigentlich auch mit Styles.
Die Unit habe ich mal angehängt. Und in Kombination mit dem Vorschlag von Uwe Raabe kannst du dir schon was anständiges basteln
Angehängte Dateien
Dateityp: zip tb.Dialogs.zip (32,0 KB, 15x aufgerufen)
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
698 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: ShowMessage 2. Parameter

  Alt 12. Jan 2025, 17:43
Die Abfrage mal auseinandergenommen:
Delphi-Quellcode:
  if TOSVersion.Check(6) and
     UseLatestCommonDialogs and
     IsNewCommonCtrl and
     not ((shDialogs in TStyleManager.SystemHooks) and not StyleServices(Screen.ActiveCustomForm).IsSystemStyle) then
TOSVersion.Check(6) bedeutet Windows Vista oder höher

UseLatestCommonDialogs ist zwar per default = True, könnte aber irgendwo in deinem Code geändert worden sein
ist Ok
Zitat:

Für IsNewCommonCtrl muss in den Projekt-Optionen unter Manifest Laufzeit-Themes aktiviert sein.
Ist aktiviert!
Zitat:

der not Block bedeutet: Es muss shDialogs aus TStyleManager.SystemHooks entfernt werden oder es muss der Windows Style aktiv sein. Solltest du also mit VCL-Styles arbeiten, muss das shDialogs da raus, denn dann werden die Dialoge von Windows verwendet. Sollen die Dialog auch im VCL-Style dargestellt werden, dann gehen halt die neuen Task-Dialoge nicht.
Ich verstehe deine Erklärungen- Vcl.Dialogs ist eingebunden. Außerhalb des Screenshots ist außer then alles in Ordnung.
Angehängte Grafiken
Dateityp: jpg Screenshot (7).jpg (92,9 KB, 21x aufgerufen)
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#7

AW: ShowMessage 2. Parameter

  Alt 12. Jan 2025, 18:30
Du brauchst diese Funktion nicht kopieren, denn die wird intern bereits verwendet, wenn du ShowMessage aufrufst. Du könntest darin aber einen Haltepunkt setzen und prüfen, was dort passiert, wenn du ShowMessage verwendest. Das sieht dann z.B. so aus:

Screenshot 2025-01-12 192600.png

Wie du siehst, komme ich in den ersten Zweig rein.

Aber was passiert bei dir denn, wenn du diese Zeilen ausprobierst?
Delphi-Quellcode:
  ShowMessage('Test', [tfAllowDialogCancellation]);
  ShowMessage('Test', []);
Macht das einen Unterschied?
Sebastian Jänicke
AppCentral

Geändert von jaenicke (12. Jan 2025 um 18:44 Uhr)
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
698 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

AW: ShowMessage 2. Parameter

  Alt 13. Jan 2025, 17:28
Hallo,

jetzt weiß ich woran es liegt. <1>lässt es such mit esc beenden <2> nur mit Ok. Aber nur, wenn man kein Farbschema vom Emacadero ausgewählt hat. Dann ist das Hinweisfenster klein und lässt sich immer mit esc beenden. Ich habe zum ersten Mal ein Farbschema benutzt. Beim Farbschema wird wohl der VistaTaskDialog nicht benutzt!? Danke für eure Geduld.

Gruß Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#9

AW: ShowMessage 2. Parameter

  Alt 13. Jan 2025, 19:02
Aber nur, wenn man kein Farbschema vom Emacadero ausgewählt hat. Dann ist das Hinweisfenster klein und lässt sich immer mit esc beenden. Ich habe zum ersten Mal ein Farbschema benutzt. Beim Farbschema wird wohl der VistaTaskDialog nicht benutzt!?
Genau das hat Uwe ja anhand des Quelltextes erklärt:
Solltest du also mit VCL-Styles arbeiten, muss das shDialogs da raus, denn dann werden die Dialoge von Windows verwendet. Sollen die Dialog auch im VCL-Style dargestellt werden, dann gehen halt die neuen Task-Dialoge nicht.
Du kannst das also einstellen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
627 Beiträge
 
Delphi XE6 Enterprise
 
#10

AW: ShowMessage 2. Parameter

  Alt 14. Jan 2025, 08:24
Sollen die Dialog auch im VCL-Style dargestellt werden, dann gehen halt die neuen Task-Dialoge nicht.
Dafür gibts doch die VCL Styles Utils: https://github.com/RRUZ/vcl-styles-utils. Damit kann man auch TaskDialoge "stylen".
  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:03 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