Affichage..?

XgaletteX Messages postés 102 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 12 août 2005 - 25 juil. 2005 à 17:49
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 - 26 juil. 2005 à 13:24
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

Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
25 juil. 2005 à 18:00
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.
0
XgaletteX Messages postés 102 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 12 août 2005
26 juil. 2005 à 10:02
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;
0
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
26 juil. 2005 à 13:24
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
0
Rejoignez-nous