Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.08;
Скачать: CL | DM;

Вниз

Манипулирование с заголовком формы   Найти похожие ветки 

 
МитяЙ2 ©   (2003-07-07 04:31) [0]

Здравствуйте, Мастера.

Подскажите как убрать заголовок формы

....
потом что-то сделать
....

И вновь показать заголовок формы.


 
Evgeny V ©   (2003-07-07 05:33) [1]

x=GetWindowLong(Form1->Handle,GWL_STYLE);
x&=~WS_CAPTION;// убрать заголовок
SetWindowLong(Form1->Handle,GWL_STYLE,x);
x|=WS_CAPTION;// показать заголовок заголовок
SetWindowLong(Form1->Handle,GWL_STYLE,x);
код на си, x&=~WS_CAPTION; в паскле x:=x AND (NOT WS_CAPTION);,
x|=WS_CAPTION; в паскале x:=x OR WS_CAPTION; (паскаль знаю плохо, возможно расшифровал с ошибкой, извини)



 
Митяй2 ©   (2003-07-07 07:31) [2]

Спасибо, попробую...


 
Митяй2 ©   (2003-07-08 17:57) [3]

Попробовал, и вот что получилось:

При выполнении:
WindInfo:=GetWindowLong(Form1.Handle,GWL_STYLE);
WindInfo:=WindInfo AND NOT(WS_CAPTION);
SetWindowLong(Form1.Handle,GWL_STYLE,WindInfo);

Заголовок становиться ТОЛЬКО НЕДОСТУПНЫМ, но видим.
А так же окно не прорисовывается с краев, не прорисовка видна
в областях шириной слева и справа, и высотой сверху и снизу
всего ОДИН пиксел.

При выполнении:
WindInfo:=GetWindowLong(Form1.Handle,GWL_STYLE);
WindInfo:=WindInfo OR(WS_CAPTION);
SetWindowLong(Form1.Handle,GWL_STYLE,WindInfo);

Заголовок принимает первоначальные свойства.


 
Th ©   (2003-07-08 18:37) [4]


Form.BorderStyle:=bsNone;

...Do something...

Form.BorderStyle:=bsSizeable; // or other



Если надо, чтобы исчезал ТОЛЬКО заголовок, а sizeable border (thickframe в терминологии windows)оставался, то так:


Form.BorderStyle:=bsNone;
SetWindowLong(Handle,GWL_STYLE,GetWindowLong(Handle,GWL_STYLE)+WS_THICKFRAME);
SendMessage(Handle,CM_BORDERCHANGED,0,0);


...Do something...

Form.BorderStyle:=bsSizeable; // or other



To Митяй2
Попробуйте после вызова SetWindowLong делать следующее:
SendMessage(Handle,CM_BORDERCHANGED,0,0);

Мне помогло в свое время


 
Митяй2 ©   (2003-07-09 05:39) [5]

Разобрался - нужно ещё менять высоту формы:

procedure TFmAuto.HideTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)=WS_CAPTION then
begin
case BorderStyle of
bsSingle, bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or DS_MODALFRAME or WS_DLGFRAME);
end;
Height:=Height-GetSystemMetrics(SM_CYCAPTION);
Refresh;
End;
end;

procedure TFmAuto.ShowTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)<>WS_CAPTION then
begin
case BorderStyle of
bsSingle,bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or DS_MODALFRAME or WS_DLGFRAME);
end;
( SM_CYCAPTION)
Разобрался - нужно ещё менять высоту формы:

procedure TFmAuto.HideTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)=WS_CAPTION then
begin
case BorderStyle of
bsSingle, bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or DS_MODALFRAME or WS_DLGFRAME);
end;
Height:=Height-GetSystemMetrics(SM_CYCAPTION);
Refresh;
End;
end;

procedure TFmAuto.ShowTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)<>WS_CAPTION then
begin
case BorderStyle of
bsSingle,bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or DS_MODALFRAME or WS_DLGFRAME);
end;
Height:=Height+getSystemMetrics(SM_CYCAPTION);
Refresh;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-24465
Andrey V.
2003-08-27 20:55
2003.09.08
Разница в создании формы или почему я получаю AV


6-24572
alak
2003-06-30 10:00
2003.09.08
Pagecontrol and webbrowser


6-24610
UserName
2003-07-03 20:47
2003.09.08
record и SendBuf ReceiveBuf


14-24707
Романов Р.В.
2003-08-19 09:39
2003.09.08
Второй раз падает база в клиенте для форумов DMFC


14-24616
Jao
2003-08-17 17:12
2003.09.08
Нет бардаку на винте!!! Оставь свое мнение.