![]() |
wie geh ich mit units um ?
Hallo dp'ler
Units soweit ich weiss nutzt man zur u.a. auch zur auslagerung fuer z.B. seine Utility sammlung oder auch damit der source uebersichtlicher bleibt ?! Korregiert mich bitte wenn ich damit falsch liege, ich versuche mich in sachen programmieren noch nicht allzulange, um genauer zu sein erst seit etwa ein halbes jahr. um auf den Punkte zukommen habe ich ein komplett neues project begonnen, ich habe nun eine HauptForm mit einer dementsprechenden HauptUnit, auf die HauptForm um bei meinem beispiel zu bleiben habe ich einen Panel und einen Button gepackt. Wenn ich diesen Button klicke möchte ich dass dynamisch aus einer weiteren Unit (ich nenne sie mal FormloseUnterUnit) ein tWebBrowser auf den Panel kreiert wird. Bis dahin alles kein problem. Wie jedoch gehe ich dann mit ereignissen um ? Ich moechte die ereignisse nicht in meiner HauptUnit schreiben sondern auch in meine (wie ich sie vorhin genannt und auch weiterhin nun mal nenne) FormloseUnterUnit.
Delphi-Quellcode:
unit HauptUnit;
interface uses ...; type THauptForm = class(TForm) vPanel: TPanel; Button: TButton; ... procedure ButtonClick(Sender: TObject); ... private public meinDollerBrowser : TWebBrowser; end; var HauptForm: THauptForm; implementation uses FormloseUnterUnit; {$R *.DFM} procedure THauptForm.ButtonClick(Sender: TObject); begin kreierMalLos; end; end.
Delphi-Quellcode:
Hab ich etwas vergessen, wenn ja was oder habe ich fehler gemacht ?
unit FormloseUnterUnit;
interface uses SHDocVw; procedure kreierMalLos; procedure jauNuIsDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); implementation uses HauptUnit; procedure jauNuIsDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin HauptForm.Caption := 'Test erfollgreich'; end; procedure kreierMalLos; begin HauptForm.meinDollerBrowser :=TWebBrowser.Create(HauptForm.vPanel); HauptForm.meinDollerBrowser.Height := 150; HauptForm.meinDollerBrowser.Left := 0; HauptForm.meinDollerBrowser.Silent := True; HauptForm.meinDollerBrowser.Top := 0; HauptForm.meinDollerBrowser.Width := 150; HauptForm.vPanel.InsertControl(HauptForm.meinDollerBrowser); HauptForm.meinDollerBrowser.Navigate ('http://www.google.de'); HauptForm.meinDollerBrowser.OnDocumentComplete := jauNuIsDocumentComplete; // hier liegt mein Problem { mit der Fehlermeldung kann ich leider auch nix anfangen } end; end. |
Re: wie geh ich mit units um ?
Wo liegt das Problem genau?
im OnClick-Ereignis rufst du die Prozedur/Funktion aus deiner FormlosenUnterunit auf. Das sieht doch ok aus! Damit du die zweite unit verwenden kannst musst du sie in der Hauptunit natürlich einbinden. uses FormloseUnterUnit; |
Re: Wo liegt das Problem genau?
Dass habe ich selbstverstaendlich auch gemacht, dass problem liegt darin dass ich in meiner FormlosenUnit kein ereigniss schreiben kann, oehmn,... schreiben wohl schon, jedoch bekomme ich beim kompilieren in der letzten zeile
Code:
die fehlermeldung
HauptForm.meinDollerBrowser.OnDocumentComplete := jauNuIsDocumentComplete; // hier liegt mein Problem
'Inkompatible Typen: Methodenzeiger und regulaere Procedure' F1 gibt vollgendes aus Zitat:
|
Re: wie geh ich mit units um ?
pack das ganze einfach in eine Klasse und schon sollte es gehen (also das formloseunit)
|
Re: wie geh ich mit units um ?
Oke dann weiss ich nun genauer wo mein Problem liegt!
Wie mach ich dass ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 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-2025 by Thomas Breitkreuz