Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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);


Если я правиьно понял...


Наверх

Титульная страница Поиск, карта сайта Написать письмо