nakos91
Messages postés12Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention11 novembre 2010
-
23 janv. 2008 à 19:00
cs_Shai
Messages postés50Date d'inscriptionmardi 8 octobre 2002StatutMembreDernière intervention21 décembre 2011
-
24 janv. 2008 à 15:43
var but:array [1..27] of TButton;
begin
for i:=1 to 30 do
begin
but[i]:= TButton.Create(Self);
but[i].Parent := Form1;
but[i].Height:=75;
but[i].Width:=140;
but[i].Left := (16+140)*(i-1)+16;
but[i].Top := 25;
but[i].Visible := True;
BUT[i].Caption:='';
end;
end;
Bonsoir, j'ai créé des bouton de cette manière qui me convient très bien
par contre je n'arrive pas à gérer l'évènement onclick de chaque bouton qui doit être paramétrable avec la variable i.
Quelqu'un peut-il m'aider, j'ai bien vu des exemple dans le forum mais le boutons ne sont pas créés de la même manière.
nakos91
Messages postés12Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention11 novembre 2010 23 janv. 2008 à 20:22
La réponse ne me convient pas puisque le but est de lancer sur chaque bouton un procédure differente sinon il faut que je puisse récuperer l'indice du bouton pour faire varier le fonctionnalité de la procédure mais là aussi je ne sais pas comment faire ce que j'ai essayé ne fonctionne pas.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 23 janv. 2008 à 21:06
Salut,
premier problème :
var but:array [1..27] of TButton;
begin
for i:= 1 to 30 do
begin
but[i]: = TButton.Create(Self);
but[i].Parent := Form1;
but[i].Height:=75;
but[i].Width:=140;
but[i].Left := (16+140)*(i-1)+16;
but[i].Top := 25;
but[i].Visible := True;
BUT[i].Caption:='';
end;
end;
Sinon une solution serait de faire comme ceci :
begin
for i:=1 to 27 do
begin
but[i]:= TButton.Create(Self);
With But[I] do Begin
Parent := Form1;
Height:=75;
Width:=140;
Left := (16+140)*(i-1)+16;
Top := 25;
Visible := True;
Caption:='';
Tag := I;
OnClick := BClick;
End;
end;
end;
procedure TForm1.bclick(Sender: TObject);
begin
If (Sender Is TButton) Then
Case (Sender As TButton).Tag Of
1 : ShowMessage('Bouton 1 cliqué');
2 : ShowMessage('Bouton 2 cliqué');
cs_Shai
Messages postés50Date d'inscriptionmardi 8 octobre 2002StatutMembreDernière intervention21 décembre 2011 24 janv. 2008 à 15:43
Tu peux aussi faire une approche sans le Tag ... mais avec des méthodes publiés, avec un nom du genre DynClick1, DynClick2 ...
Labels contient la liste des libellés des boutons, cela peut venir d'un fichier ini ou bdr par exemple !
procedure CreateButtons(AOwner: TComponent; Parent: TWinControl; Labels: TStrings);
var
Ilbl: Integer;
ButtonCaption, ButtonMethodName: string;
ButtonMethod: TMethod;
Button: TButton;
begin
if Assigned(AOwner) and Assigned(Labels) then
begin
For I := 0 To Labels.Count - 1 do
begin
ButtonCaption := Labels;
ButtonMethodName := Format('DynClick%d', [I]);
ButtonMethod.Code := AOwner.MethodAddress(ButtonMethodName);
ButtonMethod.Data := AOwner;