AGB  ·  Datenschutz  ·  Impressum  







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

VCL-Styles ersetzen auch die TaskDialoge?

Ein Thema von himitsu · begonnen am 30. Mär 2023 · letzter Beitrag vom 30. Mär 2023
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

VCL-Styles ersetzen auch die TaskDialoge?

  Alt 30. Mär 2023, 17:06
Malt bei Verwendung der den neueren VCL-Styles das Delphi die MessageDialoge wieder selber?

Na toll, dann werden dort ja Fehler in altem LegacyCode (vor WinXP, bzw. ab XP mit deaktiviertem Theme) wieder neu eingebaut.


Hier ist das uns auch mal wieder auf die Füße gefallen.

Ein Ja/Nein-Dialog mit dritter Auswahlmäglichkeit ESC bzw. [X]

Durch einen Bugfix in einem Bugfix, welcher nun auch noch diesen Bug traf.
(wenn irgendwann endlich das neue Delphi fertig ist, dann ist dieser Bug zwar immernoch da, aber wir treffen ihn nicht mehr )

Delphi-Quellcode:
     ...

     {$REGION 'Bugfix (Standard-MessageDialog) : Problem Z-Order bei Verwendung des klassischen MessageDlg mit CreateMessageDialog'}
     { TODO -k.A. von wann und wem : wie soll dieser Bugfix funktionieren, wenn es das StayOnTop ignoriert? }
     { TODO -FS 2018-07-03 : im Prinzip kommen wir mit dem Selbsterstellen besser, denn dort sind dann auch die Dialog-Buttons richtig übersetzt }
     if isDefault then begin
       {$IF CompilerVersion < 23}
       // XE-Bugfix für DefaultButtons https://www.delphipraxis.net/196905-messagedlg-mit-falschem-default.html
       // MessageDlg nutzt so intern auch CreateMessageDialog anstatt der neuen TaskDialog-API, in welcher Delphi den Fehler eingebaut hat.
       SaveULCD := UseLatestCommonDialogs;
       try
         if (DefaultBtn in DlgButtons) and (Word(DlgButtons - [DefaultBtn]) > Word([DefaultBtn])) then
           UseLatestCommonDialogs := False; // nur, wenn Default nicht der "letzte" Button ist
          // ACHTUNG: ESC-Taste = mrNo (nicht mrCancel)
          // https://redmine.**********.de/issues/19576
       {$IFEND}
       Result := MessageDlg(Msg, DlgType, DlgButtons, 0{HelpKeyword}, DefaultBtn);
       {$IF CompilerVersion < 23}
       finally
         UseLatestCommonDialogs := SaveULCD;
       end;
       {$IFEND}
       if CurrFocusHandle <> 0 then
         Windows.SetFocus(CurrFocusHandle);
       TDM1.ScreenCursorSwitchToHoureGlass(HasWaitCursor);
       Exit;
     end;
     {$ENDREGION}

     Width := 0;
     Recalc := False;
     MSGForm := CreateMessageDialog(Msg, DlgType, DlgButtons, DefaultBtn);
     ...


Vielleich endlich mal wieder mit der neuen TaskDialog-API spielen.
Dort soll man nun ja auch die Ja/Nein/OK/...-Buttons übersetzen/umlabeln können. (wenn ich mich Recht erinner)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Mär 2023 um 17:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: VCL-Styles ersetzen auch die TaskDialoge?

  Alt 30. Mär 2023, 18:00
Dort soll man nun ja auch die Ja/Nein/OK/...-Buttons übersetzen/umlabeln können. (wenn ich mich Recht erinner)
Du meinst sowas wie dies hier aus Vcl.Dialogs?
Delphi-Quellcode:
function TaskMessageDlg(const Title, Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultButton: TMsgDlgBtn; CustomButtonCaptions: array of string): Integer; overload;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VCL-Styles ersetzen auch die TaskDialoge?

  Alt 30. Mär 2023, 18:58
Nja, dachte erstmal an Alles, was z.B. ShowMessage, MessageDlg und deren Freunde benutzt.



Selber nutzen wir nicht die Styles von Emba (gibt ja seit Jahrzehnten von Anderen und wozu das nun austauschen),
aber für Bugfixes schalten wir an gewissen Stellen z.B. vorübergehend mal kurz UseLatestCommonDialogs ab.

Und um z.B. die Captions der Buttons selbst zu übersetzen oder mit anderem Text zu versehen, greifen wir auf Delphi-Referenz durchsuchenCreateMessageDialog zu,
zusätzlich zum TTaskDialog mit Buttons.Add.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (31. Mär 2023 um 09:31 Uhr)
  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 12:59 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