AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TButton über Laufvariable?

Ein Thema von Jerk · begonnen am 6. Feb 2007 · letzter Beitrag vom 6. Feb 2007
Antwort Antwort
Jerk

Registriert seit: 6. Feb 2007
7 Beiträge
 
#1

TButton über Laufvariable?

  Alt 6. Feb 2007, 01:14
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:
  Button: array[1..10] of TButton;

...

for i:=1 to 10 do
 begin
  Button[i].caption:='Hello world i am number: '+inttostr(i);
 end;
Das ganze funktioniert wenn ich das Array praktisch einzeln fülle also:

Code:
Button[1]:=Button1;
Button[2]:=Button2;
...
Was ich aber viel lieber machen möchte ist sowas in der Art:

Code:
for i:=1 to 10 do
 begin
  Button[i]:=Button+inttostr(i);
 end;
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?
  Mit Zitat antworten Zitat
megaGOLDdeluxe

Registriert seit: 23. Sep 2004
7 Beiträge
 
#2

Re: TButton über Laufvariable?

  Alt 6. Feb 2007, 01:27
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:
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.
MfG
Pierre
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#3

Re: TButton über Laufvariable?

  Alt 6. Feb 2007, 01:28
Hallo und herzlich Willkommen in der DP
Zunächst ein Tip: Nutze die Delphi Tags, wenn Du Code postest

Dein Problem könntest Du zb so lösen:
Delphi-Quellcode:
   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)='Buttonthen
            TButton(Components[i]).Caption:='Hello world i am number: '+Copy(TButton(Components[i]).Name, 7, 2);
Grüßle!

Edit: Wo sind denn schon wieder der rote Kasten geblieben
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: TButton über Laufvariable?

  Alt 6. Feb 2007, 01:33
Herzlich Wilkommen erstmal

Um eine Komponente über ihren Namen zu finden, kannst du Delphi-Referenz durchsuchenFindComponent verwenden,
dieses verlangt den Namen als String und gibt das passende Objekt zurück.

Delphi-Quellcode:
for i := 1 to 10 do
  Button[i] := FindComponent('Button' + IntToStr(i));
Notfalls mußt du dann noch eine Typenkonvertierung vornehmen:
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);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Jerk

Registriert seit: 6. Feb 2007
7 Beiträge
 
#5

Re: TButton über Laufvariable?

  Alt 6. Feb 2007, 01:45
Vielen dank für die viele Hilfe und das um diese Urzeit
Button[i] := TButtonFindComponent('Button' + IntToStr(i))); Das Funktioniert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz