![]() |
eigener klasse
hi
ich hab folgenden code:
Delphi-Quellcode:
CreateComponents wir von der haupt unit aus in form.oncreate aufgerufen.
unit u_prog
... type Work_Panel = Class ( TPanel ) procedure button_creation; end; ... var mybutton : TButton; procedure Work_Panel.button_creation; begin mybutton := TButton.create(self); mybutton.parent := self; end; procedure CreateComponents; begin Work_Panel.button_creation; end; ich bekomme folgende fehler meldung: '[Error] u_prog.pas(283): This form of method call only allowed for class methods' ich kann damit aber nicht wirklich was anfangen. wer kann mir helfen? gruß christoph |
Re: eigener klasse
hat denn davon niemand eine ahnung? :cry: *nachobenhohl*
|
Re: eigener klasse
Sag erst mal was das werden soll?
|
Re: eigener klasse
Bitte unterlass das. Dein Post ist gerade mal 25 Minuten alt! :x
|
Re: eigener klasse
hi
tut mir leid luckie sorry ich hab mir die klasse erstellt um darauf meine anderen komponenten zu erstellen, so dass ich diese klasse unabhängig vom zuverwendeten programm bzw. formular funktioniert! gruß christoph |
Re: eigener klasse
Gemeinerweise hat Tform eine Methode CreateComponents. Die wird aufgerufen und bekommt den Schluckauf.
Ausserdem solltest du deine Funktion nicht im OnCreate aufrufen. Das ist zu frueh. |
Re: eigener klasse
hi
es gibt die methode CreateComponent aber nicht CreateComponents. und warum sollte ich die procedure nicht in OnCreate aufrufen bisher hats immer geklappt? ich werde aber besonders auf der fehlermeldung nicht schlau! mfg christoph |
Re: eigener klasse
Ich weiß zwar immer noch nicht was das soll!
Aber ein vorschlag...
Delphi-Quellcode:
Und CreateComponents ganzt du in OnCreate aufrufen.
unit u_prog
... type Work_Panel = Class class procedure button_creation(Self : TPanel); end; ... var mybutton : TButton; class procedure Work_Panel.button_creation(Self : TPanel); begin mybutton := TButton.create(self); mybutton.parent := self; end; procedure CreateComponents; begin Work_Panel.button_creation; end; |
Re: eigener klasse
thx :hello:
das wars gruß christoph |
Re: eigener klasse
Du hast mich verwirrt. Typen IMMER mit T vorne schreiben!
Der Aufruf Work_panel.button_creation waere nur als class function erlaubt. Als solcher kann er aber nicht funktionieren. class functions kann man naemlich ohne Instanz des Objekts aufrufen. Das Erzeugen der Buttons geht dann schief. Self ist dann namenlich nicht vorhanden. Du musst CreateComponents zu einer Methode deiner Form machen (auf der du wahrscheinlich eine Work_panel genannte Komponente hast). Mit zu frueh meine ich das bei OnCreate Loaded noch nicht ausgefuehrt wurde. Die Komponenten auf der Form sind noch nicht vollstaendig initialisiert. Ich mache es immer im OnActivate (mit einer booleschen Variablen abgesichert damit es nur einmal aufgerufen wird). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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