Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.18;
Скачать: CL | DM;

Вниз

Как директории отобразить в ListBox?   Найти похожие ветки 

 
Proxytel ©   (2007-02-27 12:24) [0]

Есть путь директории на диске, внутри нее еще список вложеных директорий. Есть ли несложный способ отобразить все вложенные директории(но только на этом уровне, не глубже) в ListBox?
Файлы проигнорировать.

Например,
c:\dir\dir1
c:\dir\dir2
...
c:\dir\dirN

В ListBox надо чтоб было:
dir1
dir2
...
dirN


 
ЮЮ ©   (2007-02-27 12:34) [1]

Просканировать "c:\dir" на предмет наличия директорий и поместить их имена в ListBox (см.Help + Examples по FindFirst)


 
Jeer ©   (2007-02-27 12:34) [2]

Трудно отсечь справа до последнего слэша ?
pos( ) и copy() | delete()


 
Proxytel ©   (2007-02-27 12:39) [3]

Дк в том-то и дело что как просканировать на предмет не всего содердимого, а исключительно директорий?


 
ЮЮ ©   (2007-02-27 12:45) [4]

в Example код приложения целого приведен
 if sr.Attr and faDirectory = faDirectory тогда это директория


 
Юрий Зотов ©   (2007-02-27 13:02) [5]

TDirectoryListBox, TDirectoryOutline, TShellTreeView.

На выбор. И ни строчки своего кода.


 
Proxytel ©   (2007-02-27 13:49) [6]


> TDirectoryListBox, TDirectoryOutline, TShellTreeView.
>
> На выбор. И ни строчки своего кода.


Ну и как например в TDirectoryListBox отобразить директории не деревом а списком?


 
Proxytel ©   (2007-02-27 14:01) [7]

Пробовал так:

var
 SR:TSearchRec;
 attr:Integer;
---------------------------------
if DirectoryExists("C:\")then
   if FindFirst(IncludeTrailingBackslash("C:\")+"*.*",attr,SR) = 0 then
   begin
     repeat
       if(sr.Attr=faDirectory) then
         listBox2.Items.Append(sr.Name);
     until (FindNext(sr)<>0);
     FindClose(SR);
   end;


Появляется только 2 директории причем на фанарь полный!


 
Юрий Зотов ©   (2007-02-27 14:07) [8]

Действительно - а как? И главное - а зачем?

Но уж если очень хочется, то так:

type
 TFriendDirectoryListBox = class(TDirectoryListBox);

procedure TForm1.FormCreate(Sender: TObject);
begin
 TFriendDirectoryListBox(DirectoryListBox1).Style := lbStandard
end;

Правда, тут уже придется писать код. Аж 2 строчки.


 
Юрий Зотов ©   (2007-02-27 14:26) [9]

Еще вариант, с обычным ListBox:

SendMessage(ListBox1.Handle, LB_DIR, DDL_DIRECTORY or DDL_EXCLUSIVE, Integer(PChar("C:\*.*")));


 
Proxytel ©   (2007-02-27 14:35) [10]


> type
>  TFriendDirectoryListBox = class(TDirectoryListBox);
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
>  TFriendDirectoryListBox(DirectoryListBox1).Style := lbStandard
> end;


Мда..
Гениально, но результат не совершенно не тот.

При выборе директории - остальные исчезают (это основное, что мне мешает и из-за чего я затеял все) + ко всему еще приплюсовываются в список все дерево до нужной директориию, включая "C:\"


 
Proxytel ©   (2007-02-27 14:46) [11]


> Еще вариант, с обычным ListBox:
>
> SendMessage(ListBox1.Handle, LB_DIR, DDL_DIRECTORY or DDL_EXCLUSIVE,
>  Integer(PChar("C:\*.*")));


А это круто!



Страницы: 1 вся ветка

Текущий архив: 2007.03.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
2-1172600453
Lonix
2007-02-27 21:20
2007.03.18
Запись в файл


8-1152851887
Узер
2006-07-14 08:38
2007.03.18
Звук


9-1145623480
KiberKot
2006-04-21 16:44
2007.03.18
Анимация


15-1171957234
Unknown user
2007-02-20 10:40
2007.03.18
Кто работал с OpenCV в Delphi?


15-1172238460
chvank
2007-02-23 16:47
2007.03.18
Геометрию изменил, гад, что делать?