Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi procedure-übergabe (https://www.delphipraxis.net/36538-procedure-uebergabe.html)

gekmihesg 21. Dez 2004 14:02


procedure-übergabe
 
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?

Stevie 21. Dez 2004 14:17

Re: procedure-übergabe
 
Delphi-Quellcode:
procedure AddPopupItem(text: string; OnClickProc: TNotifyEvent = nil);
{...}
AddPopupItem('"Abwesend"-Nachricht lesen', ReadNaClick);
Müsste auch richtig freigegeben werden...

gekmihesg 21. Dez 2004 14:30

Re: procedure-übergabe
 
ok danke.
also es bringt jetzt keine fehlermeldung mehr ;)
wenn ich in der procedure AddPopupItem a.click aufrufe (nachdem ich das onclick-event auf die übergebene procedure zugewiesen habe) funktioniert auch alles. nur wenn ich dann später auf den eintrag im popupmenu klicke tut sich garnix...
was soll das wieder?

gekmihesg 21. Dez 2004 14:35

Re: procedure-übergabe
 
habs grad selber rausgefunden. der code läuft natürlich weiter wenn das popup schon offen is. dadurch wird das item wieder freigegeben und is dann nurnoch in der anzeige vorhanden...

Stevie 21. Dez 2004 14:35

Re: procedure-übergabe
 
Uah, das Clear sollte am Anfang des Events stehen und nicht nach dem Popup!
Ein Popup ist imho nicht Modal, d.h., die Items werden gelöscht, bevor du nen MenuItem angeklickt hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz