FileListBox-ы...пару вопросов
вот накопилось пару вопросиков:
1. как в filelistbox (или просто listbox) выявить в данный момент выделеный пункт... а точнее надо по дбл.клику послать пункт (по которому дбл.клик) в другой listbox...
2. можно ли как нибудь filelistbox и directorylistbox оттображать скрытые файлы и катологи (или системные хз)
3. я с помощью filelistbox отображаю список *.mp3... filelistbox привязан к directorylistbox... можно ли заставить в этом случаее filelistbox сканить на наличие файлов не только текущий католог но и все вложенные... или же filelistbox надо отвязать от directorylistbox и сканить все вручную, а патом все запихивать в filelistbox?
2. смотри FileType у FileListBox'a.
3. FileListBox вроде отображает только файлы текущей директории, так что используй наверное ListBox и функцию поиска в папке и подпапках и заполняй его.
еще есть небольшой вопросик... сделал отдельное сканирование файлов в listbox-e, но ессесно хотелось бы отображать только имена файлов, возникает вопрос - а где хранить пути доступа к этим файлам...можно конечноже сделать еще один скрытый listbox и запихивать пути туда, но мне кажеццо что это не рацианально...может есть еще идеи?
ну, используй TStringList тогда, больше ничего придумать даже и не могу.
kosfiz, ListBox - по сути тот же StringList, спаренный с windows control'ом (св-во Items ListBox'a унаследовано от того же класса, что и TStringList - TStrings)
Цитата: makbeth
kosfiz, ListBox - по сути тот же StringList, спаренный с windows control'ом (св-во Items ListBox'a унаследовано от того же класса, что и TStringList - TStrings)
знаю, просто лучше так, чем
ListBox.Visible := false; выставлять и контрол использовать.
я вот так сохраняю строку
Код:
listbox1.Items.Add(ExtractFileName(filelistbox1.Items.Strings[filelistbox1.Itemindex]));
а как путь запихнуть в ListBox1.Items.Objects[Index] да что б еще конечно же номер позиции в listbox.items.strings[Index] и ListBox1.Items.Objects[Index] совпадал?
Цитата: Maniak
что то я немного не понял...
я вот так сохраняю строку
а как путь запихнуть в ListBox1.Items.Objects[Index]
я вот так сохраняю строку
Код:
listbox1.Items.Add(ExtractFileName(filelistbox1.Items.Strings[filelistbox1.Itemindex]));
Ну здесь придется немного подумать головой. Например, можно описать специальный класс, который бы хранил путь к файлу и другую инфу о файле (а вдруг пригодится?).
Код:
type
TFilePath = class
Path: TFileName;
constructor Create(APath: TFileName);
end;
constructor TFilePath.Create(APath: TFileName);
begin
Path:=APath;
end;
TFilePath = class
Path: TFileName;
constructor Create(APath: TFileName);
end;
constructor TFilePath.Create(APath: TFileName);
begin
Path:=APath;
end;
Код:
ListBox1.Add(ExtractFileName(FileListBox1.Items.Strings[FileListBox1.ItemIndex]),
TFilePath.Create(ExtractFilePath(FileListBox1.Items.Strings[FileListBox1.ItemIndex])));
TFilePath.Create(ExtractFilePath(FileListBox1.Items.Strings[FileListBox1.ItemIndex])));
Код:
procedure TForm1.Destroy(Sender: TObject);
var i: Integer;
begin
for i:=0 to ListBox1.Count - 1 do
ListBox1.Items.Objects.Free;
end;
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] совпадал?
Да, собственно, они и так совпадают...
Код:
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;
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;
x:=TFilePath.path;
Код:
var ItemPath: string;
Index: Integer;
begin
Index:=2;
ItemPath:=(ListBox1.Items.Objects[Index] as TFilePath).Path;
end;
Index: Integer;
begin
Index:=2;
ItemPath:=(ListBox1.Items.Objects[Index] as TFilePath).Path;
end;
Цитата: Maniak
и почему свойство path не доступно напрямую? например так
Твоя запись относится к классу, а не к экземпляру. Найди себе учебник по ООП.