Программирование в Delphi. Трюки и эффекты - страница 17

Шрифт
Интервал


DeleteObject(rgn);

end;

Inc(x);

end;

end;

RegionFromPicture:= resRgn;

end;


Загрузка изображения-шаблона и создание региона могут происходить, например, при создании формы (листинг 1.20).

Листинг 1.20. Создание региона для области отсечения формы

procedure TfrmTemplate.FormCreate(Sender: TObject);

var

pict: TPicture;

begin

//Загрузка изображения и создание региона

//(считаем, что цвет фона – белый)

pict:= TPicture.Create;

pict.LoadFromFile('back.bmp');

SetWindowRgn(Handle, RegionFromPicture(pict, RGB(255,255,255)), True);

end;


В листинге 1.20 подразумевается, что используется файл back.bmp, находящийся в той же папке, что и файл приложения. Цвет фона – белый. Таким образом, если шаблон, показанный на рис. 1.11, хранится в файле back.bmp, то в результате получается форма, показанная на рис. 1.12.

Рис. 1.12. Результат построения региона по шаблону

Немного о перемещении окон

Кроме придания необычного вида окнам способами, рассмотренными выше, можно также несколько разнообразить интерфейс за счет оригинального использования перемещения окон. Ниже показано, как можно самостоятельно назначать области, позволяющие перетаскивать форму. Еще один пример демонстрирует один из способов дать пользователю возможность самому определять расположение элементов управления на форме.

Перемещение за клиентскую область

Здесь на конкретном примере (перемещение формы за любую точку клиентской области) продемонстрировано, как можно самостоятельно определять положение некоторых важных элементов окна. Под элементами окна здесь подразумеваются:

• строка заголовка (предназначена не только для отображения текста заголовка, но и служит областью захвата при перемещении окна мышью);

• границы окна (при щелчке кнопкой мыши на верхней, нижней, правой и левой границе можно изменять размер окна, правда, если стиль окна это допускает);

• четыре угла окна (предназначены для изменения размера окна с помощью мыши);

• системные кнопки закрытия, разворачивания, сворачивания, контекстной справки (обычно расположены в строке заголовка окна);

• горизонтальная и вертикальная полосы прокрутки;

• системное меню (раскрывается щелчком кнопкой мыши на значке окна);

• меню – полоса меню (обычно расположена вверху окна);

• клиентская область – по умолчанию все пространство окна, кроме строки заголовка, меню и полос прокрутки.