ShowMessage(1 Вызовите снова программу,1 +

#13'чтобы она восприняла'#13'установки по умолчанию');
Application.Terminate;
end;

procedure TFOptions.Button2Click(Sender: TObject); begin

Closer-end;

end.

Файл UMenu.pas:

unit UMenu;

interface

uses ... Inifiles; type

TForml = class(TForm) end;

TFileOld = class(TMenuItem)

Procedure Click();
override;
end;
var Ini:TIniFile;
var Forml: TForml;
NFiles: integer = 5;

NFileMen: integer = 12; implementation

uses UMSetup, UPSetup, Grids, UOptions; {$R *.DFM}

procedure TForml.AOptionsExecute(Sender : TObject); begin

FOptions.ShowModal;
end;

procedure TForml.FormClose(Sender: TObject; var Action: TCloseAction); begin

Tolni(false);

// Освобождение памяти

Ini.Freer-end;

end._

Рассмотрим приведенный в листинге 8.5 код. Основные процедуры, связанные с файлом INI, содержатся в модуле UM Setup.pas. Форма этого модуля в программе создается последней. Поэтому в момент создания именно этой формы реализуются настройки остальных форм и чтение файла INI. Так что начнем наш анализ с этого модуля.

Обратите внимание, что в предложение uses включена ссылка на модуль Inifiles. Эта ссылка включается вручную. Она необходима, чтобы можно было использовать класс TIniFile. Переменная Ini этого класса объявлена в модуле UMenu.pas, в котором также имеется ссылка на Ini files.

Кроме того, в предложение uses модуля UMSetup.pas в приложениях VCL .NET включена ссылка на модули Variants и System.Text. Первая из них уже обсуждалась в разд. 8.2.3. Она нужна для работы со свойством Tag. А ссылка на модуль System.Text требуется для объявления и использования переменной APchar типа StringBuilder. Такая переменная используется в процедуре FormCreate в вызове функции GetWindowsDirectory.

Рассмотрение процедур модуля UMSetup начнем со вспомогательной процедуры Tolni. Эта процедура заносит в файл, связанный с переменной Ini, всю информацию о текущих настройках приложения. Передаваемый в нее булев параметр Always указывает, надо ли заносить в файл только те характеристики, которые отмечены соответствующими индикаторами в окне рис. 8.9, или надо (при значении true) заносить все характеристики. Первый оператор этой процедуры заносит в ключ "NFilesMax" раздела "[Файл]" число файлов, имена которых запоминаются - значение переменной NFiles (см. листинг 8.4 в разд. 8.5.2). Затем в цикле в файл заносятся имена разделов меню Файл, соответствующих открывавшимся файлам. Следующие операторы заполняют ключи раздела "[Параметры]" (см. в разделе 8.5.2), хранящие характеристики шрифта и индикаторов настройки.

Далее анализируется переданный в процедуру параметр Always и состояние индикатора CBMenu (индикатор меню на рис. 8.9). Если Always = true или индикатор включен, то в файл заносится информация о конфигурации меню. Для этого организуется цикл по головным разделам главного меню MainMenul. Существующая в файле информация, хранящаяся в соответствующем разделе, уничтожается методом EraseSection. Далее в файл заносятся ключи "Caption", "Visible*, "ShortCut" и "Count" (см. листинг 8.4 в разд. 8.5.2), соответствующие текущему головному разделу меню. При этом для первого меню Файл в качестве значения ключа "Count" заносится не полное число разделов этого меню, а только число разделов NFileMen, предшествующих списку файлов. Затем в цикле заносится по три ключа для каждого дочернего раздела меню (см. листинг 8.4). В качестве первого ключа "Number" заносится свойство Componentlndex объекта раздела меню, т.е. его индекс в массиве Components главной формы. Два остальных ключа содержат надпись Caption и горячие клавиши Shortcut раздела.


⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Март
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс