utilisation du findComponent dans une fonction if? [delphi] - Delphi/Pascal - Programmation
Marsh Posté le 24-09-2003 à 17:31:23
Ouais poste ton code.
Sinon tu mets le résultat de FindComponent dans une variable, ça te permet de faire plusieurs actions dessus et de tester si il l'a bien trouvé.
PS: FindComponent, dans la majorité des cas, c'est un peu crado hein T'as plutôt intérêt à faire un tableau de TCheckbox (rempli dans le OnCreate par exemple), ça évite de devoir se baser sur les noms et de devoir faire des recherches inutiles à chaque accès.
Marsh Posté le 24-09-2003 à 20:15:14
antp a écrit : PS: FindComponent, dans la majorité des cas, c'est un peu crado hein T'as plutôt intérêt à faire un tableau de TCheckbox (rempli dans le OnCreate par exemple), ça évite de devoir se baser sur les noms et de devoir faire des recherches inutiles à chaque accès. |
tu devrais mettre ce paragraph en signature car je crois bien que ca fait la 3 eme fois que tu donnes cette astuce
@++
Marsh Posté le 24-09-2003 à 20:32:05
bah quoi, ça me fait mal au coeur de savoir tout ce que doit faire FindComponent à chaque appel
Marsh Posté le 24-09-2003 à 20:41:10
bah en fait .. le code j en ai pas trop =)
procedure TMain.Button4Click(Sender: TObject); |
voila a quoi ca devrais ressembler sans la boucle
et avec bah a part ce que j ai mis plus haut je sais po =)
antp a écrit :
|
pour ce que tu dis en second je sais pas si ce sera possible,
en gros (ce que je comprend ) c est creer une liste de tcheckbox dans la boucle et de lui donner ces caracteristiques apres? (comme l exemple qu il y a dans delphi ?
celui ci
procedure TForm1.Button1Click(Sender: TObject); |
mon probleme c est que ce que je fait la c est plutot une autre etape de mon logiciel.
la 1ere est de ce connecter a un site de recuperer des données et de les dispacher dans mes ptit Tedit & Tcheckbox .. =)
donc en fait mes Tcheckbox ont deja des noms donc si je fait comme cha ca va m en remettre par dessus , nan?
Marsh Posté le 24-09-2003 à 20:48:52
En private dans les attributs de la Form :
FCheckboxes: array[0..9] of TCheckbox; // si 10 checkbox
Dans le OnCreate de la Form :
FCheckboxes[0] := Checkbox0;
FCheckboxes[1] := Checkbox1;
//etc. jusqu'à 9 (c'est lourd mais on ne le fait qu'une fois)
Ensuite quand tu dois accéder à une Checkbox tu fais FCheckboxes[i] simplement
Donc tu peux l'utiliser dans tes boucles, et en plus tu peux faire
for i := Low(FCheckboxes) to High(FCheckboxes) pour ne pas devoir te soucier de la taille du tableau
En plus ici tu n'est pas obligé de donner des noms numérotés à tes composants (bon ici ça change peut-être rien).
et ton " if lecompo.checked:=true then " qui marche pas c'est peut-être parce que tu fais une assignation au lieu d'une comparaison
Marsh Posté le 24-09-2003 à 21:24:17
si lecompo était du type TCheckbox ça serait peut-être mieux alors... mais je pouvais pas deviner de quel type il était dans ton code
le OnCreate de la Form il est dans les Events, comme tous les autres events. Ou alors tu cliques 2x dans le fond de la Form, ça marche aussi (à moins que t'aies un panel dans le fond ou un truc du genre, évidemment).
Marsh Posté le 24-09-2003 à 22:03:15
cha marche =)
tiens tant qui a ce sujet comment on fait une pause dans une boucle?
j avais deja essayé y a longtemps en utilisant..
heu c etait sleep() je crois mais sa mettait tout le prog en pause
:-/
Marsh Posté le 24-09-2003 à 22:07:40
Si tu attends un événement :
while Paused do
Application.HandleMessage();
où Paused est pas exemple un booléen
Sinon bah ça dépend ce que tu veux, c'est pas assez précis ta question
Marsh Posté le 24-09-2003 à 22:24:41
ha ok
bah essaie ça :
for i := 0 to 50 do
begin
Sleep(100);
Application.HandleMessage;
end;
y a peut-être plus propre comme méthode mais bon
Marsh Posté le 25-09-2003 à 11:44:22
antp a écrit : bah quoi, ça me fait mal au coeur de savoir tout ce que doit faire FindComponent à chaque appel |
d ou mon post
Marsh Posté le 24-09-2003 à 16:15:42
comment faire pour inserer une fonction findcomponent dans une IF ?
ce que je veux faire en gros c est une boucle de 0 a 14 (ca, ca va )
a l interieur de laquel il y a un IF qui reuni les condition suivante
trouver un composant (Tcheckbox) d un certain nom complementé d une variable I
mais qu il ne selectionne que les boites qui sont cochés
ca fait 2plombe que je suis dessus et je sais pas (plus ) du tout quoi faire =)
j ai essayé (entre autre)
IF FindComponent (Format('checkbox%d', [i])) then
(le pb c est ou mettre '.checked:=true' et que cela fonctionne
mici de m eclairer =)
---------------
Feedback D.o.H - Seine Saint Denis - 93