23. april 2003 - 08:14Der er
18 kommentarer og 1 løsning
popup menu og ini filer
Hej
Jeg bruger denne kode til at oprette et menu item i min popup menu:
var M: TTBItem; begin M := TTBItem.Create(Self); M.Caption := 'HE HE'; M.OnClick := start; TBSubmenuItem1.Add(M);
Men jeg vil gerne have at den skal oprette en til hver post der er under [List] i min ini fil. Hvordan gør jeg det?? Jeg har en ini fil der ser sådan her ud: myini.ini [List] hej=dav
Så skal den sætte 'hej' ind i caption og dav ind i onclick. How do i do that?
Det er ikke et spørgsmål om hvad rutinen hedder, dit "Dav" Kunne f.eks. være en rutine der hedder InitialiseData eller hvad, men det giver stadig ikke mening at have rutinen som streng ind i din inifil. Du kan læse navnet ind, men du skal stadig i koden skrive noget som:
var sRutineName : string;
sRutineName := readString(blablabla...);
OnClick := sRutineName, men det vil give en kompileringsfejl. Du kan derimod have en funktion i dit delphi program der mapper en streng ("dav") over til en rutinepointer (dav).
OnClick := GetProcedure(sRutineName);
Funktionen GetProcedure vil jeg overlade til dig selv.
Den skal så oprette knapper på den menu med alle dem der er i inifilen under LIST, og deres onclick skal jo så vare den der med shellapi hvor at den så indsætter valuen fra ini filen.
var menu:TMenuitem; i:integer; IniFile : TIniFile; s : TStringlist; begin s := Tstringlist.Create;
IniFile := TIniFile.create(ExtractFilePath(ParamStr(0))+'programs.ini'); PopupMenu1.Items.Clear; inifile.ReadSection('List',s); for I := 0 to s.Count -1 do begin menu := TMenuitem.Create(PopupMenu1); menu.Caption := s[i]; menu.OnClick := test; PopupMenu1.Items.Add(menu); end; s.Free; //menu.Free; end;
Prøv lige at udskrive værdien af s. Den drillede også mig i går. På en almindelige popupmenu er der en ambersand(&) før teksten. Der for blev jeg nødt til at copy fra position 2 t := copy((Sender as TTBItem).Caption,2 PRØV AT ÆNDRE VÆRDIEN 2 ------------------------------------------------------------- t := copy((Sender as TTBItem).Caption,2,length((Sender as TTBItem).Caption)); begin IniFile := TIniFile.create(ExtractFilePath(ParamStr(0))+'gamecontrole2.ini'); S := IniFile.ReadString('List',t,'');
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.