![]() |
TButton über Laufvariable?
Hallo erstmal an alle und entschuldigung falls ich eine falsche Kategorie hier im Forum erwischt habe.
Ich möchte gerne Objekte,z.b. Buttons über eine Laufvariable ansprechen können, also wenn ich z.b. 10 buttons habe und diese Button1...Button10 heißen.
Code:
Das ganze funktioniert wenn ich das Array praktisch einzeln fülle also:
Button: array[1..10] of TButton;
... for i:=1 to 10 do begin Button[i].caption:='Hello world i am number: '+inttostr(i); end;
Code:
Was ich aber viel lieber machen möchte ist sowas in der Art:
Button[1]:=Button1;
Button[2]:=Button2; ...
Code:
Das ist kürzer vorallem wenn ich mehr als 10 Buttons habe nur funktioniert es auf diese weise nicht da wohl inkompatible Typen vorliegen. Also wie muss ich die Laufvariable I umwandeln damit das funktioniert?
for i:=1 to 10 do
begin Button[i]:=Button+inttostr(i); end; |
Re: TButton über Laufvariable?
Du kannst z.b. wie folgt auf die Buttons zugreiffen. Da diese ja auf einem Form liegen, kannst Du über dieses auf die Buttons zugreiffem, da das Form "sehen kann, was auf ihm liegt".
Delphi-Quellcode:
MfG
procedure TForm1.RenameButtons;
var iRunner: Integer; begin for iRunner := 0 to Form1.ComponentCount -1 do begin if Form1.Components[iRunner] is TButton then begin (Form1.Components[iRunner] as TButton).Caption := 'MeinButton'+IntToStr(iRunner); end; end; end; // Form1.ComponentCount gibt Dir die Anzahl, der auf dem Form liegenden Komponenten zurück. // Mit Form1.Components[iRunner] is TButton überprüfst Du, ob die aktuelle Komponente ein TButton ist. // (Form1.Components[iRunner] as TButton) brachst Du, um an die Eigenschaften Deines Buttons zu kommen. Pierre |
Re: TButton über Laufvariable?
Hallo und herzlich Willkommen in der DP :dp:
Zunächst ein Tip: Nutze die Delphi Tags, wenn Du Code postest :zwinker: Dein Problem könntest Du zb so lösen:
Delphi-Quellcode:
Grüßle!
var i:Integer;
begin For i:=0 to ComponentCount-1 do if (Components[i] is TButton) then if Copy(TButton(Components[i]).Name, 1, 6)='Button' then TButton(Components[i]).Caption:='Hello world i am number: '+Copy(TButton(Components[i]).Name, 7, 2); Edit: Wo sind denn schon wieder der rote Kasten geblieben :? |
Re: TButton über Laufvariable?
Herzlich Wilkommen erstmal :angel:
Um eine Komponente über ihren Namen zu finden, kannst du ![]() dieses verlangt den Namen als String und gibt das passende Objekt zurück.
Delphi-Quellcode:
Notfalls mußt du dann noch eine Typenkonvertierung vornehmen:
for i := 1 to 10 do
Button[i] := FindComponent('Button' + IntToStr(i));
Delphi-Quellcode:
for i := 1 to 10 do
Button[i] := TButton(FindComponent('Button' + IntToStr(i))); // oder for i := 1 to 10 do Button[i] := (FindComponent('Button' + IntToStr(i)) as TButton); |
Re: TButton über Laufvariable?
Vielen dank für die viele Hilfe und das um diese Urzeit :shock:
Delphi-Quellcode:
Das Funktioniert.
Button[i] := TButtonFindComponent('Button' + IntToStr(i)));
:thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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