Есть два листбокса, в первом создаются пункты, во втором подпункты первого. Нужно сделать чтобы при выделении пункта листбокса1 подгружался список в листбокс2 относящийся именно к этому пункту.
Скажем:
Listbox1 ----------------Listbox2
Литеоратура ----------------Книги
----------------Журналы
----------------Газеты
Документы ---------------Шаблоны
---------------Накладные
ну и тд.
Часть сделал что касаемо листбокса1- сохранение/чтение, а вот со второй частью пока тупик.
Код:
procedure LoadListbox1Listbox2(const Groupname:string);
procedure TForm1.FormCreate(Sender: TObject);
var
llist:tstringlist;
i:integer;
begin
llist:=tstringlist.create;
llist.Clear;
Listbox1.Clear;
Edit1.Clear;
try
if fileexists('c:\Listbox1.pdb') then
llist.LoadFromFile('c:\Listbox1.pdb')
except
end;
for i:=0 to lList.Count-1 do
begin
Listbox1.AddItem(llist[i],nil);
end;
llist.Free;
// Listbox1.ItemIndex:=0;
end;
procedure TForm1.N4Click(Sender: TObject);
var i:integer;
llist:tstringlist;
begin
if messagedlg('Вы действительно хотите удалить группу ',mtConfirmation,[mbNo,mbYes],0)=mrYes then begin
Listbox1.DeleteSelected;
llist:=tstringlist.create;
llist.Clear;
llist.AddStrings(Listbox1.Items);
end;
try
llist.SaveToFile('c:\Listbox1.pdb');
except
end;
llist.Free;
end;
procedure TForm1.N3Click(Sender: TObject);
var newstr:string;
i:integer;
llist:tstringlist;
begin
NewStr:=InputBox('Новая группа','Введите имя группы','');
if newstr<>'' then
begin
Listbox1.Items.Add(newstr);
llist:=tstringlist.create;
llist.Clear;
begin
llist.AddStrings(Listbox1.Items);
llist.SaveToFile('c:\Listbox1.pdb');
llist.Free;
end;
end;
end;
procedure TForm1.Listbox1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
var
i:integer;
begin
if Listbox1.Items.Count>0 then
if (Listbox1.ItemIndex>=0) and (Listbox1.ItemIndex<Listbox1.Items.Count) then
//LoadListbox1Listbox2(Listbox1.Items.);
end;
procedure LoadListbox1Listbox2(Const Groupname:string);
var i,cur:integer;
sec:tstringlist;
begin
sec:=tstringlist.Create;
try
if form1.ListBox1.ItemIndex=0 then begin
for i:=0 to sec.Count-1 do begin
form1.ListBox2.Items.Add(Sec[i]);
end;
end;
if form1.ListBox1.itemindex>0 then begin
for i:=0 to sec.Count-1 do begin
cur:=form1.ListBox2.ItemIndex;
form1.ListBox2.Items[cur]:=sec[i];
end;
end;
except
end;
end;
procedure TForm1.N5Click(Sender: TObject);
var newcat:string;
i:integer;
clist:tstringlist;
begin
Newcat:=InputBox('Новая категория','Введите имя категории','');
if newcat<>'' then
begin
Listbox2.Items.Add(newcat);
clist:=tstringlist.create;
clist.Clear;
begin
clist.AddStrings(Listbox2.Items);
clist.SaveToFile('c:\Listbox2.pdb');
clist.Free;
end;
end;
end;
procedure TForm1.N6Click(Sender: TObject);
var i:integer;
clist:tstringlist;
begin
if messagedlg('Вы действительно хотите удалить категорию ',mtConfirmation,[mbNo,mbYes],0)=mrYes then begin
Listbox2.DeleteSelected;
clist:=tstringlist.create;
clist.Clear;
//for i:=0 to Listbox1.Items.Count do begin
// llist.add(Listbox1.Items[i]);
clist.AddStrings(Listbox2.Items);
end;
try
clist.SaveToFile('c:\Listbox2.pdb');
except
end;
clist.Free;
end;
end.