![]() |
Delphi-Version: 5
Dynamisch Erstellter Button - NAME
Hallo,
habe jetzt dank Hilfe hier im Forum, es geschafft einem dynamisch erstellten Button ein On...-Event zuzuweisen. ( ![]() Jetzt möchte ich mehrere Buttons erstellen. Diese sollen jetzt am besten ein "NAME" haben, damit ich sie ansteuern kann. Wie krieg ich das hin`? |
AW: Dynamisch Erstellter Button - NAME
Dynamisch erstellt Controls brauchen keinen "Namen". Du kannst Sie entweder mittels lokaler Variable referenzieren oder falls es mehrer gleichgartete Controls sind über ein Array oder Liste. Das Namens-Property ist nur für das DFM-Streaming relevant damit beim einlesen der DFM beim Programmablauf klar ist welche DFM-"Variable" zu welcher realen Formularvariable gemappt werden soll.
|
AW: Dynamisch Erstellter Button - NAME
Tja, also wenns viele Buttons werden sollen, dann stimme ich Bernhard zu. Ansonsten kannst du über die Referenzvariable den Namen zuweisen:
Delphi-Quellcode:
So sollte das funktionieren. Bei vielen dynamisch erstellten Buttons solltest du die aber wirklich lieber über ein Array oder eine Liste verwalten.
var
MeinButton: TButton; begin MeinButton := TButton.Create(self); MeinButton.Name := 'DasIstMeinButton'; end; LG; hans ditter |
AW: Dynamisch Erstellter Button - NAME
Ok, aber wie würde das mit den Arrays gehen ?
Also ich würde dann so was in der Art machen:
Code:
Aber wie meint ihr das mit dem Array ?
procedure TForm1.Button1Click(Sender: TObject);
var a: TButton; i: Integer; begin for i:=1 to 100 do begin a := TButton.Create(self); a.Parent := Form1; a.Visible := True; a.Top := 50*i+10; a.Left := 10; a.Width := 100; a.Height := 45; a.Caption := 'Der '+inttostr(i)+'. Button!'; end; end; Danke! |
AW: Dynamisch Erstellter Button - NAME
Delphi-Quellcode:
Variable für eine Komponente ... wie würde man da wohl ein Array reinbauen?
var
a: TButton;
Delphi-Quellcode:
+ SetLength
array of ...
oder
Delphi-Quellcode:
.
array[1..100] of ...
oder eine TObjectList |
AW: Dynamisch Erstellter Button - NAME
Hey Thomas!
Ich bin mir nicht ganz sicher, aber so wie du das gemacht hast, würde es wohl sowieso nicht funktionieren, da du dann 100 Buttons hast, aber nur einer davon durch die Variable ansprechbar ist. Mit dem Array würde es dann, wie Himitsu schon sagte, so gehen:
Delphi-Quellcode:
Über TObjectList kannst du dich auch im Netz informieren... einfach mal bei Google 'delphi tobjectlist' eingeben und schon solltest du was finden!
var
MyButtons: array[1..100] of TButton; begin for i:= 0 to 100 do begin MyButtons[i] := TButton.Create; MyButtons[i].Left := 100; {etc. blabla} end; end; |
AW: Dynamisch Erstellter Button - NAME
Hallo,
ich bringe mal FindComponent ins Spiel. Dann könnte man sich das Array sparen.
Delphi-Quellcode:
procedure TForm1.TuWas;
var Btn: TButton; begin Btn:= TButton(FindComponent('MeinButton1')); if Assigned(Btn) then begin end; end; |
AW: Dynamisch Erstellter Button - NAME
Jedesmal in einer Liste nach dem Namen zu suchen ist aber etwas "umständlicher", als mal kurz einen Index auf ein(e) Array/Liste anzuwenden.
|
AW: Dynamisch Erstellter Button - NAME
Zitat:
Unterm Strich hätte man doch nichts gespart. Wenn 100 Buttons (oder wie viele auch immer) dynamisch erzeugt werden sollen, steckt mehr dahinter => Eigene Komponente, Frame o.ä. => Zugriff dort hin verschieben => Zugriff über Array-Property => Implementierung egal (FindComponent, Array, TList, TObjectList) [zu spät] |
AW: Dynamisch Erstellter Button - NAME
Hallo,
Zitat:
Was glaubst, was FindComponent macht ? Die Methode durchläuft eine Array/TList (?) (Components). OK, das Array/TList ist größer, aber was hat das mit "Zu langsam" zu tun. 100 Buttons werden erzeugt und mit einer Ereignis-Methode verknüpft. Und danach ? Ich schätze mal, der Code in der Ereignis-Methode dauert länger als das Suchen. Zitat:
So, musste mal gesagt werde und jetzt wird fleissig gearbeitet mit aufs vorm gepappten Buttons ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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