Прозора форма

Наведу простий приклад, як можна використовувати цю форму. Припустимо Вам
треба зробити програму-напоминалку. Висить ця форма і на ній постійно
відображаються Ваші зустрічі, справи, свята або інша корисна інформація.
Вийде такий собі Activ Desctop:) Але буде він жерти ресурсів на порядки
меньше.Реалізуется все це дуже просто. Переписуємо конструктор:

constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
HorzScrollBar.Visible: = False; / / прибираємо сколлбари, щоб не заважали
VertScrollBar.Visible: = False; / / при зміні розмірів форми
RebuildWindowRgn; / / будуємо новий регіон
end;

А ось процедура "перебудови" регіону форми:

procedure TForm1.RebuildWindowRgn;
var
FullRgn, Rgn: THandle;
ClientX, ClientY, I: Integer;
begin
/ / Визначаємо відносні координати клієнтської частини
ClientX:= (Width – ClientWidth) div 2;
ClientY:= Height – ClientHeight – ClientX;
FullRgn: = CreateRectRgn (0, 0, Width, Height); / / створюємо регіон для всієї форми
/ / Створюємо регіон для клієнтської частини форми і віднімаємо його з FullRgn
Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth,
ClientY +ClientHeight);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
/ / Тепер додаємо до FullRgn регіони кожного контрольного елемента
for I:= 0 to ControlCount -1 do
with Controls[I] do begin
Rgn: = CreateRectRgn (ClientX + Left, ClientY + Top, ClientX + Left + Width,
ClientY + Top + Height);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Or);
end;
SetWindowRgn (Handle, FullRgn, True); / / встановлюємо новий регіон вікна
end;

І останній штрих. Якщо Ваша форма, буде із змінними розмірами, то
Вам треба додати:

procedure TForm1.Resize;
begin
inherited;
RebuildWindowRgn; / / будуємо новий регіон
end;


Переміщення форми


Ще один штрих – довільне переміщення форми, а не за Title Bar. Так
зроблено у програмі WinAmp. Пишемо всього одну процедуру:

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited; / / виклик успадкованого обробника
if M. Result = htClient then / / Миша сидить на вікні? Якщо так
M. Result: = htCaption; / / – то нехай Windows думає, що миша на caption bar
end;

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*