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

cs_creas 16 Messages postés samedi 14 mai 2005Date d'inscription 18 février 2010 Dernière intervention - 3 juin 2005 à 14:22 - Dernière réponse : cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention
- 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

cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 4 juin 2005 à 08:55
+3
Utile
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.
<
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Delphiprog
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 3 juin 2005 à 20:59
0
Utile
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
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 4 juin 2005 à 13:27
0
Utile
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
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 4 juin 2005 à 14:13
0
Utile
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.