Советы по Delphi

         

Окно произвольной формы?


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

  1. Создайте новое приложение.
  2. Перепишите метод формы createparams как показано ниже.
  3. Разместите на форме какое-либо изображение и присвойте свойству transparent значение True.
  4. Установите "скоростную :-)" кнопку (SpeedButton) на форме и создайте метод, закрывающий приложение. (Форма получится круглой, поэтому системные кнопки и системное меню будет недоступно, они останутся за пределами контура формы.)
  5. Создайте метод, показанный ниже, отвечающий за обработку события OnCreate.
Надеюсь я помог вам.
    unit Unit1;
interface
uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Buttons; type
TForm1 = class(TForm)

Image1: TImage; SpeedButton1: TSpeedButton; procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); private { Private declarations } procedure CreateParams(var Params: TCreateParams); override; public { Public declarations } end; var
Form1: TForm1; implementation
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited
createparams(params);
{Здесь убираем у формы заголовки и границы}
params.style:=params.style or ws_popup xor ws_dlgframe;
end;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
formrgn:hrgn;
begin
{очищаем форму}
form1.brush.style:=bsclear;
{делаем форму круглой}
GetWindowRgn(form1.Handle, formRgn);
DeleteObject(formRgn); formrgn:= CreateroundRectRgn(0, 0,form1.width,form1.width,form1.width,form1.width);
SetWindowRgn(form1.Handle, formrgn, TRUE); end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
form1.close;
end;
end.

[000106]



Содержание раздела