Comment rapeler un evenement ds une autre fonction

Résolu
cs_creas Messages postés 16 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 18 février 2010 - 3 juin 2005 à 14:22
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre 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;

4 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
4 juin 2005 à 08:55
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.
<
3
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
3 juin 2005 à 20:59
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
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
4 juin 2005 à 13:27
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
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
4 juin 2005 à 14:13
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.
<
0
Rejoignez-nous