Конференция "KOL" » OpenSaveDialog выполняется через раз [Delphi, D7, Win2000]
 
  • <> (22.06.08 14:05) [0]
    Я использую один и тот же 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;



    В чём может быть проблема?
  • Jon © (22.06.08 16:23) [1]
    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;

  • <> (22.06.08 16:41) [2]
    Спасибо!
 
Конференция "KOL" » OpenSaveDialog выполняется через раз [Delphi, D7, Win2000]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]