Affichage..?

Signaler
Messages postés
102
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
12 août 2005
-
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
-
bonjour,

j'ai une fiche que j'ouvre e ferme plusieurs fois de suite, en actualisant le contenus de celle-ci, le problème ce que j'ai un scrollbox que je n'arrive pas a effacer, c'est à dire qu'à chaque ouverture de ma fiche le contenu précédent du scrollbox apparait avec le nouveau contenu par dessus, comment peut ton effacer le contenu de scrollbox, celui-ci contient des radiogroup crée dynamiquement

3 réponses

Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Salut,

Si tu cherches à supprimer tous les éléments que tu as créés dynamiquement dans ton TScrollBox, voici une solution :

var
i : integer;
begin
// tu libères tous les composants enfant de ton TScrollBox.
for i := ScrollBox1.ComponentCount - 1 downto 0 do
ScrollBox1.Components[i].Free;
end;

Bonne Prog,

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Messages postés
102
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
12 août 2005

Ca ne marche pas , voici mon code ca peut peut-etre aider :

with AAnalyse^ do
begin
anc_top:=0;
for I:=0 to ListeQuestions.Count-1 do
begin
max_top:=0;
if (I mod 2 = 0) and (I>0) then
begin
for J:=I-2 to I-1 do
begin
if TRadioGroup(Liste_Critere.Items[J]).Height > max_top
then max_top := TRadioGroup(Liste_Critere.Items[J]).Height;
end;
anc_top := anc_top + max_top;
end;
AQuestion:=fiche_saisie.GetQuestion(I,AAnalyse);
Liste_Critere.Add(TRadioGroup.Create(Self));
with TRadioGroup(Liste_Critere.Items[Liste_Critere.Count-1]) do
begin
Parent := ScrollBox;
Caption := AQuestion^.Identite.Libelle;
Columns := 1;
Width := 297;
Left := 297*(I mod 2)+1;
Top := anc_top;
Font.Style := [fsBold];
Font.Size := 8;
end;
for J:=0 to AQuestion^.ListeReponses.Count-1 do
begin
AReponse:=fiche_saisie.GetReponse(J,AQuestion);
TRadioGroup(Liste_Critere.Items[Liste_Critere.Count-1]).Items.Add(AReponse^.Libelle);
end;
TRadioGroup(Liste_Critere.Items[Liste_Critere.Count-1]).Height := AQuestion^.ListeReponses.Count*30;
end;
end;


procedure Tfiche_saisie_critere.FormClose(Sender: TObject;
var Action: TCloseAction);
var
I: integer;
begin
inherited;
ScrollBox.ComponentCount
for I:=ScrollBox.ComponentCount-1 downto 0 do
ScrollBox.Components[I].Free;
Liste_Critere.Destroy;
end;
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Ce que propose Loulibier est valable à la condition que tes composants herite bien de la scrollbox.

Même s'il sont dessiné sur ta scrollbox, tes radiogroup sont pas forcement enfant de celle-ci.



Exemple:



With TRadioButton.Create(self) do

begin

Parent:= TaScrollBox;

end ;



Ici tes composants sont bien dessiné dans la scrollbox, mais ne sont pas ses enfants.



With TRadioButton.Create(TaScrollBox) do

begin

Parent: =TaScrollBox;

end;



La, ils sont bien enfants, donc le code de Loulibier peut marcher.



Sinon si tu veux une autre méthode tu parcours tout les composants et tu supprime en fonction du nom.

Var

Rg: TRadioGroup;

begin

For I:= Form1.ComponentCount Downto 0 do

begin

Rg: =TRadioGroup(Form1.FindComponent('Nom_Du_Composant'+IntToStr(I)));

If Rg<>nil then Rg.Free;

end;

end;



Et tu nomme tout tes composants comme ceci: Nom_Du_Composant1,Nom_Du_Composant2,...etc