Recent

Author Topic: [RESOLVED] dynamically created menu and OnClick event  (Read 9602 times)

rise_nak

  • New Member
  • *
  • Posts: 16
[RESOLVED] dynamically created menu and OnClick event
« on: June 19, 2011, 06:34:56 pm »
Hello!
I created dynamically a popup menu. I have to assign onclick event to each element (procedure UkryjLubPokazKolumne). And here is a problem during compilation I got an error 'Incompatible types: got "untyped" expected "<procedure variable type of procedure(TObject) of object;Register>"'

Code: [Select]
procedure TMainForm.GridTitleMenuPopup(Sender: TObject);
var
  KolNazwa : TMenuItem;
  i        : Integer;
begin
  (Sender as TPopupMenu).Items.Clear;
  for i:=0 to DBGridDzien.Columns.Count-1 do begin
    KolNazwa := TMenuItem.Create(Self);
    KolNazwa.Caption := DBGridDzien.Columns[i].Title.Caption;         
    if DBGridDzien.Columns[i].Visible then
       KolNazwa.Checked := True;                                             
    KolNazwa.OnClick := UkryjLubPokazKolumne(KolNazwa);              <-- error
    (Sender as TPopupMenu).Items.Add(KolNazwa);                         
  end;
end;

procedure TMainForm.UkryjLubPokazKolumne(Sender: TObject);
var
  NazwaKolumny : string;
  i            : integer;
begin                                                         
  NazwaKolumny := (Sender as TMenuItem).Caption;
  for i:=0 to DBGridDzien.Columns.Count-1 do
    if DBGridDzien.Columns[i].Title.Caption=NazwaKolumny then
      DBGridDzien.Columns[i].Visible := not DBGridDzien.Columns[i].Visible;
end; 

I was trying put there procedure name without arguments, like in ObjectInspector
Code: [Select]
KolNazwa.OnClick := UkryjLubPokazKolumne; 

but then I got an error Wrong number of parameters specified for call to "UkryjLubPokazKolumne"   
What an I doing wrong?         
« Last Edit: June 19, 2011, 06:46:36 pm by rise_nak »

typo

  • Hero Member
  • *****
  • Posts: 3051
Re: dynamically created menu and OnClick event
« Reply #1 on: June 19, 2011, 06:37:23 pm »
Use:

Code: [Select]
KolNazwa.OnClick := @UkryjLubPokazKolumne(KolNazwa);

rise_nak

  • New Member
  • *
  • Posts: 16
Re: dynamically created menu and OnClick event
« Reply #2 on: June 19, 2011, 06:46:04 pm »
I changed it to:

Code: [Select]
KolNazwa.OnClick := @UkryjLubPokazKolumne;

and it's working! Thank you very much for help!

 

TinyPortal © 2005-2018