Советы по Delphi


Проблема фильтров в компоненте SaveDialog


Для диалога SaveDialog1 я установил 3 фильтра. Она классно появляются при открытии выпадающего списка. Что мне необходимо сделать: мне нужно "прочесть" содержимое выбранного пользователем из списка фильтра для того, чтобы при последующем открытии SaveDialog1 данный элемент предлагался ему в первую очередь (свойство ItemIndex).

Это ошибка в исходном коде VCL, внутренней переменной FFilterIndex не присваивается значение, выбранное пользователем.

Если у вас имеется исходный код VCL, вы можете это исправить, скорректировав TOpenDialog.DoExecute в Dialogs.PAS. Просто добавьте следующее:

    function TOpenDialog.DoExecute(Func: Pointer): Bool; CommonDialogList.Remove(Self); if Result then begin ProcessMultipleSelection(lpstrFile); FFileName := FFiles.Strings[0]; FFilterIndex := nFilterIndex;                   {<=== вот что вам нужно добавить} if (Flags and OFN_EXTENSIONDIFFERENT) <> 0 then FOptions := FOptions + [ofExtensionDifferent]

Не (повторяю: не) изменяйте секцию interface кода VCL, если вы собираетесь продолжать пользоваться IDE.

- Owen Barder [000891]



Содержание раздела