cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
14 déc. 2007 à 18:46
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
16 déc. 2007 à 23:27
Bonjour à tous,
Voilà, j'ai trouvé une bizarerie avec le référencement de With. Bien que j'ai contourné le problème en n'utilisant pas cette instruction, j'aime bien comprendre le pourquoi. Si qlq a une idée!!
J'ai des panels créés dynamiquement que je charge dans un tableau de Panel CurActivite. Je change la couleur du Panel concerné par la classique instruction qui fonctionne :
CurActivite[NumActivite].Color := TPanel(FindComponent('Panel'+IntToStr(NumSelect))).Color;
Mais comme j'ai d'autres réglages à effectuer sur les Panels du Tableau, j'utilise With et là ça plante à l'exécution :
Message d'erreur "...accès violation at xxx : read of adress..."
With CurActivite[NumActivite] do
begin
Color : = TPanel(FindComponent('Panel'+IntToStr(NumSelect+17))).Color;
...
end;
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 16 déc. 2007 à 23:27
salut,
un conseil en passant,
comme tu crée tes TPanel dynamiquement, pourquoi ne pas garder une référence dans un Tcomponentlist? cela t'éviterais d'avoir à utiliser le findcomponent qui est très loin d'être permformant...
aussi, suivant comment et pourquoi tu génére tes panels dynamiquement, tu peux garder la réf du panel dans l'object qui l'as généré (cad l'objet qui est réprésenté par le panel).
bon code!
Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 14 déc. 2007 à 20:48
merci jappe ;)
Attention notez bien ce qui va suivre, je vais pas le dire souvent :
C'est un avantage
de VB su Delphi, en VB, il faut prefixer d'un point les elements du with. par exemple :
with monpanel do
.Color := findcomponent
"." devant color => color du with
pas de "." devant le findcomponent => methode de l'objet implicite (self?)
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 14 déc. 2007 à 22:08
Merci à tous!
@Cirec, bien vu! J'avais effectivemlent inversé, Mdr, c'est quand même pas Alzheimer!
@ Guillemouze : intéressant la référence à self
@ Japee : toujours pour la simplification de lecture! Tu devrais écrire un bouquin pour débutant
@ Cari : Qd même ds certains cas, ça allège! Mais j'ai remarqué aussi que dans d'autres effectivement on ne sait plus à qui appartient la propriété!
Bien à vous!
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 16 déc. 2007 à 11:26
Ah, ça y est!
J'avais un problème avec mon éditeur.
Merci donc Foxi pour ce code très intéressant et simplificateur d'écriture de la série FindComponent...
A+
Jean_Jean