Salut à tous
jvous donne un pti exemple de code, ça devrai vous aider à mieux comprendre ;-)
ps: on a bien compris ton message Zaydoun_391, faut pas écouter tous ces gens
qui pensent tout savoir et ne font que faire des reproches (quoi je suis en train de faire pareil ?)
oui et alors ? Moi je sais tout :o) la preuve:
// bon la procedure CreationBoutons n'est ici qu'un exemple, Zay tu peux garder la tienne qui doit être bien écrite ;-)
// j'explique juste ici à quoi servent certaines propriétés et paramètres
procedure TForm1.Creationboutons;
var MonButton: TButton;
begin
LibererBoutons; // on appel avant la libération au cas ou on reviens dessus plusieurs fois (voir code plus bas)
{ un premier bouton }
MonButton := TButton.Create(nil); // dans le create tu as un paramètre que l'on nomme le aowner
MonButton.Caption:= 'Ok'; // si tu place le aowner à nil, cela signifie que c'est toi qui va libérer
MonButton.Left := 10; // ton objet. Dans le cas contraire si par exemple tu met Self
MonButton.Top := 10; // ton objet sera libéré en même temps que ton self (donc ici TForm1)
MonButton.Parent:= MonPanel; // la faut mettre le bon parent (c'est à dire l'objet qui va recevoir ton bouton
MonButton.Visible:= True; // si tu veux qu'il apparaisse sur ton TForm, tu peux mettre Self)
MonButton.ModalResult:= mrOk;
MonButton.Default:= True;
MonButton := TButton.Create(nil);
MonButton.Caption:= 'Annuler';
MonButton.Left := 10;
MonButton.Top := 100;
MonButton.Parent:= MonPanel;
MonButton.Visible:= True;
MonButton.ModalResult:= mrCancel;
MonButton.Cancel:= True;
// on remarque ici que j'ai pas mis de nom à mes objets, c'est pas obligé si on veut pas y accéder directement
// sinon on faut juste s'assurer que les noms sont différent pour chaque bouton créé (perso j'utilise un compteur)
end;
// la fameuse procédure qui interresse tout le monde
procedure TForm1.Libererboutons;
var i: Integer;
MButton: TButton;
begin
i:= 0;
repeat
if MonPanel.Components[i] is TButton then // ici je parcourt MonPanel, si tu as mis tes boutons sur le TForm, il suffit d'enlever
begin // MonPanel. dans le source de cette méthode
MButton:= TButton(MonPanel.Components[i]);
FreeAndNil(MButton); // il vaut mieux utiliser FreeAndNil qui libère correctement un objet et le met à nil plutôt qu'un simple free
end
else Inc(i);
until (MonPanel.ComponentCount=0) or (i=MonPanel.ComponentCount);
end;
voila, j'espère que mon code aidera tout le monde, on peut l'adapter bien évidemment, des ptis malins viendront surrement critiquer
ce source, je vais pas perdre mon temps à faire un court sur la création et la libération des composants, je donne ici un pti exemple
ya plein de méthodes différentes, tout dépende de ce qu'on veut faire, de comment on le fait. On peut aussi utiliser les noms des
composants comme le dit judicieusement Mauricio
bon courage à tous

Keneda, la fusée rouge
