Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Окно в виде звезды

Delphi , Программа и Интерфейс , Интерфейс

Окно в виде звезды


Что делать, если система не работает? Программист должен из нее выйти и опять войти. Что делать, если программист не работает? Начальник должен в него войти и выйти. Несколько раз.


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Label1: TLabel; //Это метка для отображения времени
    Timer1: TTimer; //Это таймер - с помощью него мы отображаем время
    Image1: TImage; //Компонент Image - нужен для вывода рисунка на форме
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    {Для перемещения формы вне заголовка объявляем процедуру}
    procedure WMNCHitTest(var M:TWMNCHitTest);message wm_NCHitTest;
  public
    { Public declarations }
end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

{Для перемещения формы вне заголовка описываем процедуру}
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
  if M.Result = htClient then
    M.Result := htCaption;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  hsWindowRegion, hsWindowRegion2: integer;
  p: array [0..11] of TPoint;
begin
  p[0].x:=30; p[0].y:=40;
  p[1].x:=80; p[1].y:=70;
  p[2].x:=95; p[2].y:=20;
  p[3].x:=110; p[3].y:=70;
  p[4].x:=160; p[4].y:=40;
  p[5].x:=130; p[5].y:=85;
  p[6].x:=260; p[6].y:=230;
  p[7].x:=110; p[7].y:=100;
  p[8].x:=95; p[8].y:=200;
  p[9].x:=80; p[9].y:=100;
  p[10].x:=30; p[10].y:=130;
  p[11].x:=60; p[11].y:=85;

  hsWindowRegion:=CreatePolygonRgn(P,12,Alternate);
  hsWindowRegion2:=CreateEllipticRgn(50,50,140,120);

  CombineRgn(hsWindowRegion, hsWindowRegion, hsWindowRegion2, rgn_or);
  SetWindowRgn(Handle, hsWindowRegion, true);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption:=TimeToStr(Time);
end;

end.

Код является частью программы на языке Delphi, которая создает оконную форму с меткой (Label1) для отображения времени и таймером (Timer1) для обновления времени. Форма также имеет компонент Image (Image1), который нужен для вывода рисунка на форме.

Когда форма создается (в процедуре FormCreate), программа создает регион (регистр) window, используя функцию CreatePolygonRgn, и комбинирует его с эллиптическим регионом, созданным с помощью функции CreateEllipticRgn. Затем она устанавливает этот регион для формы с помощью функции SetWindowRgn.

Когда таймер отсчитывает секунды (в процедуре Timer1Timer), программа обновляет текст метки Label1, чтобы отображать текущее время.

Кроме того, в коде есть процедура WMNCHitTest, которая позволяет перемещать форму вне заголовка окна. Это достигается с помощью обработки сообщения WM_NCHITTEST, которое отправляется системой при попытке клиентского ввода (например, мышью) в область формы. В этом случае программа изменяет результат на htCaption, чтобы форма могла быть перемещена вне заголовка окна.


В статье описывается создание формы Delphi, которая имеет окно в виде звезды, и реализация функции перемещения формы вне заголовка.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Интерфейс ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 17:09:31/0.010241985321045/2