![]() |
array Buttons und proceduren
Hallo erstmal,
Also ich hab folgendes Problem, dass ich nicht weiß wie man mehreren Buttons die während der Laufzeit erstellt werden verschiedene Procedure zuweisen kann. Die Buttons werden erstellt soviel wie ich gerade will und ich bekomm immer die Procedure einem Button zugewiesen aber wie ändere ich jetzt die Procedure die jetzt z.B: bei den letzten 3 Buttons ändern soll.
Delphi-Quellcode:
Mein Problem im Code findet ihr unter dem Kommentar "{PROBLEM PROBLEM PROBLEM PROBLEM}"
unit EigenesTrainingU;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,TagU; type TfrmEigenesTraining = class(TForm) Label1: TLabel; cbxATage: TComboBox; procedure cbxATageChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private btnTag : Array[1..7] of TButton; procedure btnTag1(Sender: TObject); {procedure btnTag2(Sender: TObject); procedure btnTag3(Sender: TObject); procedure btnTag4(Sender: TObject); procedure btnTag5(Sender: TObject); procedure btnTag6(Sender: TObject); procedure btnTag7(Sender: TObject);} { Private declarations } public { Public declarations } end; var frmEigenesTraining: TfrmEigenesTraining; Left,Top,Counter : Integer; Change : boolean; implementation uses EinloggenU; {$R *.DFM} procedure TfrmEigenesTraining.cbxATageChange(Sender: TObject); var I :integer; begin if Change = True then for I := 1 to Counter do begin btnTag[I].Destroy; Counter := 0; end; for I := 1 to strtoint(cbxATage.Items[cbxATage.ItemIndex]) do begin btnTag[I] := TButton.Create(self); btnTag[I].Parent := self; btnTag[I].Caption := 'Tag'; btnTag[I].Left := Left; btnTag[I].Top := Top; btnTag[I].Visible := True; Left := Left + 88; Change := True; Counter := Counter + 1; btnTag[I].OnClick := btnTag1 {PROBLEM PROBLEM PROBLEM PROBLEM} end; end; procedure TfrmEigenesTraining.FormCreate(Sender: TObject); begin Left := 250; Top := 250; Change := False; end; procedure TfrmEigenesTraining.FormClose(Sender: TObject; var Action: TCloseAction); begin frmLogin.show; end; procedure TfrmEigenesTraining.btnTag1(Sender: TObject); begin frmLogin.show; end; end. Schonmals danke im vorraus MFG Chris92 .A |
AW: array Buttons und proceduren
Hierfür existiert der Parameter Sender
Delphi-Quellcode:
procedure TfrmEigenesTraining.FormCreate(Sender: TObject);
begin Sender.Left := 250; Sender.Top := 250; Sender.Change := False; end; |
AW: array Buttons und proceduren
Sry versteh ich jetzt nicht. Kann auch sein dass ich meine Frage unklar gestellt habe also versuch ich es normal. Also mein Problem liegt darin dass ich nicht weis wie ich z.B: btnTag[I] := btnTag1 danach dann btnTag[I] := btnTag2 danach btnTag[I] := btnTag3 etc... hinkriege I ist der zähler der sich immer um 1 erhöht.
|
AW: array Buttons und proceduren
Du solltest immer die selbe Methode zuweisen und in ihr anhand des Senders entscheiden
|
AW: array Buttons und proceduren
Liste der Anhänge anzeigen (Anzahl: 1)
Mal ein kleines Beispiel, was Markus meint (da gibt's natürlich auch mehrere Möglichkeiten, das umzusetzen):
Delphi-Quellcode:
// ...
type TForm1 = class(TForm) CreateButtons: TButton; procedure MyBtnClick(Sender: TObject); procedure CreateButtonsClick(Sender: TObject); private { Private-Deklarationen } MyButtons: array[1..5] of TButton; // ... procedure TForm1.CreateButtonsClick(Sender: TObject); var i: Integer; begin for i := 1 to 5 do begin MyButtons[i] := TButton.Create(Application.MainForm); MyButtons[i]. Left := 200; MyButtons[i].Top := 20 + i * 30; MyButtons[i].Parent := Form1; MyButtons[i].Name := 'MyBtn' + IntToStr(i); MyButtons[i].Caption := MyButtons[i].Name; MyButtons[i].Tag := i; // für die Fallunterscheidung im OnClick MyButtons[i].OnClick := MyBtnClick; MyButtons[i].Show; end; end; procedure TForm1.MyBtnClick(Sender: TObject); begin case (Sender as TButton).Tag of 1: begin // Code fürs Button1-Onlick ShowMessage('Btn 1'); end; 2: begin // Code fürs Button2-Onlick ShowMessage('Btn 2'); end; 3: begin // Code fürs Button3-Onlick ShowMessage('Btn 3'); end; 4: begin // Code fürs Button4-Onlick ShowMessage('Btn 4'); end; 5: begin // Code fürs Button5-Onlick ShowMessage('Btn 5'); end; end; end; |
AW: array Buttons und proceduren
WOW vielen dank das ist genau das was ich gesucht habe, Dank euch Beiden.
Gut dass man jeden Tag was neues lernen kann ;) MFG Chris92 .A |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 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