![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мерцает окно при изменении размеров. [D7, XP]
Псарь © (2011-09-21 17:15:00)Окно работает в двух размерах, при переключении видны мерцания.
Как от них избавиться?
Функция LockWindowUpdate не помогает.
procedure TForm1.SetState(IsShow: boolean);
begin
If IsShow then
begin
BorderStyle := bsToolWindow;
Left := Centered(Screen.Width, FNormalWidth);
Top := Centered(Screen.Height, FNormalHeight);
ClientWidth := FNormalWidth;
ClientHeight:= FNormalHeight;
end else
begin
LockWindowUpdate(Handle);
BorderStyle := bsNone;
Left := 100;
Top := 100;
ClientWidth := 100;
ClientHeight:= 100;
LockWindowUpdate(0);
end;
end;
Псарь (2011-09-21 19:03:00) [1]
> Омлет © (21.09.11 18:54) [5]
>
> Зачем менять BorderStyle?
Секрет фирмы. :)
Омлет (2011-09-21 18:54:00) [2]Зачем менять BorderStyle?
Псарь (2011-09-21 18:35:00) [3]
> RWolf © (21.09.11 17:51) [2]
О, гораздо меньше мерцает. Спс. :)
> Sapersky (21.09.11 17:55) [3]
> RecreateWnd;
Делал окно на время не видимым, толку ноль.
Скрыть пересоздание не удается.
Sapersky (2011-09-21 17:55:00) [4]Дело не столько в размерах, сколько в BorderStyle:
procedure TCustomForm.SetBorderStyle(Value: TFormBorderStyle);
begin
if FBorderStyle <> Value then
begin
FBorderStyle := Value;
AutoScroll := FBorderStyle in [bsSizeable, bsSizeToolWin];
if not (csDesigning in ComponentState) then RecreateWnd;
end;
end;
RWolf (2011-09-21 17:51:00) [5]SetBounds?
Псарь (2011-09-21 17:17:00) [6]Лучше так:
procedure TForm1.SetState(IsShow: boolean);
begin
If IsShow then
begin
BorderStyle := bsToolWindow;
Left := 80;
Top := 88;
ClientWidth := 200;
ClientHeight:= 200;
end else
begin
LockWindowUpdate(Handle);
BorderStyle := bsNone;
Left := 100;
Top := 100;
ClientWidth := 100;
ClientHeight:= 100;
LockWindowUpdate(0);
end;
end;