Comment rapeler un evenement ds une autre fonction [Résolu]

Messages postés
16
Date d'inscription
samedi 14 mai 2005
Dernière intervention
18 février 2010
- - Dernière réponse : cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 4 juin 2005 à 14:13
Bonjour je voudrai savoir si quelqu un saurai comment faire pour rapeler un evenemen ds une autre fonction merci.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);


begin


with (Sender as TStringGrid) do
begin


if (ACol 0) or (ARow 0)


then
Canvas.Brush.Color := clBtnFace


else if (stringgrid1.Cells[0,arow] =' Dimanche')
then
begin
canvas.Brush.Color:=clblue;
end
else if stringgrid1.Cells[0,arow] =' Samedi'
then
canvas.Brush.Color:=clblue
else
Canvas.Brush.Color :=clgreen;
Canvas.TextRect(Rect, Rect.Left +5, Rect.Top+5 , cells[acol, arow]);
Canvas.FrameRect(Rect);


end;



end;
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
25
3
Merci
Euh...Florenth, je ne ne suis pa sur que passer nil en premier argument soit une bonne idée, d'autant plus que Creas utilise ce paramètre (with (Sender as TStringGrid) do) !

Il faut alors écrire :
procedure TForm1.MaProc;
begin
{ Evidemment, il faut fournir les parametres et là, c'est autre chose. }
StringGrid1DrawCell(StringGrid1,0,0,Rect(10,10,10,10),TGridDrawState(0));
end;


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 88 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Delphiprog
Messages postés
1105
Date d'inscription
dimanche 1 août 2004
Dernière intervention
17 août 2008
1
0
Merci
Salut,

Evenement ou pas evenement, cela reste quand même une méthode. Ne pas
oublier qu'il existe un pointeur de méthode publié pour chaque
evénement (qui apparaissent cependant dans la colonne evenements du
concepteur).



Donc, pour rappeler ton event tu as deux choix:

<hr size= "2" width="100%"> procedure TForm1.MaProc;

begin

{ Evidemment, il faut fournir les parametres et là, c'est autre chose. }

StringGrid1DrawCell(nil,0,0,Rect(10,10,10,10),TGridDrawState(0));

end;

<hr size ="2" width= "100%">ou

<hr size="2" width="100%"> procedure TForm1.MaProc;


begin


StringGrid1.OnDrawCell(nil,0,0,Rect(10,10,10,10),TGridDrawState(0));


end;


<hr size ="2" width="100%">@ ++

Florent
Commenter la réponse de florenth
Messages postés
1105
Date d'inscription
dimanche 1 août 2004
Dernière intervention
17 août 2008
1
0
Merci
Attention Delphiprog, les arguments que j'ai passé à la procédure ne
sont pas ceux qui doivent être retransmis en vrai. (c'était juste un
exemple; il fallait bien mettre quelque chose). J'auraid dû le préciser
c'est vrai.



Mais je ne peux pas deviner ce que Creas compte faire de cet évenement,
donc je ne peux pas fournir les bons parametres. C'est vrai ça,
qu'est-ce qu'il compte faire à rappeler une procédure d'évenement comme
OnDrawCell ? A moins qu'il veuille redessiner les cellules (dans ce cas
il fausrait plutot utiliser Refresh, Invalidate ou les autres).



Je disais donc, Creal, que tu ne doit pas appeler cet procédure en
utiisant les parametre que je t'ai fournis. C'est donc à toi de les
donner.



@ ++ Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
Commenter la réponse de florenth
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
25
0
Merci
En régle générale, il vaut mieux éviter de déclencher des évènements par des appels dans le code directement. Ca ne fait pas très propre.
Dans le cas présent, c'est sûr qu'un appel à la méthode Repaint, Refresh, Update, etc du composant StringGrid1 suffirait amplement.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<
Commenter la réponse de cs_Delphiprog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.