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>"'
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
KolNazwa.OnClick := UkryjLubPokazKolumne;
but then I got an error Wrong number of parameters specified for call to "UkryjLubPokazKolumne"
What an I doing wrong?