Procedure 'repetée'

Résolu
karakvb Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 9 avril 2008 - 3 janv. 2005 à 19:15
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 4 janv. 2005 à 21:44
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

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
3 janv. 2005 à 22:24
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.
3
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
4 janv. 2005 à 14:22
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.
3
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
3 janv. 2005 à 22:25
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.
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
3 janv. 2005 à 23:04
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karakvb Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 9 avril 2008
3 janv. 2005 à 23:07
Donc deja merci d'avoir resolu mon pb ca marche

epita promo 2009®
-- karak --
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
4 janv. 2005 à 09:17
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.
0
karakvb Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 9 avril 2008
4 janv. 2005 à 14:06
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 --
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
4 janv. 2005 à 14:08
Heu je n'ai pas compris ta demande moi.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
karakvb Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 9 avril 2008
4 janv. 2005 à 14:18
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 --
0
karakvb Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 9 avril 2008
4 janv. 2005 à 14:27
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 --
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
4 janv. 2005 à 14:35
Honte sur moi !! merci pour cette correction :)

sinon ça marche ? :D c ça qu'il te fallait ?
0
karakvb Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 9 avril 2008
4 janv. 2005 à 14:36
bah ca a l'air de marcher mais c'est ce quil me fallait en tout cas

epita promo 2009®
-- karak --
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
4 janv. 2005 à 14:51
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.
0
karakvb Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 9 avril 2008
4 janv. 2005 à 14:57
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 --
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
4 janv. 2005 à 16:03
"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
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
4 janv. 2005 à 16:07
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.
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
4 janv. 2005 à 16:22
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
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
4 janv. 2005 à 16:26
lol

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
4 janv. 2005 à 21:44
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 !
0
Rejoignez-nous