Dynamisches Popupmenü erzeugen, OnClick definieren.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Dynamisches Popupmenü erzeugen, OnClick definieren.

Beitrag von _X_ »

Ich benutze folgenden Code um ein Popupmenü zur Laufzeit zu erstellen.

Code: Alles auswählen

procedure load_traymenu();
var I: integer;
    NewTrayItem: TMenuItem;
begin
  TrayMenu.Items.Clear;
   for I:=0 to ItemBox.Count-1 do begin
      NewTrayItem := TMenuItem.Create(self);
      NewTrayItem.Caption := ItemBox.Items[I];
      NewTrayItem.Tag     := I;
      NewTrayItem.OnClick := TrayMenuClick;
   end;
end;

Code: Alles auswählen

NewTrayItem.OnClick := TrayMenuClick;
// Hier meldet der Kompiler aber   
// Error: Wrong number of parameters specified for call to "TrayMenuClick"
// Eigentlich verständlich, aber wenn ich das Selbe im Objektinspektor einstelle funktioniert es ja.
// Was mach ich Falsch?
mfg _X_

Lord Horazont
Beiträge: 13
Registriert: Mi 4. Feb 2009, 11:27
OS, Lazarus, FPC: Linux (L: 0.9.29; FPC: 2.2.4)
CPU-Target: 64-bit

Re: Dynamisches Popupmenü erzeugen, OnClick definieren.

Beitrag von Lord Horazont »

FreePascal will ein @ vor dem Methodennamen, wenn du die Methode einem Event zuweist. Also anstatt deinem Code dann:

Code: Alles auswählen

NewTrayItem.OnClick := @TrayMenuClick;
Gruß Lord Horazont

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Dynamisches Popupmenü erzeugen, OnClick definieren.

Beitrag von _X_ »

Danke.
Bei deinem Package Problem kann ich dir leider nicht helfen.

mfg _X_

Antworten