www.demi-s.narod.ru

Delphi
Статьи:

· Интерфейс

· WinAPI

· Компоненты

· Базы данных

· ShellAPI



WinAPI


Создание непрямоугольных форм

Этот простой код показывает, как создавать заказные формы. Создавая простые Регионы и объединяя их в сложные Регионы, Вы можете придать вашей форме любую форму, какую Вы хотите.

Код, чтобы сделать овальную форму (используйте alt+F4, чтобы закрыть)

procedure TForm1.FormCreate(Sender: TObject); 
var 
   hRgn: THandle; 
begin 
   // Создаем овальный регион на 10 pixels меньше, чем форма 
   hRgn := CreateEllipticRgn(10, 10, Width - 20, Height - 20); 
   // устанавливаем новый регион 
   SetWindowRgn(Handle, hRgn, False); 
end; 


// Код для создания формы с отверстием 
procedure TForm1.FormCreate(Sender: TObject); 
var 
   hRgn1, hRgn2: THandle; 
begin 
   // Создадим прямоугольную область с тем же самым размером как форма 
   hRgn1 := CreateRectRgn(0, 0, Width, Height); 
   // Создаем круглый регион 100 x 100 в центре формы 
   hRgn2 := CreateEllipticRgn((Width div 2) - 50, (Height div 2) - 50, (Width div 2) + 50, (Height div 2) + 50); 
   // Объединим регионы, вычитая регион окружности 
   // из прямоугольного региона 
   CombineRgn(hRgn1, hRgn1, hRgn2, RGN_DIFF); 
   // установим новый регион 
   SetWindowRgn(Handle, hRgn1, False); 
   // удаляем область 2, область 1 
   DeleteObject(hRgn2); 
end;

По материалам http://delphi.3000.com


Hosted by uCoz