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

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

OpenSaveDialog выполняется через раз [Delphi, D7, Win2000]


<> ©   (2008-06-22 14:05:00) 

Я использую один и тот же OpenSaveDialog для записи и открытия файлов. Если при открытии выбрать два и болеефайлов (включена опция OSallowMultiSelect), то при следующем нажатии кнопки, вызывающей этот же самый диалог открытия, он не вызывается, и кнопку надо нажимать ещё раз. Если выбирать по одному файлу, то всё ОК.

Вот исходный код:

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
begin
 OpenSaveDialog1.Filter := 'Text files *.txt|*.txt|All files *.*|*.*';
 OpenSaveDialog1.OpenDialog := false;
end;

procedure TForm1.Button_Add_Files_Click(Sender: PObj);
begin
 OpenSaveDialog1.OpenDialog := true;
 OpenSaveDialog1.Filter := 'Torrent files *.torrent|*.torrent|All files *.*|*.*';
 OpenSaveDialog1.Options := [OSFileMustExist,OSHideReadonly,OSOverwritePrompt,OSPathMustExist,OSallowMultiSe lect];

 IF OpenSaveDialog1.Execute THEN
 BEGIN
 
  // При втором нажатии кнопки после выбора 2 и более файлов здесь код не выполняется
  // When the button is pressed twice after MultiSelect, it doesn't work

 END;

 OpenSaveDialog1.Options := [OSFileMustExist,OSHideReadonly,OSOverwritePrompt,OSPathMustExist];
 OpenSaveDialog1.Filter := 'Text files *.txt|*.txt|All files *.*|*.*';
 OpenSaveDialog1.OpenDialog := false;
end;


В чём может быть проблема?


<>   (2008-06-22 16:41:00) [1]

Спасибо!


Jon   (2008-06-22 16:23:00) [2]

From KOL.PAS:


> For case when OSAllowMultiselect option used, after each
> call initial value for a Filename containing several files prevents
> system from opening the dialog. To fix this, assign another initial
> value to Filename property in your code, when you use multiselect.


begin
OpenSaveDialog1.OpenDialog := true;
OpenSaveDialog1.Filter := 'Torrent files *.torrent|*.torrent|All files *.*|*.*';
OpenSaveDialog1.Options := [OSFileMustExist,OSHideReadonly,OSOverwritePrompt,OSPathMustExist,OSallowMultiSe  lect];
OpenSaveDialog1.Filename := '';
IF OpenSaveDialog1.Execute THEN
BEGIN
 // The above line fixes the multi select problem
END;
OpenSaveDialog1.Options := [OSFileMustExist,OSHideReadonly,OSOverwritePrompt,OSPathMustExist];
OpenSaveDialog1.Filter := 'Text files *.txt|*.txt|All files *.*|*.*';
OpenSaveDialog1.OpenDialog := false;
end;


Наверх

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