cs_apz
Messages postés281Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention11 avril 2013
-
27 août 2002 à 21:23
cs_apz
Messages postés281Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention11 avril 2013
-
1 sept. 2002 à 13:45
Salut,
en executant ce code j'ai eu le code d'ereur suivant :
Types incompatibles : 'TnotifyEvent' et 'procedure, untyped pointer or untyped parameter'
var
Form1: TForm1;
.
.
.
.
implementation
{$R *.DFM}
procedure TForm1.TriClick(sender:TObject);
begin
with Sender as TMenuItem do
begin
Table1.IndexFieldNames:=Form1.DBGrid1.Columns.Items[tag].FieldName;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
PopUpItems[i].OnClick := TriClick(sender);
// une erreur :
// Types incompatibles : 'TnotifyEvent' et 'procedure, untyped pointer or untyped parameter'
end;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 27 août 2002 à 22:49
Aie, aie, aie...
1/- Dans ButtonClick, tu déclares une variable i, non utilisable.
2/- PopUpItems : on n'est pas en VB ici, les composants TMenuItem ne sont pas stockés dans un tableau. Tu dois donc utiliser l'identifiant de l'élément de menu auquel tu veux affecter une procédure quand on clique dessus :
MonMenItem1.OnClick :=
...
3/- Quand tu affectes une méthode pour répondre à un évènement, tu n'as pas besoin de préciser le paramètre Sender :
MonMenItem1.OnClick := TriClick;
Mais, honnêtement, au vu du ce que tu veux faire, pourquoi ne pas écrire tout simplement dans l'évènement OnClick du bouton Button1 :
procedure TForm1.TriClick(Sender: TObject);
begin
with TControl(Sender) do
begin
ShowMessage(ClassName + ' ' + IntToStr(Tag));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TriClick(Sender);
end;
Essaie ce bout de code et tu comprendras.
Mais le mieux reste d'affecter la même procédure quand tu cliques sur le bouton ou sur un élément de menu (gestionnaire partagé).
cs_apz
Messages postés281Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention11 avril 2013 1 sept. 2002 à 13:45
Salut delphiprog,
merci pour ta reponse.
oui j'ai compris que TControl controle l'objet clique et dans notre cas les TMenuItem.
pour la variable I est indispenable pour attribué le caption du TMenuItem
PopupItem.Caption:=DBGrid1.Colums.Items.FielsNames;
et elle n'est pas disponible pour la creation des Items du PopupMenu :)