Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TWincontrol Komponenten Createn (https://www.delphipraxis.net/162411-twincontrol-komponenten-createn.html)

WizoHulk 22. Aug 2011 10:46

Delphi-Version: 2007

TWincontrol Komponenten Createn
 
Hallo

Ich habe ein kleines Problem,
ich möchte Komponenten (ComboBox,Edit)über TWinControl createn und diese an ein Treeview hängen.
Aber leider bekomme ich beim Createn eine Exception.


Delphi-Quellcode:
if configTyp = Combo then
   begin
     KompTyp := ComboBox;
   end;

     //Erstellen der Komponente
     TWinControl(KompTyp)             := TWinControl(KompTyp).Create(nil);
     TWinControl(KompTyp).Parent      := LV;
     li.Data                          := TWinControl(KompTyp);

     //Größenanpassung
     KomponteRect                     := li.DisplayRect(drBounds);
     KomponteRect.Left                := KomponteRect.Left + lv.Columns[-1 + KomponenteColIndex].Width;
     KomponteRect.Right               := KomponteRect.Left + lv.Columns[KomponenteColIndex].Width;
     TWinControl(KompTyp).BoundsRect  := KomponteRect;
  end;
ich habe es mal nur mit TControl versucht was auch kein erfolg brachte.
Delphi-Quellcode:
KompTyp := TControl(KompTyp).Create(nil);

himitsu 22. Aug 2011 10:51

AW: TWincontrol Komponenten Createn
 
Zitat:

Delphi-Quellcode:
WinControl(KompTyp).Create(nil);

Das kann ja auch nicht funktionieren, denn das ist das Selbe, wie
Delphi-Quellcode:
var Komp: TWinControl;

Komp.Create(nil);
Du brauchst einen Typzeiger ala
Delphi-Quellcode:
class of TWinControl
.


Wie/Wo ist KompTyp deklariert?

[add]
Der vordefinierte Typ nennt sich Delphi-Referenz durchsuchenTWinControlClass.
Und diesem Zeiger mußt du direkt TEdit und Co. zuweisen ... also die Typen und keine Instanzen.

Delphi-Quellcode:
var
  KompTyp: TWinControlClass;
  Komp: TWinControl;
 
KompTyp := TEdit;

//Erstellen der Komponente
Komp := KompTyp.Create(LV); // oder gibst du diese Komponenten IMMER selber wieder frei?
Komp.Parent := LV;
li.Data := Komp;

DeddyH 22. Aug 2011 10:59

AW: TWincontrol Komponenten Createn
 
Also in etwa so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  TTyp: TWinControlClass;
  obj: TWinControl;
begin
  TTyp := TComboBox;
  obj := TTyp.Create(self);
  obj.Left := 10;
  obj.Top := 10;
  obj.Parent := self;
end;

WizoHulk 22. Aug 2011 11:22

AW: TWincontrol Komponenten Createn
 
Super das Klappt...
und wenn ich dem Jetzt werte zuweisen will, mus sich dann das noch irgendwie Casten?
Da ich ja nicht direkt auf das Property text oder items zugreifen kann

DeddyH 22. Aug 2011 11:57

AW: TWincontrol Komponenten Createn
 
Da wirst Du wohl nicht umhin kommen, ansonsten kannst Du ja nur auf die Properties und Methoden von TWinControl zugreifen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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