Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Toolbutton im Quellcode selbst erstellen (https://www.delphipraxis.net/724-toolbutton-im-quellcode-selbst-erstellen.html)

Alexander 28. Aug 2002 20:54


Toolbutton im Quellcode selbst erstellen
 
Hallo
ich hab da mal eine Frage und zwar erstelle ich mir zur Laufzeit des Programms mittels Schleife mehrere Toolbuttons selber. Und jetzt meine Frage wie kann ich auf die verschieden Buttons zugreifen, um z.b. ein Onclickevent zu realisieren??
So erstelle ich mir die Buttons:
Code:
   for i:=1 to stringliste.Count do
     begin
       with TToolButton.Create(Self) do
        Parent := ToolBar14;
     end;
Vielen Dank schon mal für eure Antworten

Christian Seehase 28. Aug 2002 22:46

Moin Alexander,

falls vom Programmablauf her möglich könntest Du das Event ja schon bei der Erzeugung zuweisen.
Unter der Annahme, dass Du auch schon andere Toolbutton in Deinem Programm hast, nicht dynamisch erzeugt, könntest Du diesen dynamisch erzeugten einfach einen eindeutigen Namen verpassen, so dass Du über FindComponent auf diesen dann zugreifen kannst. Mal ein Beispiel:

Code:
[b]procedure[/b] TForm1.Button1Click(Sender: TObject);

[b]var[/b]
  i : integer;

[b]begin[/b]
  [b]for[/b] i := 0 [b]to[/b] Memo1.Lines.Count-1 [b]do[/b]
  [b]begin[/b]
    [b]with[/b] TToolButton.Create(Self) [b]do[/b]
    [b]begin[/b]
      Parent := ToolBar1;
      Name  := 'TBDYN_'+IntToStr(i);
    [b]end[/b];
  [b]end[/b];
  [b]for[/b] i := 0 [b]to[/b] Memo1.Lines.Count-1 [b]do[/b]
  [b]begin[/b]
    [b]if[/b] FindComponent('TBDYN_'+IntToStr(i)) <> [b]nil[/b] [b]then[/b]
    [b]begin[/b]
      TToolButton(FindComponent('TBDYN_'+IntToStr(i))).OnClick := ToolButton1Click;
    [b]end[/b];
  [b]end[/b];
[b]end[/b];

[b]procedure[/b] TForm1.ToolButton1Click(Sender: TObject);
[b]begin[/b]
  ShowMessage(TToolButton(Sender).Name);
[b]end[/b];
Oder Du sammelst die Button in einem array of TToolButton, und kannst dann über den Index auf diese zugreifen.

Alexander 29. Aug 2002 14:14

Danke du hast mir sehr weitergeholfen

Alexander 29. Aug 2002 16:24

Ich habe jetzt doch noch mal eine Frage und zwar wie lösche ich die Buttons wieder? Der Name soll aber noch benutzt werden können, um einen später erzeugten Button den Namen zu geben. Was muss ich da machen??
destroy geht nicht

Christian Seehase 29. Aug 2002 17:16

Moin Alexander,

ich weiss ja nicht, wie Du es gemacht hast, aber so würde es z.B. Funktionieren, alle wieder zu löschen.

Code:
var
  i     : integer;
  tbWork : TToolButton;


begin
  for i := 0 to Memo1.Lines.Count-1 do
  begin
    if FindComponent('TBDYN_'+IntToStr(i)) <> nil then
    begin
      tbWork := TToolButton(FindComponent('TBDYN_'+IntToStr(i)));
      FreeAndNil(tbWork);
    end;
  end;
end;

Alexander 29. Aug 2002 19:01

So ähnlich hatte ich das auch, nur habe nicht bedacht, dass er eine Komponente, die auf einer anderen Form steht, nicht finden kann.
Jetzt funktioniert es aber, danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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