Показать сообщение отдельно
  #1  
Старый 17.04.2013, 00:48
Corwin13 Corwin13 вне форума
Прохожий
 
Регистрация: 05.04.2013
Сообщения: 20
Версия Delphi: Enterprise 7.0
Репутация: 10
По умолчанию Выделенный пункт в listbox

Есть два листбокса, в первом создаются пункты, во втором подпункты первого. Нужно сделать чтобы при выделении пункта листбокса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.
Ответить с цитированием