Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi eigener klasse (https://www.delphipraxis.net/9141-eigener-klasse.html)

LoL 19. Sep 2003 07:37


eigener klasse
 
hi

ich hab folgenden code:

Delphi-Quellcode:
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;
CreateComponents wir von der haupt unit aus in form.oncreate aufgerufen.
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

LoL 19. Sep 2003 08:02

Re: eigener klasse
 
hat denn davon niemand eine ahnung? :cry: *nachobenhohl*

neolithos 19. Sep 2003 08:03

Re: eigener klasse
 
Sag erst mal was das werden soll?

Luckie 19. Sep 2003 08:04

Re: eigener klasse
 
Bitte unterlass das. Dein Post ist gerade mal 25 Minuten alt! :x

LoL 19. Sep 2003 08:05

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

Robert Marquardt 19. Sep 2003 08:06

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.

LoL 19. Sep 2003 08:09

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

neolithos 19. Sep 2003 08:28

Re: eigener klasse
 
Ich weiß zwar immer noch nicht was das soll!
Aber ein vorschlag...

Delphi-Quellcode:
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;
Und CreateComponents ganzt du in OnCreate aufrufen.

LoL 19. Sep 2003 08:31

Re: eigener klasse
 
thx :hello:

das wars

gruß christoph

Robert Marquardt 19. Sep 2003 08:37

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 16:25 Uhr.
Seite 1 von 2  1 2      

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