Autor Beitrag
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 269
Erhaltene Danke: 23

Windows 8.1
Delphi 7 Pers.
BeitragVerfasst: So 12.11.17 21:25 
Hallo Experten,

ich habe in einer Toolbar 10 Toolbuttons, Toolbutton1..Toolbutton10. Deren Eigenschaften möchte ich zur Laufzeit ändern, also z. B. als Tag ihre Nummer hinzufügen.

ausblenden Delphi-Quelltext
1:
2:
3:
Toolbutton1.tag:=1;
..
Toolbutton10.tag:=10;


Das funktioniert so. Besser wäre aber eine Schleife der Art

ausblenden Delphi-Quelltext
1:
2:
for i:= 1 to 10 do
  Toolbutton[i].tag :=i; // unsinnige Syntax, aber im Prinzip so


In TToolbar gibt es zwar eine Lister alle Images der Buttons, aber keinen Liste mit den Verweisen auf die Buttons.

Hat jemand eine Idee?

Gruß
Guaack

P. S.: Die neue Funktion, dass man aufgefordert wird, erst zu suchen statt zu fragen, finde ich ausgezeichnet. Ich habe aber zu meiner Frage wohl in mehreren Versuchen nicht die richtigen Suchwörter gefunden (auch nicht bei Google).
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2361
Erhaltene Danke: 1110

Win 8.1
Delphi 5, 7, 10.1
BeitragVerfasst: So 12.11.17 21:29 
ausblenden Delphi-Quelltext
1:
2:
for i:= 1 to 10 do
    TToolbutton(FindComponent('Toolbutton'+IntToStr(i))).tag:=i;

LG Steffen

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 78
Erhaltene Danke: 9

Linux Raspbian, Win10
C, C++, Python, JavaScript, Delphi, Casio Basic, Basic Stamp
BeitragVerfasst: So 12.11.17 21:31 
Alternativ könntest du auch ein Array von den Objekten erstellen. Das ist vmtl. etwas schneller als die Komponente erst suchen zu lassen.

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1696
Erhaltene Danke: 307

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 14.11.17 10:58 
Für den Fall, dass die Steuerelemente anders heißen bzw. keine (numerische) Reihenfolge bilden, könnte man so vorgehen:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    FControlList: TObjectList;
  end;

// ...

procedure GetListOf(AParent: TWinControl; AControlType: TClass;
  AList: TObjectList);
var
  i: Integer;
begin
  AList.Clear;
  for i := 0 to AParent.ComponentCount - 1 do
  begin
    if AParent.Components[i].ClassType = AControlType then
      AList.Add(AParent.Components[i]);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FControlList := TObjectList.Create(true);
  GetListOf(Form1, TToolbutton, FControlList);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 10 do // bzw.  i := 1 to FControlList.Count
    TToolbutton(FControlList.Items[i - 1]).Tag := i;
end;

Ich bezieh' mich hierbei auf Delphi7, siehe TE Eintrag.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
GuaAck Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 269
Erhaltene Danke: 23

Windows 8.1
Delphi 7 Pers.
BeitragVerfasst: Do 16.11.17 22:57 
Danke für die guten Tipps,

"Findcomponent" ist das Geheimnis und die Lösung für mein Problem.

Gruß
Guaack