Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Windows-Taskdialog & Windows XP (https://www.delphipraxis.net/195759-windows-taskdialog-windows-xp.html)

freimatz 23. Mär 2018 15:47

AW: Windows-Taskdialog & Windows XP
 
Hallo zusammen,
ich dachte ich warte mal bis Kathinka ausgeredet hat ;-)
Danke an alle Meldungen. Inzwischen habe ich auch mal mich bei (einem Teil) meinen Anwender rumgehört. Nahezu keiner verwendet mehr XP.

Trotzdem würde ich doch mal gerne mORMot - SynTaskDialog ausprobieren. Zum einen weil es nichts kostet und da schon Beispiele drin sind wie man einfach die alten VCL Dialoge ersetzen kann.

Noch einige Kommentare:
* Soweit ich weiß macht das ShowMessage intern das Fenster selber und verwendet keine Windows-Dialoge. Ergo simuliert die VCL auch.
* OT: Ich bin froh dass sich Office nicht an die Windowvorgaben hält. Ich habe es noch nicht geschafft mit meinem Win 7 hier es so zu machen, dass Fenstertitel nicht transparent sind. Wenigstens Office hat das.

himitsu 23. Mär 2018 16:14

AW: Windows-Taskdialog & Windows XP
 
Zitat:

Zitat von freimatz (Beitrag 1397124)
* Soweit ich weiß macht das ShowMessage intern das Fenster selber und verwendet keine Windows-Dialoge. Ergo simuliert die VCL auch.

Nein, bzw. nicht immer.
Entweder es wird selber aus einer TForm der Dialog zusammengebaut oder es wird die WinAPI genutzt.

ShowMessage landet irgendwann hier
Delphi-Quellcode:
function MessageDlgPosHelp(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer; const HelpFileName: string): Integer;
begin
  if TOSVersion.Check(6) and UseLatestCommonDialogs and IsNewCommonCtrl and StyleServices.IsSystemStyle then
    Result := DoTaskMessageDlgPosHelp('', Msg, DlgType, Buttons, HelpCtx, X, Y, HelpFileName)
  else
    Result := DoMessageDlgPosHelp(CreateMessageDialog(Msg, DlgType, Buttons), HelpCtx, X, Y, HelpFileName);
end;
Oben geht es zu den Task-Dialogs der WinAPI (ab Vista mit aktiven XP-Styles)
und CreateMessageDialog baut eine eigene TMessageForm der VCL auf.

Du kannst auch selber WinApi.Windows.MSDN-Library durchsuchenMessageBox oder Delphi-Referenz durchsuchenApplication.MessageBox aufrufen.
Bei Letzterem wird zusätzlich noch die Fensterposition bestimmt, die Aktivität der anderen VCL-Forms gestuert und UseRightToLeftReading als MB_RTLREADING an die API übergeben.

Aber simuliert wird nichts.
MSDN-Library durchsuchenMessageBox erstellt ein Windows-Fenster und legt ein Image, ein Label und paar Buttons auf dieses Fenster.
Genau das Gleiche macht auch Delphi-Referenz durchsuchenCreateMessageDialog, nur dass da noch die VCL-Wrapper um jede einzelne Windows-Komponente drumrum sind, aber nativ sind diese Komponenten dennoch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.
Seite 3 von 3     123   

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