![]() |
Button mit Variable ansteuern
Hi bin mir sicher dass so was ändliches schon gefragt wurde aber ich find trozdem nichts also
meine Frage: for i := 1 to 20 do begin tbutton[i].caption := ''; end; So das problem wie kann ich klarmachen dass ich button1.caption , button2.caption ... '' zuweisen will dass funktioniert nämlich nicht, wen wunderts ;-) ? |
AW: Button mit Variable ansteuern
![]() |
AW: Button mit Variable ansteuern
Oder selbst verwalten (Array, TObjectList, TComponentList, ...)
|
AW: Button mit Variable ansteuern
danke für die superschnelle antwort aber mein turbodelphi scheint das wort nicht zu kennen "undefinierter bezeichner Findcomponent"
gibts das erst später? |
AW: Button mit Variable ansteuern
Ist die Unit Classes eingebunden?
|
AW: Button mit Variable ansteuern
jop sie is eingebunden
|
AW: Button mit Variable ansteuern
Komisch. Ich weiß jetzt nicht, seit wann es die Funktion gibt, aber so neu wird sie nicht sein. Hast Du Dich auch nicht vertippt?
|
AW: Button mit Variable ansteuern
Also
Delphi-Quellcode:
müsste schon gehen!? :gruebel:
Form1.FindComponent('xyz')
|
AW: Button mit Variable ansteuern
Wenn das in einer Methode von TForm1 steht, dann aber lieber Self nehmen. Wobei die Array-/Listenlösung eh performanter ist, zumindest, wenn die Liste öfter durchlaufen werden soll.
|
AW: Button mit Variable ansteuern
Dass nicht aber villeicht falsche syntax stimmt das so tbutton(findcomponent('button1').caption := '');
|
AW: Button mit Variable ansteuern
Zitat:
Delphi-Quellcode:
.
TButton(FindComponent('button1')).Caption := '';
Quellcode schließt man übrigens in [delphi]-Tags ein :wink: |
AW: Button mit Variable ansteuern
Delphi-Quellcode:
var Button: TButton;
... Button := FindComponent('Button1') as TButton; if Assigned(Button) then Button.Caption := ''; |
AW: Button mit Variable ansteuern
Naja, nach dem ersten Aufruf legt FindComponent (von TComponent) eine interne Liste der Controls an:
Delphi-Quellcode:
Hab jetzt nur nicht näher geschaut, ob diese Liste beim Hinzufügen und Löschen von Komponenten auch geupdated wird -- aber ich gehe mal stark davon aus. Von daher sollte das von der Performance her auch noch okay sein.
{ Fill the sorted list (and sort it) }
FSortedComponents := TList.Create; FSortedComponents.Count := FComponents.Count; for I := 0 to FComponents.Count - 1 do FSortedComponents[I] := FComponents[I]; FSortedComponents.SortList( function(Item1, Item2: Pointer): Integer begin Result := CompareText(TComponent(Item1).Name, TComponent(Item2).Name); end); BTW: Darf ich SourceCode aus der VCL hier einfach posten?! -> Copyright! |
AW: Button mit Variable ansteuern
Delphi-Quellcode:
TButton(findcomponent('button' + IntToStr(i))).caption := IntToStr(i);
|
AW: Button mit Variable ansteuern
Tatsächlich, das sieht hier unter Delphi 2007 zwar etwas anders aus, aber diese Liste wird auch bei mir erzeugt. Das war IIRC früher aber mal anders, da wurde bei jedem Aufruf das komplette Components-Array durchlaufen.
[edit] @implementation, Bummi: was ist, wenn die Komponente nicht gefunden wird? Dann sollte es beim Zugriff auf Caption knallen. [/edit] |
AW: Button mit Variable ansteuern
killllllll mich ,danke
|
AW: Button mit Variable ansteuern
@DeddyH
man kann das schon kapseln, Du möchtest sowas
Delphi-Quellcode:
aber wenn ich weiß was ich tue spare ich mir das mitunter ...
var
B:TButton; begin b := TButton(FindComponent('Button' + IntToStr(i))); if Assigned(B) then begin //was auch immer end; |
AW: Button mit Variable ansteuern
Das entspricht jetzt ziemlich meinem eigenen Code aus #12 ;) Und ich denke mir immer: sicher ist sicher, die eine Assigned-Abfrage tut keinem weh, macht das Programm aber stabiler.
|
AW: Button mit Variable ansteuern
Ach noch ne kleine info ich habs jetzt findcomponent darf ich ja nur in einer procedur der form1 benutzen ich hab aber meine eigene proc muss die jetzt halt ersetzen
|
AW: Button mit Variable ansteuern
Zitat:
Denn es handelt sich hierbei um eine Methode von TForm
Delphi-Quellcode:
procedure MachWas( Form : TForm );
begin Form.FindComponent( ... ); end; // Aufruf z.B. so procedure TForm1.EineMethode; begin MachWas( Self ); // Self ist die Referenz auf die aktuelle Instanz end; |
AW: Button mit Variable ansteuern
Zitat:
|
AW: Button mit Variable ansteuern
oder universeller:
Delphi-Quellcode:
Function MyFindComponent( Component : TComponent ):TComponent;
|
AW: Button mit Variable ansteuern
Nein
Delphi-Quellcode:
(findcomponent('button1') as TButton).caption := '';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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