Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 16:10   #1
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию Компонент TreeView

Всем доброго времени суток. TreeView уже показывает перечень папок и дисков.....как сделать что бы на форме ещё отображалось содержимое этих папок ???

Код:
procedure NextLevel(ParentNode: TTreeNode);
 function DirectoryName(name: string): boolean;
  begin
   result:=(name<>'.') and (name<>'..');
  end;
var
 sr, srChild: TSearchRec;
 node: TTreeNode;
 path: string;
begin
 node:=ParentNode;
 path:='';
 repeat
  path:=node.Text+'\'+path;
  node:=node.Parent;
 until node=nil;
 if FindFirst(path+'*.*', faDirectory, sr)=0 then
  begin
   repeat
    if (sr.Attr and faDirectory <> 0) and DirectoryName(sr.Name)
     then
      begin
       node:=Form1.TreeView1.Items.AddChild(ParentNode, sr.Name);
       node.ImageIndex:=0;
       node.SelectedIndex:=1;
       node.HasChildren:=false;
       if FindFirst(path+sr.Name+'\*.*', faDirectory, srChild)=0
        then
         begin
          repeat
           if (srChild.Attr and faDirectory<>0)
                             and DirectoryName(srChild.Name)
           then node.HasChildren := true;
          until (FindNext(srChild) <> 0) or node.HasChildren;
        end;
       FindClose(srChild);
      end;
   until FindNext(sr) <> 0;
  end
 else ParentNode.HasChildren:=false;
 FindClose(sr);
end;


procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
  var AllowExpansion: Boolean);
begin
 TreeView1.Items.BeginUpdate;
 Node.DeleteChildren;
 NextLevel(Node);
 TreeView1.Items.EndUpdate;
end;


procedure TForm1.FormCreate(Sender: TObject);
const
 IconNames: array [0..6] of string = ('CLOSEDFOLDER', 'OPENFOLDER',
    'FLOPPY', 'HARD', 'NETWORK', 'CDROM', 'RAM');
var
 c: char;
 s: string;
 Node: TTreeNode;
 DriveType: integer;
 bm, mask: TBitmap;
 i: integer;
begin
 TreeView1.Items.BeginUpdate;
 TreeView1.Images:=TImageList.CreateSize(16, 16);
 bm:=TBitmap.Create;
 mask:=TBitmap.Create;
 for i:=low(IconNames) to high(IconNames) do
  begin
   bm.Handle:=LoadBitmap(HInstance, PChar(IconNames[i]));
   bm.Width:=16;
   bm.Height:=16;
   mask.Assign(bm);
   mask.Mask(clBlue);
   TreeView1.Images.Add(bm, mask);
  end;
 for c:='A' to 'Z' do
  begin
   s:=c+':';
   DriveType:=GetDriveType(PChar(s));
   if DriveType=1 then continue;
   node:=Form1.TreeView1.Items.AddChild(nil, s);
   case DriveType of
    DRIVE_REMOVABLE: node.ImageIndex:=2;
    DRIVE_FIXED: node.ImageIndex:=3;
    DRIVE_REMOTE: node.ImageIndex:=4;
    DRIVE_CDROM: node.ImageIndex:=5;
    else node.ImageIndex:=6;
   end;
   node.SelectedIndex:=node.ImageIndex;
   node.HasChildren:=true;
  end;
 TreeView1.Items.EndUpdate;
end;

end.
Изображения
Тип файла: jpg screen2.jpg (17.0 Кб, 52 просмотров)
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 18.10.2010, 16:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что бы на форме ещё отображалось содержимое этих папок ???
Ну можно кинуть FileListBox или ShellListView...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2010, 17:00   #3
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

как FileListBox привязать к TreeView
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 18.10.2010, 17:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если в Дереве каталоги то:
Код:
var ы:string;n:TTreeNode;
 with TreeView1 do begin
   if selected<>nil then begin
    n:=Selected;s:='';
    while n<>nil do begin
     s:=n.Text+'\'+s;
     n:=n.Parent;
    end;
    FileListBox.Directory:=s;
   end;
 end;
Примерно так короче - пройтись по веткам к корню, получив путь, и загнать его в ФайлЛистБокс в особое свойство.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2010, 17:54   #5
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

а если не секрет то в какую процедурку засунуть код
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 18.10.2010, 17:56   #6
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

я вставил в onClick На компонент TreeView
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...

Последний раз редактировалось Claster; 18.10.2010 в 18:02.
Claster вне форума Ответить с цитированием
Старый 18.10.2010, 18:04   #7
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

Замечательно все работает.....ещё вопрос как сделать вот если в списке файлов есть какойто графичекий файл там bmp jpg и при нажатии на него он показывался в Image
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Компонент-предок, компонент-родитель amico Помощь студентам 1 23.09.2015 21:20
TreeView IICuX123 Общие вопросы .NET 9 19.11.2011 01:47
компонент treeview xmaksimca Компоненты Delphi 2 21.12.2009 23:39
Компонент TreeView PUSHkiN Компоненты Delphi 2 08.12.2008 23:14
TreeView и БД Constellation БД в Delphi 12 27.09.2008 15:22