Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

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

  Alt 14. Apr 2022, 08:29
Hallo zusammen

ich habe eine Hilfe mit ContextID erstellt.

Im Mainform steht im Create 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 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

Geändert von norwegen60 (14. Apr 2022 um 08:38 Uhr)
  Mit Zitat antworten Zitat