Zaydoun_391
Messages postés10Date d'inscriptionmercredi 30 novembre 2005StatutMembreDernière intervention28 novembre 2007
-
23 nov. 2007 à 01:48
cs_Keneda
Messages postés32Date d'inscriptionjeudi 8 mai 2003StatutMembreDernière intervention 3 octobre 2012
-
29 nov. 2007 à 15:59
salut a tous
mon probléme ce de savoir comment je fé la libération d un ensemble des bouton ke jé crée dynamiquement c a dire je prend mon source un fichié ini pour sauvgardé les paramétre du bouton et lorsque je clik sur un bouton je veux ke tous boutons son libéré pour ke je puisse crée des autre par exemple lorsque je utilise (sender as Tbutton).free alors il libére seulement le bouton ke jé cliké sur elle mé dans mon cas je veux ke la libération se fé pour tout les boutons pour ke je puisse crée des autre
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 23 nov. 2007 à 09:14
salut,
tu sais, si tu utilises un minimum de ponctuation (et évite les fautes volontaires de français), on aurrait pas à relire ta question deux fois pour la comprendre.
pour libérer un object: .free
donc, la seul difficulté avec les object dynamique: il faut garder une référence des objects que tu crée. (genre un TComponentList)
Il me semble que plusieurs personnes t'on déjà fait remarquer que ce genre de problème trouvent facilement solution grâce à une recherche sur le forum/code de codes-sources !
bonne recherches,
Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 28 nov. 2007 à 12:49
Salut,
gráce à l' aide de Delphi sur la méthode Create, il te donne le link pour la méthode ".free".
T' aurais perdu moins de temps que de poster sur le forum!
Même remarque que Loda: t' es pas sur mobile ici, fait un effort de rédaction!!!
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 28 nov. 2007 à 17:07
Après avoir relu et relu ...et .. relu ta question j' ai enfin compris ce que tu voulais !!!
En créant tes boutons donnentt leur un nom genre BoutonCustom1, BoutonCustom2 etc ...
Puis pour les detruitre utilise ceci:
TButton(FindComponent('BoutonCustom1')).Free;
TButton(FindComponent('BoutonCustom2')).Free;
TButton(FindComponent('BoutonCustom2')).Free;
etc ...
L' autre solution aurait été de les créer sur un TPanel par exemple puis de détruire tous les compos sur le panel mais cette solution fonctionne bien.
cs_Keneda
Messages postés32Date d'inscriptionjeudi 8 mai 2003StatutMembreDernière intervention 3 octobre 2012 29 nov. 2007 à 15:59
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;
// 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