В этой статье описывается создание нестандартных окон. Для этого нам понадобится Delphi (желательно Delphi 7 или RAD Studio). Все графические объекты созданы в Photoshop 11.
Для начала уберём стандартный заголовок у окна: Form1>Border Style>bsNone и Form1>Position>poScreenCenter 1.Делаем графический заголовок. В виде заголовка у нас будет TImage. Поставьте его на форму и присвойте ему имя Title (Image1>Name>Title). Загрузите в него изображение (можно самое простое нарисовать в пеинте, но если хочется чего то более стильного делаем в фотошопе). Установите в свойстве Align значение alTop. И Height (Высоту) желательно 25, или как захотите только не слишком большую. Ставим свойство Stretch: True Теперь программируем заголовок:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$F012,0);
end;
Теперь окно можно (таскать) за наш заголовок. 2. Делаем рамку Кидаем на форму три компонента TImage и присваиваем им имена: Image1>Name>Left Image2>Name>Right Image3>Name>Bottom Имагу Left ставим свойство Align>alLeft и Cursor: crSizeWE Имагу Right ставим свойство Align>alRight и Cursor: crSizeWE Имагу Bottom ставим свойство Align>alBottom и Cursor: crSizeNS И у всех них свойство Stretch: True Делаем ширину у имагов Left и Right 5, а высоту у Bottom тоже 5. Загружаем в них изображения. Программируем:
procedure TForm1.BottomMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$F006,0);
end;
procedure TForm1.LeftMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$F001,0);
end;
procedure TForm1.RightMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$F002,0);
end;
Теперь дело остаётся за малым: кнопка закрыть, свернуть и цвет фона окна. Поставьте на заголовок два компонента TImage и загрузите в них изображения. Меняем их названия: Image1>Name>Close1 Image1>Name>Minimize Программируем:
procedure TForm1.Close1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.MinimizeClick(Sender: TObject);
begin
Application.Minimize;
end;
Программируем форму:
procedure btnPos;
begin
Form1.Close1.Top := 0;
Form1.Close1.Left := Form1.Width-Form1.Close1.Width;
Form1.Minimize.Top := 0;
Form1.Minimize.Left := Form1.Width-Form1.Close1.Width-Form1.Minimize.Width;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
btnPos;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.DoubleBuffered := True;
Form1.AlphaBlend := true;
Form1.AlphaBlendValue := 230;
end;
Можно ещё добавить надпись на заголовке. Всё сделано.
|