Passage du nom d'objet sur une fonction [Résolu]

Signaler
Messages postés
17
Date d'inscription
mercredi 6 mars 2002
Statut
Membre
Dernière intervention
5 décembre 2006
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
Hello la foule,


j'aimerai simplifier le bout de code ce-dessous par une fonction, je pensais passer en paramètre le nom de l'image exemple "Ouverture(img1_v);" mais ensuite je ne sais pas comment récupérer ceci, je le sais en coldfusion  mais délphi je sèche .
Quelqu'un peu m'aider ?


    begin
          img1_v.Visible:=false;
          img1_o.Visible:=true;
    end;
    begin
          img2_v.Visible:=false;
          img2_o.Visible:=true;
    end;
    begin
          img3_v.Visible:=false;
          img3_o.Visible:=true;
    end;
    etc etc....

3 réponses

Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Bonjour


Fais une boucle :

For i := 1 to [nbre d'images] do begin

    TImage(MyForm.FindComponent('img' + IntToStr(i) + '_v')).visible := False;

    TImage(MyForm.FindComponent('img' + IntToStr(i) + '_o')).visible := True;

end;


Attention :

- A la casse des noms d'objets

- "MyForm" n'est pas obligatoire mais conseillé (si tu places ta boucle dans un "with" par exemple)

Simon
Messages postés
17
Date d'inscription
mercredi 6 mars 2002
Statut
Membre
Dernière intervention
5 décembre 2006

Nickel, c'est ce qu'il me faillait !
Merci beaucoup pour cette réponse rapide.
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
35
tu peu egalement faire ceci :

var
  Imgs : array[0..5] of TImage;

procedure InitVisibility;

var N : integer;

begin

  for N := 0 to 2 do begin

      Imgs[N].Visible   := true;


      Imgs[N+3].Visible := false;

  end;

end;


procedure ReverseVisibility;

var N : integer;

begin
  for N := 0 to 5 do
      Imgs[N].Visible := not Imgs[N].Visible;

end;

procedure SetVisibilityOf(const Index :  integer) ;
begin
  case Index of
    0..2 : begin Imgs[index].Visible := true; Imgs[index+3].Visible := false; end;
    3..5 : begin Imgs[index].Visible := true; Imgs[index-3].Visible := false; end;
  end;
end;

procedure Form1.FormCreate(Sender : TObject);
begin
  Imgs[0] := Img1_v;    Imgs[3] := Img1_o;
  Imgs[1] := Img2_v;    Imgs[4] := Img2_o;
  Imgs[2] := Img3_v;    Imgs[5] := Img3_o;
  InitVisibility;
end;

<hr size="2" width="100%" />Croc (click me)