AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Konstruktor wird nicht erkannt

Ein Thema von DGL-luke · begonnen am 24. Mai 2005 · letzter Beitrag vom 25. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 13:18
Ich bin gerade dabei eine "Komponente" zuu entwickeln.

hier der public Abschnitt:

Delphi-Quellcode:
 public
   constructor Create(Parent:TCanvas); override;
   destructor Destroy; override;

   procedure Paint;
   procedure StepIt;
Die Implementation des Konstruktors:

Delphi-Quellcode:
constructor TCanvasBar.Create(Parent:TCanvas);
begin
 inherited;
  fFont:=TFont.Create;
  fMin:=0;
  fMax:=100;
  fStep:=1;
  self.Parent:=Parent;
end;
und das onformcreate der testform:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
bar:=TCanvasbar.create(Form1.Canvas);
end;
hier bekomme ich den Fehler:
[Fehler] Unit1.pas(34): E2076 Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt Was mache ich also falsch??
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 13:20
Create (AOwner: TComponent) muss bleiben

Du musst Canvas anders übergeben!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 13:27
ach so ist das...

und soll ich dann den AOwner inerhalb des Konstruktors einfach wegschmeissen? oder gibts da was sinnvolles dafür? bzw. wie kann ich der übergebenen Komponente sagen, dass sie jetzt ein neues Child bekommt?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#4

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 13:34
Bei den DelphiX Komponenten wurde sowas gelöst, indem du einfach eine Eigenschaft der Komponente addest.
Diese ist z.B. mit dem Namen "SrcCanvas" benannt und enthält eine Liste aller im Projekt enthaltener Canvas'e (Canven? )

air
P.S.: *kleinlaut frag* was bedeutet eig. inherited?
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 13:37
Zitat von DGL-luke:
ach so ist das...

und soll ich dann den AOwner inerhalb des Konstruktors einfach wegschmeissen? oder gibts da was sinnvolles dafür? bzw. wie kann ich der übergebenen Komponente sagen, dass sie jetzt ein neues Child bekommt?
Du mußt zwischen Owner (Besitzer der Komponente, räumt auch die Komponente wieder auf, wenn sie freigegeben wird. Der Owner ist in der Regel das Formular für Komponenten) und Parent (in welchen Control wird das Control dargestellt (mit berücksichtigung von Sichtbarkeit, verschiebung der Position).

AOwner wird dem Basis-Konstruktor übergeben, so das dieser sich in die Verwaltungsliste von AOwner eintragen kann.
Normalerweise wird ein Control so angelegt

Delphi-Quellcode:
MyControl := TMyControl.Create(self); // self = Formular, Sorgt für Freigabe, wenn man es nicht selbst erledigt
MyControl.Left := 100; // 100 Pixel von Linken Rand des parent-Controls
MyControl.Parent := ParentPanel; // Control ist Windows-Technisch unterhalb des ParentPanel angeordnet
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 15:29
ja, das mit dem unterschied zwischen owner und parent ist mir klar.

@Airblader: inherited ruft die nächstältere methode auf, also TObject.Create.

Herrgott nochmla jetzt updatet das nicht... *dcu löscht* *dcu nicht findet* *neues projekt macht* *immer noch nicht geht*

Wo ist die verdammte dcu jetzt hin? wie bring ich die unit zum updaten?

EDIT: Du sollst nicht die gleiche Unit zwei mal auf deinem System haben....

Jetzt hab ich aber folgendes problem: Ich habe bisher von TObject abgeleitet. damit sagt er, dass ich create nicht überschreiben kann.
geht das in ordnung? oder muss ich komplett von TComponent ableiten(was weitere Probleme macht)

inzwischen mekckert er gerade:

[Fehler] U_CanvasBar.pas(8): E2217 Published-Feld 'fPosition' ist weder vom Typ class noch interface
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#7

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 15:34
Zitat von DGL-luke:
@Airblader: inherited ruft die nächstältere methode auf, also TObject.Create.
Sorry wenn ich nochmal nachhake:
Also praktisch von dem, wovon man ableitet?
Gut, aber was bringt das?
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 15:37
na dass man nicht die alte methode, wenn sie schon eine implementation hat, wieder komplett hinschreiben muss.

könntet ihr euch bitte mal mein oberes editiertes ansehen?
Funktioniert wunderbar(es fehlte ein private)! Hey, ich hab gerade meine erste funktionierende Komponente geschrieben! Dass ich das noch erleben darf....
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#9

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 15:44
Zitat von DGL-luke:
na dass man nicht die alte methode, wenn sie schon eine implementation hat, wieder komplett hinschreiben muss.
Ah..nochmal zum Verständnis.
inherited ist praktisch nur ein Platzhalter dafür, dass alles, was in der Ursprungskompo (bzw. Ursprungsklasse) in der Prozedur stand, wieder übernommen wird? Und schon wieder ein Stückchen schlauer
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Konstruktor wird nicht erkannt

  Alt 24. Mai 2005, 15:44
Zitat von Airblader:
Zitat von DGL-luke:
@Airblader: inherited ruft die nächstältere methode auf, also TObject.Create.
Sorry wenn ich nochmal nachhake:
Also praktisch von dem, wovon man ableitet?
Gut, aber was bringt das?
Das kann Dir erstens Tipparbeit ersparen (wenn eine abgeleite Klasse einen Konstrutktor mit ein paar mehr Parametern hat, dann kann man inherited Create(...) die bereits bekannten Felder auch mit dem übgeordneten Konstruktor aufrufen lassen).
Und Du kannst einfacher eine Klasse in deine Klassenhierarchie "zwischenschalten".

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr.
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