Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

Height := Picture.Height * 2; Stretch := True;

end;

end;

А теперь воспользуемся свойством AutoCheck компонентов Action, чтобы избавиться от необходимости программно переключать метку в пунктах Toolbar и Status bar главного меню. Когда свойство AutoCheck равно True, то при выполнении команды свойство Checked автоматически меняет свое значение на противоположное. Это отражается на связанных с командой пунктах меню и кнопках-переключателях.

Шаг 91. У команд ToolBarAction и StatusBarAction установите свойства

AutoCheck и Checked в значение True.

Шаг 92. Подправьте методы ToolBarActionExecute и StatusBarActionExecute:

procedure TPictureForm.ToolBarActionExecute(Sender: TObject); begin

ToolBar.Visible := ToolBarAction.Checked; end;

procedure TPictureForm.StatusBarActionExecute(Sender: TObject); begin

StatusBar.Visible := StatusBarAction.Checked; end;

8.6.5. Управление состоянием команд

Компонент ActionList имеет удобный механизм управления состоянием команд (например, доступна/недоступна). После выполнения очередной команды и во время простоя программы в компоненте возникает событие OnUpdate. Реакцией на это событие может быть изменение состояния отдельных команд, например переключение в них свойства Enabled. Напомним, что сейчас для этих целей используется метод EnableCommand, вызываемый при открытии и закрытии файла. Избавимся от него.

Шаг 93. Выделите на форме компонент ActionList, и в окне свойств на вкладке Events отыщите событие OnExecute. Двойным щелчком мыши создайте обработчик:

procedure TPictureForm.ActionListUpdate(Action: TBasicAction; var Handled: Boolean);

var

NonEmpty: Boolean;

422

begin

NonEmpty := Image.Picture.Graphic <> nil; SaveAsAction.Enabled := NonEmpty; CloseMenuItem.Enabled := NonEmpty; HalfSizeAction.Enabled := NonEmpty; NormalSizeAction.Enabled := NonEmpty; DoubleSizeAction.Enabled := NonEmpty; Handled := True;

end;

Шаг 94. Удалите метод EnableCommands и обращения к нему из методов

OpenActionExecute и CloseActionExecute. Вот, что должно получиться:

procedure TPictureForm.OpenActionExecute(Sender: TObject); begin

if OpenDialog.Execute then begin

Image.Picture.LoadFromFile(OpenDialog.FileName);

NormalSizeAction.Execute;

end;

UpdateStatusBar;

end;

procedure TPictureForm.CloseActionExecute(Sender: TObject); begin

with Image do begin

Picture.Graphic := nil; Width := 0;

Height := 0; end;

NormalSizeAction.Execute;

UpdateStatusBar;

end;

Шаг 95. Программа полностью готова, выполните компиляцию и запустите ее. Наслаждайтесь результатами своего труда, просматривая рисунки на жестком диске (рисунок 8.92).

423

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]