GTI version af: Tpopupmenu, dynamisk item.add()
Jeg har to forms: form1 og form2.form1 creater form2 af typen Tform2.. dvs. at form1 kan lave et vilkårligt antal af form2.
på form2 har jeg en popupmenu som jeg gerne vil tillægge punkter i dynamisk.
lige gør jeg det med:
procedure TForm1.AddMenu(var popupmenu: Tpopupmenu);
var
m1: TMenuItem;
begin
m1 := TMenuItem.Create(self);
m1.Caption := '1111';
m1.OnClick := OnClickProcedure; //TNotifyEvent(trytry);
popupmenu.Items.Add(m1);
end;
procedure TForm1.OnClickProcedure(sender: TObject);
begin
showmessage('hjesa v1');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
child: TForm2;
begin
child := TForm2.Create(Application);
with child do
begin
Addmenu(child.PopupMenu1, OnClickProcedure);
end;
end;
okey så langt så godt.!.. men denne fremgangsfacon har et kæmpe stort problem - hvis nu jeg gerne vil have en OnClickProcedure2 eller for den sags skyld OnClickProcedure3..4..5 osv.. så bliver jeg nød til at lave en addmenu til hvér enkelt procedure eller også et eller andet klyt med at lave en "case on"/if for at tjekke på en værdi for at finde den korrekte procedure der skal kaldes. Men det resulterer i at hver gang jeg laver et nyt punkt til popupmenuén så skal jeg lave rettelser flere steder for at få det til at fungere.
Kan det ikke gøre nemmere?
.. kan man f.eks. ikke parse navnet på proceduren som skal kaldes af addmenu? f.eks. ved
Addmenu(child.PopupMenu1, OnClickProcedure);
procedure TForm1.AddMenu(var popupmenu: Tpopupmenu; pressting: TProcedure);
var
m1, m2: TMenuItem;
begin
m1 := TMenuItem.Create(self);
m1.Caption := '1111';
m1.OnClick := pressting; //TNotifyEvent(trytry);
popupmenu.Items.Add(m1);
end;
...eller er der et andet alternativ? plz help..
