AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speichern)
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speichern)

Ein Thema von Egac · begonnen am 4. Okt 2009 · letzter Beitrag vom 11. Okt 2009
Antwort Antwort
Benutzerbild von Egac
Egac

Registriert seit: 22. Sep 2009
4 Beiträge
 
Delphi 7 Personal
 
#1

Hilfe-Button in Windows-Dialogen benutzen (Öffnen/Speichern)

  Alt 4. Okt 2009, 14:02
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"
Angehängte Dateien
Dateityp: zip opendialogtester_198.zip (223,2 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

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

  Alt 5. Okt 2009, 02:22
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
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 5. Okt 2009, 09:00
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.
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Egac
Egac

Registriert seit: 22. Sep 2009
4 Beiträge
 
Delphi 7 Personal
 
#4

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

  Alt 10. Okt 2009, 21:41
okay danke leute, werde es gleich mal ausprobiren
  Mit Zitat antworten Zitat
Benutzerbild von Egac
Egac

Registriert seit: 22. Sep 2009
4 Beiträge
 
Delphi 7 Personal
 
#5

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

  Alt 11. Okt 2009, 12:48
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.
Ü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.
  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 19:50 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