hallo
ich versuche einem popupmenü mit einer procedure ein item zuzuordnen. wahlweise soll man halt auch noch gleich eine onClick procedure übergeben können.
hier mal der code:
Delphi-Quellcode:
procedure TForm1.ReadNaClick(Sender: TObject);
begin
{ ... }
end;
procedure TForm1.userlvMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure AddPopupItem(text: string; ocladdr: Pointer = nil);
var a: TMenuItem;
begin
a := TMenuItem.Create(userlvpop);
a.Caption := text;
if ocladdr <> nil then
a.OnClick := TNotifyEvent(ocladdr^);
userlvpop.Items.Add(a);
end;
var user: TUser;
begin
if (userlv.Selected = nil) or (button <> mbRight) then exit;
user := TUser(users.Items[indexbyname(userlv.Selected.Caption)]);
AddPopupItem(user.ip);
if user.status = stat_away then
begin
AddPopupItem('-');
AddPopupItem('"Abwesend"-Nachricht lesen',@ReadNaClick); // fehler: Varible erforderlich
end;
userlvpop.Popup(mouse.CursorPos.X,mouse.CursorPos.Y);
userlvpop.Items.Clear;
end;
und dann noch ne frage: wenn ich userlvpop.Items.Clear aufrufe werden die items dann richtig freigegeben?
achja
was mache ich in dem code falsch?