Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

FileListBox-ы...пару вопросов

347
28 августа 2007 года
Maniak
319 / / 05.11.2005
народ помогите разобраться...вроде было все светло, но как начел разбираться понял что нифига не знаю...
вот накопилось пару вопросиков:
1. как в filelistbox (или просто listbox) выявить в данный момент выделеный пункт... а точнее надо по дбл.клику послать пункт (по которому дбл.клик) в другой listbox...
2. можно ли как нибудь filelistbox и directorylistbox оттображать скрытые файлы и катологи (или системные хз)
3. я с помощью filelistbox отображаю список *.mp3... filelistbox привязан к directorylistbox... можно ли заставить в этом случаее filelistbox сканить на наличие файлов не только текущий католог но и все вложенные... или же filelistbox надо отвязать от directorylistbox и сканить все вручную, а патом все запихивать в filelistbox?
257
28 августа 2007 года
kosfiz
1.6K / / 18.09.2005
1. ItemIndex
2. смотри FileType у FileListBox'a.
3. FileListBox вроде отображает только файлы текущей директории, так что используй наверное ListBox и функцию поиска в папке и подпапках и заполняй его.
347
29 августа 2007 года
Maniak
319 / / 05.11.2005
еще есть небольшой вопросик... сделал отдельное сканирование файлов в listbox-e, но ессесно хотелось бы отображать только имена файлов, возникает вопрос - а где хранить пути доступа к этим файлам...можно конечноже сделать еще один скрытый listbox и запихивать пути туда, но мне кажеццо что это не рацианально...может есть еще идеи?
257
29 августа 2007 года
kosfiz
1.6K / / 18.09.2005
ну, используй TStringList тогда, больше ничего придумать даже и не могу.
303
29 августа 2007 года
makbeth
1.0K / / 25.11.2004
Maniak, у каждого элемента ListBox'а есть свойство с типом TObject (ListBox1.Items.Objects[Index]). Можешь хранить все дополнительные данные там.
kosfiz, ListBox - по сути тот же StringList, спаренный с windows control'ом (св-во Items ListBox'a унаследовано от того же класса, что и TStringList - TStrings)
257
29 августа 2007 года
kosfiz
1.6K / / 18.09.2005
Цитата: makbeth
kosfiz, ListBox - по сути тот же StringList, спаренный с windows control'ом (св-во Items ListBox'a унаследовано от того же класса, что и TStringList - TStrings)


знаю, просто лучше так, чем
ListBox.Visible := false; выставлять и контрол использовать.

347
29 августа 2007 года
Maniak
319 / / 05.11.2005
что то я немного не понял...
я вот так сохраняю строку
 
Код:
listbox1.Items.Add(ExtractFileName(filelistbox1.Items.Strings[filelistbox1.Itemindex]));


а как путь запихнуть в ListBox1.Items.Objects[Index] да что б еще конечно же номер позиции в listbox.items.strings[Index] и ListBox1.Items.Objects[Index] совпадал?
303
31 августа 2007 года
makbeth
1.0K / / 25.11.2004
Цитата: Maniak
что то я немного не понял...
я вот так сохраняю строку
 
Код:
listbox1.Items.Add(ExtractFileName(filelistbox1.Items.Strings[filelistbox1.Itemindex]));
а как путь запихнуть в ListBox1.Items.Objects[Index]


Ну здесь придется немного подумать головой. Например, можно описать специальный класс, который бы хранил путь к файлу и другую инфу о файле (а вдруг пригодится?).

 
Код:
type
    TFilePath = class
        Path: TFileName;
        constructor Create(APath: TFileName);
    end;

constructor TFilePath.Create(APath: TFileName);
begin
    Path:=APath;
end;
Теперь этот класс используем для хранения в TListBox:
 
Код:
ListBox1.Add(ExtractFileName(FileListBox1.Items.Strings[FileListBox1.ItemIndex]),
        TFilePath.Create(ExtractFilePath(FileListBox1.Items.Strings[FileListBox1.ItemIndex])));
Правда при удалении элемента из TListBox или при разрушении формы придется удалять все экземпляры TFilePath вручную.
 
Код:
procedure TForm1.Destroy(Sender: TObject);
var i: Integer;
begin
    for i:=0 to ListBox1.Count - 1 do
        ListBox1.Items.Objects.Free;
end;
Цитата: Maniak
да что б еще конечно же номер позиции в listbox.items.strings[Index] и ListBox1.Items.Objects[Index] совпадал?


Да, собственно, они и так совпадают...

347
31 августа 2007 года
Maniak
319 / / 05.11.2005
ну на скоко я понял сделал так:
Код:
type
TFilePath = class
Path:string;
constructor Create(APath:string);
end;

constructor TFilePath.Create(APath:string);
begin
Path:=APath;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
ListBox1.items.Add(ExtractFileName(FileListBox1.Items.Strings[FileListBox1.ItemIndex]));
listbox1.Items.Objects[listbox1.Count]:=TFilePath.Create(ExtractFilePath(FileListBox1.Items.Strings[FileListBox1.ItemIndex]));
end;

только как потом обратиться к этому объекту
listbox1.Items.Objects...

и почему свойство path не доступно напрямую? например так
 
Код:
var x:string;
x:=TFilePath.path;
303
03 сентября 2007 года
makbeth
1.0K / / 25.11.2004
К объектам в TListBox обращайся следующим образом:
 
Код:
var ItemPath: string;
     Index: Integer;
begin
    Index:=2;
    ItemPath:=(ListBox1.Items.Objects[Index] as TFilePath).Path;
end;
10
03 сентября 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: Maniak
и почему свойство path не доступно напрямую? например так


Твоя запись относится к классу, а не к экземпляру. Найди себе учебник по ООП.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог