Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrere Objekte Ansprechen:Beispiel Buttons ! (https://www.delphipraxis.net/78808-mehrere-objekte-ansprechen-beispiel-buttons.html)

Semikolon 11. Okt 2006 13:04


Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Hallo Leute !

Dies ist mein erster Beitrag hier,ich hoffe auf ein gutes Verhältnis.

Freut mich hier zu sein,bei euch Pros. :-D

Hab eine Frage,wegen der ich gestern fast geheult habe.

Wie kann ich Objekte,also Labels und Buttons per Integer ansprechen?

Beispiel:

Ich habe 3 Buttons (button1,button2,button3).Ich möchte per for-Schleife die Caption

aller auf "test" ändern.

So gings nicht:

###
Delphi-Quellcode:
var a:integer
procedure ...
begin
for a:=1 to 3 do tbutton('button' + inttostr(a)).caption:='test'
end;
###

Wie schaft man das? :pale:

Zacherl 11. Okt 2006 13:05

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
FindComponent lautet das Zauberwort :mrgreen:

Delphi-Quellcode:
var
  i: integer
begin
  for i := 1 to 3 do
    TButton(FindComponent('Button' + IntToStr(i))).Caption := 'test';
end;
Florian

TeronG 11. Okt 2006 13:05

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
mach doch n Array [1..3] of label .... oder versuche findcomponente

Semikolon 11. Okt 2006 13:09

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Boah danke Florian. :o :-D Vielen Dank !

PS:Teron dein Tip ist auch nicht schlecht ! :shock: An sowas hab ich bis jetzt noch nicht gedacht!

TeronG 11. Okt 2006 13:11

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Zitat:

Zitat von Semikolon
Boah danke Florian. :o :-D Vielen Dank !

:cry:







:zwinker: :mrgreen:

Zacherl 11. Okt 2006 13:11

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Zitat:

Zitat von Semikolon
Boah danke Florian. :o :-D Vielen Dank !

Immer wieder gerne :mrgreen:

3_of_8 11. Okt 2006 13:18

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
FindComponent ist ein recht schlechter Stil. ;)

Strings vergleichen dauern relativ lange, vor allem wenn man sequentiell durch das ganze Components-Array durch muss.

Wenn du die Komponenten, die du brauchst, in ein Array packst, hast du indizierten Zugriff, das heißt das Ganze geht sehr viel schneller.

Nebenbei: Die wenigsten hier sind Pros. Ich zum Beispiel bin keiner. ;)

Semikolon 11. Okt 2006 13:33

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Mir erschließt sich in puncto Arrays eine neue Frage,die im Prinzip auf die obere verweist:

Wenn ich 50 Buttons(button1,button2,...) habe,dann muss ich die ja noch in den Array[1..50] of Buttons alle EINZELN per Hand eintragen.Wie kann ich das in einer FOR-Schleife machen und den Integer gleich nutzen?

ungefähr:

Delphi-Quellcode:
for i:=1 to 50 do ArrayDerButtons[i]:=tbutton('button'+inttostr(i));
Mein Hauptproblem ist,wie ihr merkt,wie ich Integer oder Strings in Componentnamen umforme. :cry:

Dax 11. Okt 2006 13:35

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Zitat:

Zitat von Florian Bernd
FindComponent lautet das Zauberwort :mrgreen:

:zwinker:

Cöster 11. Okt 2006 13:38

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
dann musst du wohl doch Findcomponent nehmen, allerdings nur einmal um in den Array einzulesen. Alternative wär halt alles einzeln zu machen.

TeronG 11. Okt 2006 13:49

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Zitat:

Zitat von Cöster
dann musst du wohl doch Findcomponent nehmen, allerdings nur einmal um in den Array einzulesen. Alternative wär halt alles einzeln zu machen.

jup .. So mach ich das auch i.d.r.
bei onCreate einmalig per FindCompo ins array/liste und danach einfach das array (bzw. die liste) durchlaufen ..
evtl. auch erst im onCreate erstellen (dann natürlich gleich "im array erstellen")

dino 11. Okt 2006 14:33

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
kann man den buttonnamen nicht als array definnieren??? probiers gleich mal aus

r2c2 11. Okt 2006 14:44

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Zitat:

Zitat von dino
kann man den buttonnamen nicht als array definnieren??? probiers gleich mal aus

Nö, geht nicht, aber man kann die Buttons per Code erstellen...

mfg

Christian

Alexander Roth 11. Okt 2006 15:00

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Falls das deine einzigen Buttons auf der Form sind kannst du das auch so machen:
Delphi-Quellcode:
    for i:=0 to form1.ComponentCount -1 do
      begin
      if form1.Components[i] is TButton then
        // mach etwas mit TButton(form1.Components[i]).Caption
      end;
Aber das Array ist glaube ich schneller.

Zitat:

Zitat von Semikolon
Freut mich hier zu sein,bei euch Pros. :-D

Zitat:

Zitat von 3_of_8
Nebenbei: Die wenigsten hier sind Pros. Ich zum Beispiel bin keiner. ;)

Ebenso.
Aber man kann ja ein Ziel haben. :-D

Semikolon 12. Okt 2006 12:50

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Ich habe noch eine komplexe Frage,ich hoffe ich nerve euch nicht,denn die Fragen
quälen mich schon seit langem und ich arbeite gerade an einem Projekt,für welches
ich diese Erkenntisse brauche.
+++++

Ich weiß jetzt wie ich Strings in Componentennamen umsetze(Findcomponent) aber wie mache ich es andersrum?

Konkretes Beispiel:

Ich habe 3 Buttons,button1,button2,button3.Wie kann ich beim Klick auf einen der Buttons dessen Namen in einem
Label ausgeben und zwar wenn ich es nicht konkret sonder abstrakt per Abfrage des Senders mache? :o :?: :|
Etwa in der Art:

Delphi-Quellcode:
var a:string;
begin
a:=String(Sender as Tbutton);
label1.caption:=a;

Phoenix 12. Okt 2006 13:01

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Zitat:

Zitat von Semikolon
Ich habe noch eine komplexe Frage

Eigentlich gilt bei uns: Neue Frage -> Neuer Thread. Dennoch kurz hier die Antwort. Bei der nächsten Frage aber bitte wieder einen neuen Thread aufmachen, oki?

Delphi-Quellcode:
If (Sender is TButton) then
   a := (Sender as TButton).Name;

Semikolon 12. Okt 2006 13:07

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Vielen Dank.

Ich hab übrigens gedacht es ist von Vorteil,wenn ich mehrere Fragen zu einem Komplex in einen Thread mache. :mrgreen:

dino 12. Okt 2006 13:09

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
hmm ist aber ungewöhnlich übrigens kannst du das mit dem nerven wieder vergessen, da die dp tag ein tag aus ganz allein von leuten lebt die frragen haben und anderen Leuten die darauf antworten können

mbamler 12. Okt 2006 13:12

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Zitat:

Zitat von Semikolon
Ich habe noch eine komplexe Frage,ich hoffe ich nerve euch nicht,denn die Fragen
quälen mich schon seit langem und ich arbeite gerade an einem Projekt,für welches
ich diese Erkenntisse brauche.
+++++

Ich weiß jetzt wie ich Strings in Componentennamen umsetze(Findcomponent) aber wie mache ich es andersrum?

Konkretes Beispiel:

Ich habe 3 Buttons,button1,button2,button3.Wie kann ich beim Klick auf einen der Buttons dessen Namen in einem
Label ausgeben und zwar wenn ich es nicht konkret sonder abstrakt per Abfrage des Senders mache? :o :?: :|
Etwa in der Art:

Delphi-Quellcode:
var a:string;
begin
a:=String(Sender as Tbutton);
label1.caption:=a;

ungefähr so:

Delphi-Quellcode:
label1.caption := TButton(Sender).Name;
Gruß
Matthias

uwewo 12. Okt 2006 13:25

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   if (Sender is TButton) then
      Label1.Caption := (Sender as TButton).Name;
end;
Uwe

MacGuyver 12. Okt 2006 14:58

Re: Mehrere Objekte Ansprechen:Beispiel Buttons !
 
Moin auch!

Machs so:
Delphi-Quellcode:
Var lName : String;

begin
  With Sender As TButton Do
    lName:=Name;
  Label1.Caption:=lName;
Dabei nicht vergessen: Durch den With darf deine Variable vom Namen her nicht in TButton und den Vorfahrklassen vorhanden sein darf.

Stefan



Oh, es gab noch eine zweite Seite. :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz