Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamische Komponentennamen (https://www.delphipraxis.net/27310-dynamische-komponentennamen.html)

hmbg 7. Aug 2004 19:35


Dynamische Komponentennamen
 
Hi

Ich würde gerne wissen, wie man Komponentennamen dynamisch verwalten kann
z.B.:
Code:
var a:integer;
begin
  randomize;
  a:=random(5)+1;
  Button[a].Hide; {Das geht nicht?! Wie ist so etwas in der Art möglich?}
end;
Würde mich über Tips freuen :coder2:

Danke!

Phoenix 7. Aug 2004 19:39

Re: Dynamische Komponentennamen
 
ist relativ einfach:

Delphi-Quellcode:
begin
   a := 1;
   with TButton.Create do
   begin
      Name := 'Button' + IntToStr(a); // Button heisst jetzt 'Button1'
   end;
end;
Und dann kannst Du mit Hier im Forum suchenFINDCOMPONENT nach dem Namen suchen und bekommst den Button wieder zurück. Dazu gibt es etliche Beispiele hier im Forum.

hmbg 7. Aug 2004 20:17

Re: Dynamische Komponentennamen
 
Ich weiß nicht, ob ich jetzt irgendetwas falsch verstanden habe, aber ich hatte mir das folgendermaßen vorgestellt:

Auf dem Formular (Form1) sind 5 Buttons verteilt(Button1-5). Nun soll das Programm zufällig einen aussuchen und verstecken; aber nach der dynamischen methode.

CalganX 7. Aug 2004 20:24

Re: Dynamische Komponentennamen
 
Hi,
folge doch mal dem Suchlink von Phoenix... ;) Da wirst du finden, was du suchst.

Chris

PS: Ansonsten kannst du ja auch ein Array von Buttons erstellen.

hmbg 8. Aug 2004 11:56

Re: Dynamische Komponentennamen
 
Mein Problem:

Ich weiß nicht genau nach was ich in den vielen Beiträgen suchen soll. Ich hab keine Ahnung, wie der Fachbegriff für das ist, was ich machen will

SirThornberry 8. Aug 2004 12:00

Re: Dynamische Komponentennamen
 
schau dir in der Hilfe mal FindComponent an, das sollte das sein was du suchst.
einfach per Zufall den Componentennamen in einen String zusammenpacken und dann diesen per findcomponent nutzen um die componente anzusprechen. Siehe Hilfe Delphi-Referenz durchsuchenFindComponent

Meflin 8. Aug 2004 12:05

Re: Dynamische Komponentennamen
 
oder eben auch hier im forum, es gibt viele posts dazu
Hier im Forum suchenfindcomponent
wie phoenix ja schon schrieb!

Remote1 8. Aug 2004 12:31

Re: Dynamische Komponentennamen
 
also, wenn ich dynamisch mehrere komp. erstelle, speichere ich die immer in arrays so dass ich jeder zeit wieder zugriff hab.

Delphi-Quellcode:
type
  TKomponenten= Array [1..37] of Record
                          myedit:tedit;
                          mycheckbox: array [1..8] of TCheckBox;
                       end;
...
var
...
x, y, z :TKomponenten;
i,k:byte;
...
for i:=1 to 37 do
 for k:=1 to 8 do x[i].mycheckbox[k].caption:='test';
halt so in die richtung

hmbg 10. Aug 2004 17:33

Re: Dynamische Komponentennamen
 
Vielen Dank für die vielen guten Tips, hat mir sehr geholfen
Doch ein weiteres Problem ist aufgetreten und ich peil mal wieder garnichts :wall:

Delphi-Quellcode:
a:=FindComponent('SpeedButton'+inttostr(speednr));
TSpeedButton(a).Glyph.LoadFromFile('metalol.bmp');

speednr:=speednr+1;
a:=FindComponent('SpeedButton'+inttostr(speednr));
TSpeedButton(a).Glyph.LoadFromFile('metalor.bmp');

speednr:=speednr+19;
a:=FindComponent('SpeedButton'+inttostr(speednr));
TSpeedButton(a).Glyph.LoadFromFile('metalul.bmp');

speednr:=speednr+1;
a:=FindComponent('SpeedButton'+inttostr(speednr));
TSpeedButton(a).Glyph.LoadFromFile('metalur.bmp');
Irgendwie geht das nicht, es kommt die fehlermeldung: Unbekannter Bezeichner 'FindComponent', obwohl das im selben Code, nur an einer anderen Stelle schon mal funktioniert hat. Muss man irgendetwas spezielles deklarieren, wenn man das in ne eigene procedure packt?

Danke, hmbg!


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