was ist da falsch?Verwenden von FindVCLWindow zum Aufrufen von WinHelp32 (WinXP Pro SP3 32bit) in Delphi
procedure TForm1.VCLHelpClick(Sender: TObject);
var Ctrl : TWinControl;
begin
Ctrl := FindVCLWindow(Mouse.CursorPos);
if Ctrl <> nil then
if Form2.Cursor = crHelp then begin
if Ctrl = CreatorEdit then Application.HelpCommand(HELP_CONTEXT,001);
if Ctrl = EditorEdit then Application.HelpCommand(HELP_CONTEXT,002);
if Ctrl = UpdaterEdit then Application.HelpCommand(HELP_CONTEXT,003);
if Ctrl = IdeaEdit then Application.HelpCommand(HELP_CONTEXT,004);
if Ctrl = PorterEdit then Application.HelpCommand(HELP_CONTEXT,005);
end;
end;
Die Idee ist einfach - i Form Grenze Symbole für die Hilfe-Taste haben, und wenn ich es klicken, Cursor Änderungen in crHelp. Wenn ich für eine der IFs unter Kontrolle klicke, ruft sie das Hilfesystem auf und öffnet die zugehörige Hilfedatei mit Kontext vom Befehl. Aber es funktioniert nicht ... Liegt das daran, dass ich keine Unterstützung für KLink/ELinks in der Hilfedatei selbst hinzugefügt habe?
Für Hilfe beim Erstellen und Entwickeln verwende ich ShalomHelpMaker Software.
Hmmm, ich habe es vor kurzem gemacht und es hat Control nicht erkannt. Und ich habe dieses (kurze) Formular nicht benutzt, weil das Formular2 dynamisch ist und ich die erforderliche Kontext-ID zur Runtime hinzugefügt habe. Wenn ich es finden muss, muss ich meinen gesamten Code durchsuchen (scrool). In diesem Fall kann ich genau lesen welche ID ich öffne ohne nach HelpContext ID Wert zu suchen. –
Probieren Sie einfach Ihren Code aus. Funktioniert nicht. –
@HX_Unbanned, sieht aus wie FindVCLWindow ist das Problem. Ich gebe eine Alternative in meine Antwort. –