Procedure 'repetée' [Résolu]

Signaler
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 avril 2008
-
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
-
bon voila mon probleme: a la place de ca:

procedure TForm1.Image1Click(Sender: TObject);

begin

image1.picture.loadfromfile(fichier);

end;
procedure TForm1.Image2Click(Sender: TObject);


begin


image2.picture.loadfromfile(fichier);


end;

procedure TForm1.Image3Click(Sender: TObject);


begin


image3.picture.loadfromfile(fichier);


end;

...


procedure TForm1.Image20Click(Sender: TObject);


begin


image20.picture.loadfromfile(fichier);


end;



jvoudrai un truc comme ca:

procedure TForm1.Image[i]Click(Sender: TObject);


begin


image[i].picture.loadfromfile(fichier);


end;






epita promo 2009®
-- karak --

19 réponses

Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Hello,
Il te suffit de creer une seule procedure nommée par exemple ChargerFichier en faisant comme suis :
1) Sélectionne tous les TImage qui doivent avoir cette procedure, si tu ne peux pas tous les selectionner en meme temps, selectionne en un maximum (meme un seul tant pis)
2) Dans l'inspecteur de propriétés, dans l'evenement OnClick, écrit "ChargerFichier" puis fait "Entreée" au clavier
2 bis) tu te retrouves dans ta nouvelle procedure
3) si tu n'avais pas tout sélectionné tes TImage, va maintenant sur chak TImage (ou chaque au groupe de TImage selectionné), et dans la procedure OnClick, déroule la liste pour trouver "ChargerFichier"
4) Voila la procedure a mettre :
Procedure ChargerFichier(Sender: TObject);
begin
TImage(Sender).Picture.LoadFromFile(Fichier);
end;

ton "Fichier" sera chargé dans le TImage cliqué.

Bone codage !



<HR>

N'oubliez pas de cliquer sur

lorsque cette réponse vous convient.
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Il veut recuperer le chemin du fichier chargé dans chaque TImage,
malheureusement le TImage n'a pas une bonne mémoire et ne se souviens
pas du chemin du fichier chargé... Il ne garde que le contenu graphique
(bmp, jmp etc).


Pour ça j'utiliserais une ruse, au chargement de ton image (mon code ci
dessus et repris ce dessous), tu lui mets (au TImage) le chemin du
fichier en hint (avec ShowHint := False; sur les TImage), ça donne :




Procedure ChargerFichier(Sender: TObject);
begin
TImage(Sender).Picture.LoadFromFile(Fichier);

TImage(Sender).Hint : = Fichier;
end;


apres ça tu pourras faire une boucle de test genre :




procedure TestTImage;

var

i: integer;

begin

for i:=0 to ComponentCount-1 do

begin

If Components[i] Is TImage do ShowMessage((
Components[i] as TImage).Hint
);



end;

end;



tu auras un ShowMessage avec le nom de fichier de chaque TImage, puisqu'il est contenu dans son Hint.



Corrigez moi si j'ai fait une erreur de syntaxe ! merci et bon codage

<hr>

N'oubliez pas de cliquer sur



lorsque cette réponse vous convient.
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Hello,



Essaye ca :




procedure TForm1.ImageClick(Sender: TObject);



begin

(Sender as TImage)
.Picture.LoadFromFile(Fichier);

end;


Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
jmp77 on a posté en meme temps

pour info :

(Sender as TImage).~

et

TImage(Sender).~

c'est la même chose, ne soyez pas déroutés, on a dit la même chose



<hr>

N'oubliez pas de cliquer sur



lorsque cette réponse vous convient.
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 avril 2008

Donc deja merci d'avoir resolu mon pb ca marche

epita promo 2009®
-- karak --
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Yes désolé Julio.

Mais je connaissais pas la syntaxe TImage(Sender) c'est plus court j'aime bien.


Merci pour cette info.


Bonne prog,
JMP77.
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 avril 2008

en faite maintenant jvoudrais pouvoir acceder a chaque image l'une
apres l'autre dans l'ordre(1 2 3 4 ... 400) et recuperer le nom du
fichier pour faire un test dessus. Donc il y aura pas moyen de faire
une boucle genre for i:=1 to 400 do




chemin:=image[i].picture.getnamepath



c assez pressé en faite
epita promo 2009®
-- karak --
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Heu je n'ai pas compris ta demande moi.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 avril 2008

en faite au lieu de

tablo[1]:=image1.picture.getnamepath;

tablo[2]:=image2.picture.getnamepath;

tablo[3]:=image3.picture.getnamepath;

...

...

tablo[400]:=image400.picture.getnamepath;


Jvoudrai un truc comme ca:

for i:=1 to 400 do

tablo[i]:=image[i].picture.getnamepath;





c clair la??
epita promo 2009®
-- karak --
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 avril 2008

procedure TestTImage;

var

i: integer;

begin

for i:=0 to ComponentCount-1 do

begin

If Components[i] Is TImage THEN ShowMessage((
Components[i] as TImage).Hint
);



end;

end;


epita promo 2009®
-- karak --
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Honte sur moi !! merci pour cette correction :)

sinon ça marche ? :D c ça qu'il te fallait ?
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 avril 2008

bah ca a l'air de marcher mais c'est ce quil me fallait en tout cas

epita promo 2009®
-- karak --
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Et ben JulioDelphi plus rapide que l'éclair lol. Je m'éloigne de mon pc
10 min et hop quand je reviens j'ai 10 mail c'est plus fort que le
tchat le forum delphifr lol.



J'aime beaucoup ta soluce en plus simple et efficace.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 avril 2008

bon encore un probleme

on peut pas faire ca???



Function convert(str:string):string;

begin

case str of

'' : result:='3'

'routeH.jpg': result:='0'

'routeV.jpg': result:='1'

'croix.jpg' : result:='2'

'herbe.jpg' : result:='3'

'Test.jpg' : result:='4'

'Tnord.jpg' : result:='5'

'Touest.jpg': result:='6'

'Tsud.jpg' : result:='7'

'coinNE.jpg': result:='8'

'coinNO.jpg': result:='9'

'coinSE.jpg': result:='A'

'coinSO.jpg': result:='B'

end;


epita promo 2009®
-- karak --
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
"Le pb semble
venir du RichComponent de firefox qui est incompatible qq part avec la
nouvelle version de la freetextbox. En attendant, copier/coller d'un lien pour
mettre un lien"

Source : Nix
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Ok merci JulioDelphi.



Je pensais bien que ca venait de firefox. Je n'ai pas pris le temps de tester avec IE voir si ca fonctionnait mieux.

Merci pour l'info.



Mais au fait je n'avais pas vu mais tu as pris du gallon pour cette nouvelle année "Admin CS".



Félicitation.


Et bonne année je te l'avais pas souhaité encore.


Bonne prog,
JMP77.
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Merci, bonnané a toi aussi

oui "Admin CS" ça me va bien au teint

tu as eu le temps de poster la bonne reponse avant moi tu vois que tu es rapide
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
lol

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
karakvb : j'ai une seul une chose a dire, puis apres stop les posts ici
Nous avons abordé le sujet du 'sender' qui m'a valu une "reponse acceptée", puis nous sommes revenus sur ça pour ya ajouter une ligne, le 'hint'. Mais ensuite nous sommes encore parti sur autre chose... La prochaine fois, coupe tes posts en plusieurs questions plutot que dans une seule. Et pour moi, je dirais ça plus tot afin d'eviter a le dire trop tard !