![]() |
constructor - AOwner immer TApplication?
Hi Leute,
bin grad ein wenig am verzweifeln. Bei meinem Problem handelt es sich um folgendes: (Achja, nich über namengebung meckern, dbin nur dabei das Projekt hier weiterzuführen, und großartige Namensänderungen will ich da momentan vermeiden^^) Ich habe eine abgeleitete Klasse von TCustomChart(TKoordSys3D), welche eine Form created und sich selbst als Owner angibt. Das wird ausgelöst bei klicken auf TCustomChart. Das ganze dient dazu, dass kleine Koordinaten System nochmal groß anzusehn.
Delphi-Quellcode:
Sooo, das läuft, kein Thema, Form wird erstellt, angezeigt und schön.
Frmgraphwindow2d := TFrmgraphwindow2d.create(Self);
Nun will ich aber in der Form auf Self zugreifen, also auf meine Klasse. Dazu cast ich erstmal den Parameter AOwner auf meine Klasse TKoordSys3D
Delphi-Quellcode:
copy Methode sieht so aus
constructor TFrmgraphwindow2d.create(p_AOwner: TComponent);
var c_kSys3D : TKoordSys3D; begin inherited create(p_AOwner); c_kSys3D := TKoordSys3D.create(self); c_kSys3D.copy(TKoordSys3D(p_AOwner)); ...
Delphi-Quellcode:
Hier(beim assign) gibts nun aber nach dem Compileren ein Problem, dass sich so meldet:
procedure TKoordSys3D.copy(p_koordSys: TKoordSys3D);
var l_temp_height, l_temp_width, l_temp_top, l_temp_left, l_i : integer; begin l_temp_height := Height; l_temp_width := Width; l_temp_top := Top; l_temp_left := Left; Assign(p_koordSys); ... "TApplication kann nicht TKoordSys3D zugewiesen werden" Edit: Was mir grad noch auffällt. Das passiert garnicht beim Kompilieren, sondern während der Laufzeit. Allerdings gleich nach Programmstart, und da wird meine Methode die die Form created noch garnicht aufgerufen Oo Weiß mir da keinen Rat. Aber von euch sicher jemand?!^^ Mfg aLiKe |
Re: constructor - AOwner immer TApplication?
Kann es sein, dass sich im Projektquellcode (.dpr) ein Application.CreateForm() für dein Formular befindet?
|
Re: constructor - AOwner immer TApplication?
Stimmt, da hab ich garnicht nachgeguckt. Befindet sich sogar 2 mal da.
Wie kommt das da hin? Dadurch dass ich über "Neu->Formular" das erstellt habe? Hab das beides jetzt mal auskommentiert, aber jetzt wird die Form im Programm nicht mehr geöffnet. Heißt also, die Zeilen müssen drin bleiben(2 Mal?) Problem werd ich also so umgehn, indem ich erst abfrage ob es sich um TApplication handelt, und dannach casten. Oder? |
Re: constructor - AOwner immer TApplication?
Du könntest dein Formular auch selber erzeugen lassen und nicht im Projekt.
|
Re: constructor - AOwner immer TApplication?
Ich hab jetzt nur im Projekt das Application.FormCreate rausgenommen, und den
Rest des codes so gelassen. Meines verständnisses nach, müßte das Formular nun angezeigt werden. Wird es aber nicht :shock: |
Re: constructor - AOwner immer TApplication?
Warum sollte es angezeigt werden, wenn es nie erzeugt wird?
|
Re: constructor - AOwner immer TApplication?
Zitat:
Delphi-Quellcode:
Wird es doch an der Stelle?
Frmgraphwindow2d.ShowModal();
Frmgraphwindow2d.Free(); Oder hab ich da nun was Elementares vergessen? |
Re: constructor - AOwner immer TApplication?
Wo befindet sich dieser Code?
|
Re: constructor - AOwner immer TApplication?
Ok, hat sich erledigt... Beim öffnen der .dpr Datei
hab ich scheinbar das Projekt irgendwie nochmal mit geöffnet. Ganz komisch, aufjedenfall funktionierts nun nach dem entfernen der Application.CreateForm() Methode aus der .dpr. Danke für die Hilfe^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 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