Теперь осталось только каким-то образом обработать щелчки мышью
на изображении сундука. Предположим, мы хотим, чтобы щелчок
на изображении замка использовался для закрытия окна. Для того что-
бы обработать щелчок мышью, разместим на форме компонент Shape
категории Additional и установим значения его свойствам согласно
табл. 1.3.
Таблица 1.3. Свойства компонента Shape
Теперь создадим обработчик события shpExit.OnMouseDown, ко-
торое возникает при щелчке на компоненте какой-либо кнопкой мы-
ши:
procedure TfmFigura.shpExitMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
if Button=mbLeft then Close;
end;
Откомпилируем и запустим приложение на выполнение. Пробуем
нажать кнопку выключения (т.е. щелкнуть левой кнопкой мыши на
изображении замка), но ничего не произойдет. Дело в том, что мы из-
менили стандартную процедуру DragDrop, и теперь указатель мыши
всегда перенаправляется на заголовок формы. Необходимо сделать
так, чтобы при размещении указателя над "кнопкой выключения" это
перенаправление не происходило. Для этого закроем запущенное при-
ложение и внесем следующие дополнения в процедуру (добавленный
фрагмент выделен жирнож):
procedure TfmFigura.DragDrop(var dr:TWMNCHitTest);
begin
inherited;
if dr.Result=htClient
then if not(((dr.XPos-Left)>=shpExit.Left) and
((dr.XPos-Left)<=shpExit.Left+shpExit.Width)
and ((dr.YPos-Top)>=shpExit.Left) and
((dr.YPos-Top)<=shpExit.Left+shpExit.Height))
then dr.Result:=HTCAPTION;
end;
Координаты, передаваемые в параметре dr, откладываются отно-
сительно верхнего левого угла экрана, поэтому для получения коорди-
нат относительно левого верхнего угла формы необходимо вычесть из
dr.XPos значение свойства fmFigura.Left, а из значения dr.YPos
значение свойства fmFigura.Top. Полученные координаты указателя
сопоставляются с координатами размещения компонента shpExit, и
перенаправление происходит только в том случае, если указатель на-
ходится над "кнопкой выключения".
После повторного запуска приложения, "кнопка выключения" уже
распознается, а щелчок на ней приводит к завершению работы прило-
жения.
Автор: Соколова Ю.С.
|