![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
From OpenDialog To ListBox
it © (2003-04-07 15:46:00)
Пусть позволено выбирать несколько файлов. Каким образом OpenDialog.FileName можно разбить, чтобы выбранные имена файлов можно было вставить в ListBox в виде списка.
it (2003-04-08 12:56:00) [1]
const
Sep = Chr(13);
OpenDirDialog.Execute;
s := OpenDialog.Filename;
while s <> "" do ListBox.Add(Parse(s, Sep));
Хорошо смеётся тот, кто смеётся последний...
mdw (2003-04-08 11:28:00) [2]
2nsvi
Зачем так сложно?
var FileList: PStrList;
...
FileList:= NewStrList;
FileList.Text:= OpenDialog.Filename;
if FileList.Count = 1 then begin
FileList.Clear;
FileList.Add(ExtractFilePath(OpenDialog.Filename));
FileList.Add(ExtractFileName(OpenDialog.Filename));
end;
Теперь в FileList[0] лежит путь к файлу(ам), а дальше их имена.
Bartov (2003-04-08 02:08:00) [3]
Вот описание:
http://bonanzas.rinet.ru/r_helpdoc.htm
А вот архив:
http://bonanzas.rinet.ru/xhelpgen.zip
А без нее ни как ;-)))
nsvi (2003-04-08 01:55:00) [4]procedure TIframeDelete.Button1Click(Sender: PObj);
var
s1,S4:string;
m,n:integer;
begin
ListBox1.Clear;
s2:="";
OpenSaveDialog1.OpenDialog := true;
OpenSaveDialog1.Filename:="";
if OpenSaveDialog1.Execute then
begin
S1:=OpenSaveDialog1.FileName;
n:=IndexOfChar(S1,#13));
if n<0 then
ListBox1.Add(S1)
else
begin
m:=length(S1);
S2:=S1;
DeleteTail(S2,m-n+1);
S1:=CopyEnd(S1,n+1);
repeat
n:=IndexOfChar(S1,#13);
if n>0 then
begin
S4:=S1;
DeleteTail(S4,length(S4)-n+1);
S1:=CopyEnd(S1,n+1);
ListBox1.Add(S4);
end;
until n<0;
ListBox1.Add(S1);
end;
( ListBox1.Count) [8]procedure TIframeDelete.Button1Click(Sender: PObj);
var
s1,S4:string;
m,n:integer;
begin
ListBox1.Clear;
s2:="";
OpenSaveDialog1.OpenDialog := true;
OpenSaveDialog1.Filename:="";
if OpenSaveDialog1.Execute then
begin
S1:=OpenSaveDialog1.FileName;
n:=IndexOfChar(S1,#13));
if n<0 then
ListBox1.Add(S1)
else
begin
m:=length(S1);
S2:=S1;
DeleteTail(S2,m-n+1);
S1:=CopyEnd(S1,n+1);
repeat
n:=IndexOfChar(S1,#13);
if n>0 then
begin
S4:=S1;
DeleteTail(S4,length(S4)-n+1);
S1:=CopyEnd(S1,n+1);
ListBox1.Add(S4);
end;
until n<0;
ListBox1.Add(S1);
end;
Label1.Caption := "Выбрано файлов:"+Int2Str(ListBox1.Count);
end;
end;
it (2003-04-08 01:08:00) [5]
Не хотелось бы показаться чурбаном, но из какой HTM-справки?
it (2003-04-08 01:02:00) [6]
Короче, юзать мне Parse, спасибо!
Bartov (2003-04-08 00:58:00) [7]
ИЗ HTM-справки:
TOpenSaveDialog properties
property Filename: String;
Filename is seperated by #13 when multiselect is true and the first file, is the path of the files selected.
C:\Projects
Test1.Dpr
Test2.Dpr
If only one file is selected, it is saved as (e.g.) C:\Projects\Test1.dpr
it (2003-04-08 00:04:00) [8]
Когда мы открываем несколько файлов в OpenDialog, то все они записываются в одну строку последовательно, разделённые... разделённые... чем? символ переноса на следующую строку? Каков у него код? Как эту строку разбить?
it (2003-04-07 17:08:00) [9]
Dear George2003,
Я ничего не напутал? Мы говорим про KOL и MCK... VCL отдыхает...
George2003 (2003-04-07 16:08:00) [10]
сорри правильнее будет так
OpenDialog.FileName:="";
OpenDialog.Execute;
if (OpenDialog.FileName<>"") then
for i:=0 to OpenDialog.Files.Count-1 do
listbox1.Items.add(od.Files[i]);
George2003 (2003-04-07 15:56:00) [11]
OpenDialog.FileName:="";
OpenDialog.Execute;
if (OpenDialog.FileName<>"") then
List1..Items.add(OpenDialog.FileName);
Если я правиьно понял...