Dynamiczne popup i onclick

0

Gdzie daję ciała?! Z pliku ini przy starcie programu dodaję do popup menu itemy i póbuję im przypisać onclick i wywala mi blad "Menu index out of range". Oto procedura :

procedure TForm1.wczytajpop;
var
i:integer;
ini:tinifile;
menu:tmenuitem;
s:tstringlist;
begin
pop.Items.Clear;
ini:=tinifile.Create(extractfilepath(application.ExeName)+'\sf.ini');
S:=tstringlist.Create;
ini.ReadSection('url',s);
for i:=0 to s.Count-1 do
begin
menu:=tmenuitem.Create(self);
menu.Caption:=ini.ReadString('url',inttostr(i),'');
pop.Items.Add(menu);
menu[i].OnClick:=menuklik;
end;
s.Free;
end;

0
procedure TForm1.wczytajpop;
var
i:integer;
ini:tinifile;
menu:tmenuitem;
s:tstringlist;
begin
pop.Items.Clear;
ini:=tinifile.Create(extractfilepath(application.ExeName)+'\sf.ini');
S:=tstringlist.Create;
ini.ReadSection('url',s);
for i:=0 to s.Count-1 do
begin
menu:=tmenuitem.Create(self);
menu.Caption:=ini.ReadString('url',inttostr(i),'');
pop.Items.Add(menu);

menu[i].OnClick:=menuklik;

end;
s.Free;
end;

Jeśli już przypisałeś nowo stworzony element menu do popupa, to zdarzenie onClick powinieneś przypisywać do pop.items[i].onClick a nie menu.onClick (a już na pewno nie menu[i].onClick, bo przecież to nie jest żadna tablica).

Przy okazji: nie widzę, żebyś gdzieś zwalniał menu.

0

Fantastycznie ! Dzięki za już i proszę o jeszcze [browar] . W procedurce onklick chcę aby uruchamiały się strony internetowe - caption na poszczególnych itemach.
W rewanżu za pomoc mogę wpisać Twoją :) .

Procedure menukli;
begin
shellexecute(handle,'open',...?...,nil,nil,sw_normal);
end.

0

Nie o to chodzi składnie shellexecute trochę znam, chodzi mi o to w jaki sposób wykryć który item został kliknięty.

0

Adres strony to będzie TMenuItem(Sender).Caption

0

Serdeczne dzięki wszystkim - wszystko działa tak jak chciałem. [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1