DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 2009
-
27 mars 2006 à 10:57
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 2009
-
27 mars 2006 à 22:05
'lut bande de jeunes :)
Question : est il possible de créer un evenement (genre OnChange) sur une variable globale, dans mon cas un booléen, dont la portée concerne une form paticulière. ?
En gros, j'ai un bool : reverse, en var globale. Quand "reverse" change,
pour la form 1 faut faire ça ça et ça,
pour la form 2, ce truc ci, ce machin là et surtout ça,
.....
Pour l'instant j'ai un timer par form qui verifie l'etat de ma variable, mais ca fait n timers, et à moins de mettre un intervalle tres court (beaucoup de tours de boucle pour rien), ca me crée des temps de latence ( sans parler de la "précision" des timers.....). Et commander chaque truc a faire directement sans passer par cette variable, c'est mal pratique, dans le sens où je souhaite éviter que mes forms se connaissent (ref dans uses).
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 27 mars 2006 à 20:00
Alors non, on ne peu pas faire cela comme ça.
quand on veut declancher une evenement il faut le declancher a la modification, exemple :
Var
MonBool : boolean = false;
procedure DoMonBoolChange;
begin
case MonBool of
true : begin
Form1...
Form2...
end;
false : begin
Form1...
Form2...
end;
end;
function ChangeValueBool(const V : Boolean) : boolean;
begin
if MonBool <> V then begin
MonBool := V;
DoMonBoolChange;
end;
result := MonBool;
end;
il suffirat ensuite d'affecter une valeur a MonBool avec la fonction ChangeValueBool dans les methodes pour declancher le pseudo-evenement DoMonBoolChange...
et cela sans timer.
exemple, ici on verifie que les entrées d'un tableau d'entier sont bien superieur a 25,
si ce n'est pas le cas on modifie MonBool en consequence et on ajuste la valeur
de l'entrée a 25 :
begin
x := 0;
while x < 100 do begin
if not ChangeValueBool((Table[X] >= 25)) then Table[x] := 25;
inc(x);
end;
end;
la modification de MonBool declanche l'evenement et on peu adapter le programme en consequence.
(exemple bidon)
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 27 mars 2006 à 22:05
Ah. donc pas de bol je vais me retrouver avec une form qui connait forcément les autres, pas glop. Je vais me dépatouiller avec mes différents timers. C'est peut-etre pas un mal, ca va me permettre un filtrage anti rebond. Bon ben a qqch malheur est bon.