Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TComponent + Array (https://www.delphipraxis.net/58116-tcomponent-array.html)

Premutos 1. Dez 2005 15:54


TComponent + Array
 
wie bekomm ichzb. "tbutton" und "TLabel" in ein aray!?

Code:
comps : array['a'..'z'] of tcomponent;
begin

comps['a'] := tbutton;

//geht ja nicht :/ ??

tigerman33 1. Dez 2005 16:00

Re: TComponent + Array
 
Dafür ist es der falsche Typ. Das muss deklariert sein als:
Delphi-Quellcode:
var comps: array['a'..'z'] of TComponentClass;
Aber bist du dir sicher, dass du wirklich die Klassentypen speichern willst, und nicht Instanzen?

Premutos 1. Dez 2005 16:12

Re: TComponent + Array
 
Zitat:

Zitat von tigerman33
Dafür ist es der falsche Typ. Das muss deklariert sein als:
Delphi-Quellcode:
var comps: array['a'..'z'] of TComponentClass;
Aber bist du dir sicher, dass du wirklich die Klassentypen speichern willst, und nicht Instanzen?

jo, bin mir sicher :)
danke dir hab mit der benutzung von klassen wenig erfahrung!

Premutos 1. Dez 2005 16:32

Re: TComponent + Array
 
hmm hab schon das nächste problem :(

habe das array mit den kompo klassen gefüllt und möchte jetzt überprüfen ob sich diese klasse welche in comp steckt im array befindet!

Code:
comps : array['a'..'z'] of TComponentClass;
Comp: TComponent;

begin

comps['a'] := Tbutton;
comps['b'] := TLabel;
...
comp:=Form1.Components[x];

if comp is (im array) then
(Comp as .(".").).Name;

tigerman33 1. Dez 2005 16:53

Re: TComponent + Array
 
Das geht ganz normal mit dem =-Operator:
Delphi-Quellcode:
var i: integer;
begin
...
for i := low(comps) to high(comps) do
  if comp = comps[i] then
    (Comp as comps[i]).Name;
...
Aber ich wiederhole meine Frage: Wirklich Klassentypen?
Auf TComponent.Name kannst du nämlich nur in Instanzen aus zugreifen, nicht in Klassen!

Premutos 1. Dez 2005 17:24

Re: TComponent + Array
 
ok habs hin bekommen , danke dir :thumb:


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