Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Application.HelpJump überschreiben? (https://www.delphipraxis.net/39550-application-helpjump-ueberschreiben.html)

FriFra 4. Feb 2005 10:47


Application.HelpJump überschreiben?
 
Kann man irgendwie Application.HelpJump mit einer eigenen Funktion überschreiben?
Ich würde das ganze am liebsten über eine eigene zusätzliche unit lösen... Eine eigene von TApplikation abgeleitete Klasse wäre keine Lösung, da ich die eigene Funktionalität über ein einfaches einfügen/entfernen meiner unit aktivieren/deaktivieren will.

Robert_G 4. Feb 2005 11:47

Re: Application.HelpJump überschreiben?
 
Was soll ich sagen... Das kannst du knicken. :?
Application ist auf die ekligst mögliche Art implementiert worden, als globale Variable in der Unit Forms:
Delphi-Quellcode:
{ Global objects }

var
  Application: TApplication;
  Screen: TScreen;
  ...
Und da die Borländer nicht auf die Idee kamen, dass wenigstens ein paar Delphianer OO programmieren sind keinerlei Methoden von TAplication virtual oder dynamic. :?

Viel Spass... :mrgreen:

shmia 4. Feb 2005 11:58

Re: Application.HelpJump überschreiben?
 
Zitat:

Zitat von FriFra
Kann man irgendwie Application.HelpJump mit einer eigenen Funktion überschreiben?
Ich würde das ganze am liebsten über eine eigene zusätzliche unit lösen... Eine eigene von TApplikation abgeleitete Klasse wäre keine Lösung, da ich die eigene Funktionalität über ein einfaches einfügen/entfernen meiner unit aktivieren/deaktivieren will.

Nein, aber du kannst das Event TApplication.OnHelp benützen.
Es gibt da z.B. eine Komponente namens ThhComp, die sich dieses Event krallt und die Hilfe
auf das neuere Dateiformat *.CHM umleitet.

FriFra 4. Feb 2005 12:11

Re: Application.HelpJump überschreiben?
 
Ich hab jetzt mal folgendes probiert:
Delphi-Quellcode:
program test;

uses
  Forms{, unit2},
  frm_Main in 'frm_Main.pas' {Main},

{$R *.RES}

function MyHelp(Command: Word; Data: Integer;
  var CallHelp: Boolean): Boolean;
begin
//hier soll mein Code hin
end;

begin
  Application.Initialize;
  Application.OnHelp:=MyHelp;
  Application.ShowMainForm := False;
  Application.CreateForm(TMain, Main);
end.
Ich bekomme folgende Fehlermeldung:
Zitat:

Zitat von Ereignisprotokoll
[Fehler] Test.dpr(23): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'


MathiasSimmack 4. Feb 2005 12:18

Re: Application.HelpJump überschreiben?
 
Ich habe das immer im "OnCreate" der Form deklariert. Da verursacht es keine Probleme. Vermutlich, weil du das "OnHelp"-Event als Form-bezogene Prozedur (TForm1.XXXX) deklarierst.

FriFra 5. Feb 2005 08:50

Re: Application.HelpJump überschreiben?
 
Im onCreate der Form hilft mir das nicht weiter... ich will das ganze am Ende über eine unit implementieren, da es nur ein Workaround für einen Bug in Delphi2005 werden soll. Ich will dazu so wenig wie möglich an meinem Code herumbasteln. :gruebel:

SirThornberry 5. Feb 2005 09:31

Re: Application.HelpJump überschreiben?
 
die Fehlermeldung sagt doch schon alles. du hast "MyHelp" als reguläre Procedure aber erwartet wird eine Methode. MyHelp muss also eine Methode einer Klasse sein.

malo 6. Feb 2005 13:47

Re: Application.HelpJump überschreiben?
 
Zitat:

Und da die Borländer nicht auf die Idee kamen, dass wenigstens ein paar Delphianer OO programmieren sind keinerlei Methoden von TAplication virtual oder dynamic. :?
Kann man dann nicht einfach die Unit "Forms" Öffnen und die Methoden alle dynamic machen? :gruebel:


nur mal so ne idee... :duck:

FriFra 6. Feb 2005 14:23

Re: Application.HelpJump überschreiben?
 
Ich hab das Problem jetzt gelöst ;)
> http://www.delphipraxis.net/internal...ct.php?t=45822 <

Ich hab einfach eine eigene Klasse von TControl abgeleitet und eine kompatible OnHelp-Funktion geschrieben. Es funktioniert alles bestens... nur die fertigen Programme werden durch meinen Workaround ca. 200k grösser :?, da ich ein externes Programm in eine Resource packen musste...


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz