Vec 3 (tri) sata pokusavam, ali bezuspesno, da napravim sledece. Imam neki dir, recimo "C:\test". U njemu se nalaze neki fajlovi. Ja zelim da napravim meni u kome ce biti izlistani svi fajlovi iz tog direktorijuma, a posto se klikne na stavku tako dobijenog menija potrebno je da se pokrene taj fajl.
Meni mora da sadrzi imena fajlova, ali bez ekstenzija. Pogadjate, pravim MLS (MultiLanguageSupport), ali umesto imena fajlova u meniju dobijam kuke i kvake (pa tako i po pokretanju tih fajlova pokrecem unknown fajlove) iako sam kroz debuger video da se sve upisuje na svoje mesto ... HELP.
Evo ga i moj kod ...
Code:
...
aJezik: TAction;
FLB : TFileListBox;
LangMenu: TActionClientItem; // root menija u kome vrsim kreiranje stavki
...
procedure TfrmMain.FormCreate(Sender: TObject);
var
aJezikAnc: TAction;
aci: TActionClientItem;
i: integer;
jezik: string;
begin
inherited;
...
if Assigned(LangMenu) then
begin
FLB.Directory := programPath + 'lang\';
LangMenu.Items.Clear;
if FLB.Items.Count > 0 then
for i := 0 to FLB.Items.Count - 1 do
begin
aJezikAnc := TAction.Create(self);
aJezikAnc.Assign(aJezik);
aJezikAnc.Tag := 5;
jezik := Copy(flb.items[i], 1, length(flb.items[i]) - 4);
aJezikAnc.Caption := jezik;
aci := LangMenu.Items.Add;
aci.Action := aJezikAnc;
aci.Caption := jezik;
end;
end;
end;
procedure TfrmMain.aJezikExecute(Sender: TObject);
var act: TAction;
begin
inherited;
act := TAction(Sender);
ShowMessage(act.Caption);
// *****************
// SHOWMESSAGE ispisuje kuke i kvake!!!
end;
...
aJezik: TAction;
FLB : TFileListBox;
LangMenu: TActionClientItem; // root menija u kome vrsim kreiranje stavki
...
procedure TfrmMain.FormCreate(Sender: TObject);
var
aJezikAnc: TAction;
aci: TActionClientItem;
i: integer;
jezik: string;
begin
inherited;
...
if Assigned(LangMenu) then
begin
FLB.Directory := programPath + 'lang\';
LangMenu.Items.Clear;
if FLB.Items.Count > 0 then
for i := 0 to FLB.Items.Count - 1 do
begin
aJezikAnc := TAction.Create(self);
aJezikAnc.Assign(aJezik);
aJezikAnc.Tag := 5;
jezik := Copy(flb.items[i], 1, length(flb.items[i]) - 4);
aJezikAnc.Caption := jezik;
aci := LangMenu.Items.Add;
aci.Action := aJezikAnc;
aci.Caption := jezik;
end;
end;
end;
procedure TfrmMain.aJezikExecute(Sender: TObject);
var act: TAction;
begin
inherited;
act := TAction(Sender);
ShowMessage(act.Caption);
// *****************
// SHOWMESSAGE ispisuje kuke i kvake!!!
end;
Sve sto je besmislenije, utoliko je bolje.