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
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.224 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
 


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 18:47 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