Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speichern) (https://www.delphipraxis.net/141187-hilfe-button-windows-dialogen-benutzen-oeffnen-speichern.html)

Egac 4. Okt 2009 13:02


Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speichern)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,

hab mal eine Frage zu den Hilfe-Button-Aufruf von Windows-Dialogen. Ich möchte gerne immer den neuesten Stil von Windows-Dialogen haben, weshalb ich gerade daran rumbastle, es über die Funktionen GetOpenFileName und GetSaveFileName zu machen. Hab schon die Funktion mit den Flags rausgefunden etc. Wenn nun der Hilfe-Button mithilfe von OFN_SHOWHELP angezeigt wird und gedrückt werden kann, dann soll auch die Hilfe aufgerufen werden. Schön wäre es wenn ich dabei auf die Funktionen von Application. zurückgreifen könnte. Im Moment kann man nur die F1-Taste für einen eventuellen Hilfeaufruf benutzen.

Danke schon mal im Voraus für die Hilfe.

Grüße
Egac

Im Anhang findet ihr mein "Test-Programm"

sx2008 5. Okt 2009 01:22

Re: Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speich
 
Beim Drücken des Hilfe-Buttons wird eine WM_NOTIFY Message an dein Fenster gesendet.
Delphi-Quellcode:
TForm1 = .....
  procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY;
end;
Im Parameter lParam der Message bekommst du die Information, was passiert ist:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

himitsu 5. Okt 2009 08:00

Re: Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speich
 
Zitat:

Zitat von sx2008
Beim Drücken des Hilfe-Buttons wird eine WM_NOTIFY Message an dein Fenster gesendet.

Also eigentlich sendet Windows diese Nachricht an den Explorer-Hook des Dialogs, aber es kann natürlich sein, daß die VCL dieses dann an das Elternfenster weiterleitet, aber das glaub ich irgendwie nicht.

Im Notfall könnte man also auch den .DefaultHandler des Dialogs überschreiben und würde so vermutlich auch noch an diese Nachricht rankommen und dann an Application weitergeleitet werden.


hmmmmm, also die Help-Nachricht sollte im MessageHook ankommen, aber sie verschrindet irgendwo unterwegs einfach. :shock:
Delphi-Quellcode:
procedure TRedirectorWindow.WndProc(var Message: TMessage);
begin
  inherited WndProc(Message);
  with Message do
  begin
    if (Result = 0) and (Msg <> CM_RELEASE) and Assigned(FCommonDialog) then
      Result := Integer(FCommonDialog.MessageHook(Message));
    ...
  end;
end;
es kann natürlich sein, daß sie in einem übergeordneten (oder untergeordnet?) WndProc irrtümlicher Weise falsch behandelt wird :gruebel:

Egac 10. Okt 2009 20:41

Re: Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speich
 
okay danke leute, werde es gleich mal ausprobiren :-D

Egac 11. Okt 2009 11:48

Re: Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speich
 
Also ich habs probiert. Erste Lösung hatte leider nicht den erwünschten Erfolg. Bei zweiter Antwort bin ich mir nicht so ganz sicher, wo ich was, wie einzusetzen hatte. Liegt vllt auch daran, dass ich sowas noch nie gemacht habe, was keine Ausrede sein soll. Ich werde, wenn ich mal Zeit haben sollte, mir gleich ein paar Tutorials zu diesem Thema vornehmen.
Vllt versteh ich das und kann von alle auf die Lösung kommen. Mal sehen. :coder2:
Über diese Seite bin ich ebenfalls gestolpert: http://msdn.microsoft.com/en-us/libr...60(VS.85).aspx

Danke auf jeden Fall für eure Antworten!!!

@himitsu: Ich bin davon ausgegangen, dass TRedirectorWindow = TForm1 (in meinem Testprogramm) entspricht. Dann wusst ich allerding nicht, was ich für FCommonDialog einzusetzen hatte, da ich ja für den Dialog ja garkeine direkte Form habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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