Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Kontextsensitive Hilfe funktioniert nicht wenn Form in Main-Form eingebunden wird (https://www.delphipraxis.net/210373-kontextsensitive-hilfe-funktioniert-nicht-wenn-form-main-form-eingebunden-wird.html)

norwegen60 14. Apr 2022 08:29

Kontextsensitive Hilfe funktioniert nicht wenn Form in Main-Form eingebunden wird
 
Hallo zusammen

ich habe eine Hilfe mit ContextID erstellt.

Im Mainform steht im Create
Delphi-Quellcode:
Application.Helpfile := ExtractFilePath(ParamStr(0)) + 'HELP.CHM';

Über das Menü ist F1
Delphi-Quellcode:
procedure TfrmMain.miHelp1Click(Sender: TObject);
begin
  Application.HelpShowTableOfContents;
end;
hinterlegt

Öffne ich jetzt ein eigenständiges Form das mit
Delphi-Quellcode:
HelpContext = 2000
definiert ist, wird die korrekte Hilfe angezeigt

Das MainForm selber besteht vor allem aus einem TPageControl. Wird eines der Pages geöffnet, lade ich auf den TabSheet ein eigenständiges Form
Delphi-Quellcode:
 
procedure TfrmMain.pcTestingChange(Sender: TObject);
begin
  procedure MakeFormClient(aForm: TForm;aParent: TWinControl; bVisible: Boolean = True);
  begin
    aForm.BorderStyle := bsNone;
    aForm.Parent := aParent;
    aForm.Align := alClient;
    if bVisible then
      aForm.Show;
  end;

begin
  if pcTesting.ActivePage = tsSelfTest then
  begin
    if frmSelfTest = nil then
    begin
      frmSelfTest := TfrmSelfTest.Create(Application);
      MakeFormClient(frmSelfTest, tsSelfTest);
    end;
  end
Jedem dieser Forms ist eine eigene HelpContext-ID hinterlegt.
Trotzdem wird immer die Haupthilfe geöffnet

Ich habe auch schon versucht die HelpContext-ID den einzelnen TabSheets zu hinterlegen, aber auch das funktioniert nicht.

Die HelpContext-ID sind immer im Objekt-Inspektor definiert.

Einzige Lösung die ich bisher gefunden habe ist:
Delphi-Quellcode:
procedure TfrmMain.pcTestingChange(Sender: TObject);
begin
  iHelpContext:=   pcData.ActivePage.HelpContext;
end;
und hinter F1
Delphi-Quellcode:
procedure TfrmMain.miHelp1Click(Sender: TObject);
begin
  Application.HelpContext(iHelpContext);
end;
Das bedeutet aber, dass ich immer selber drauf achten muss die HelpContext-ID korrekt zuzuweisen.

Hat jemand eine Idee woran es liegen kann, dass die HelpContext-ID bei zusammengelegten Forms nicht beachtet wird?

Was auch noch aufgefallen ist:
- Auch wenn ich den Workaround verwende, funktioniert das eigenständige Form korrekt. Obwohl ich dort iHelpContext nicht ändere
- Das eigenständige Form funktioniert auch dann, wenn ich miHelp1Click ganz entferne. Im Hauptformular wird dann aber gar keine Hilfe geöffnet
- Das eigenständige Form ist als fsNormal definiert

Grüße
Gerd

Uwe Raabe 14. Apr 2022 09:50

AW: Kontextsensitive Hilfe funktioniert nicht wenn Form in Main-Form eingebunden wird
 
Hat denn auch ein Control in dem eingebetteten Form den Focus?

norwegen60 15. Apr 2022 08:31

AW: Kontextsensitive Hilfe funktioniert nicht wenn Form in Main-Form eingebunden wird
 
:oops:, das wars

Danke


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