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
Seite 1 von 2  1 2      
Willie1

Registriert seit: 28. Mai 2008
677 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

ShowMessage 2. Parameter

  Alt 10. Jan 2025, 11:32
Hallo Leute,

eine Kleinigkeit zum neuen Jahr. Ich wusste nicht, dass ShowMessage einen zweiten Parameter hat. Ich lese in der Hilfe, verstehe sie aber nicht! tfAllowDialogCancellation kann ich mir noch vorstellen. Aber das Fenster lässt sich immer mit <Esc> schließen. Was soll der Parameter?

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 Uwe Raabe
Uwe Raabe

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

AW: ShowMessage 2. Parameter

  Alt 10. Jan 2025, 13:59
Aber das Fenster lässt sich immer mit <Esc> schließen.
Nicht wenn der neue Task-Dialog verwendet wird. Hier mal der optische Unterschied:
Miniaturansicht angehängter Grafiken
10-01-2025_13-53-50.png  
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
677 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: ShowMessage 2. Parameter

  Alt 10. Jan 2025, 19:39
Nicht wenn der neue Task-Dialog verwendet wird. Hier mal der optische Unterschied:
Ok, stimmt. Dann ist bei ShowMessage der zweite Parameter unnötig. ShowMessage ist eben die schnellste Möglichkeit ein Hinweisfenster zu bauen. Wi.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: ShowMessage 2. Parameter

  Alt 10. Jan 2025, 22: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
677 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 17: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 17:26 Uhr)
  Mit Zitat antworten Zitat
fred42

Registriert seit: 1. Jan 2025
4 Beiträge
 
#6

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 20: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.521 Beiträge
 
Delphi 12 Athens
 
#7

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 23: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
164 Beiträge
 
Delphi 12 Athens
 
#8

AW: ShowMessage 2. Parameter

  Alt 11. Jan 2025, 23: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
677 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: ShowMessage 2. Parameter

  Alt 12. Jan 2025, 18: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.
Miniaturansicht angehängter Grafiken
screenshot-7-.jpg  
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.698 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: ShowMessage 2. Parameter

  Alt 12. Jan 2025, 19: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 19:44 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 19:58 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