Главная страница
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.037 c
2-1172406975
Kolan
2007-02-25 15:36
2007.03.18
Memo.Lines.AddStrings долго отображает если много строк.


2-1172243897
Slimer
2007-02-23 18:18
2007.03.18
Даже самому смешно:)


2-1172494560
Магедон
2007-02-26 15:56
2007.03.18
Как изменить иконку на ассоциированном расширении?


15-1172418471
Dik59
2007-02-25 18:47
2007.03.18
Информация в БЛОБ-поле


1-1169464262
Степан
2007-01-22 14:11
2007.03.18
Запись в автозапуск