![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Form.CanResize:=False и програмное изменение размеров [D6, WinXP]
Ajax © (2005-08-03 12:33:00)Почему при выставлении Form.CanResize:=False перестает работать програмное изменение размеров? IMHO CanResize должно относится только к действию пользователя. Или нет?
Если сейчас все правильно, тогда как не позволять пользователю изменять размеры, но иметь возможность делать это програмно?
Спасибо.
Ajax (2005-08-03 17:18:00) [1]>[3] ECM © (03.08.05 14:57)
Спасибо! Просто дело в том, что я на автомате ставил Form.Style ornot WS_THICKFRAME, когда пытался аналогично проблему решить :-)
Все вопрос закрыт.
ECM (2005-08-03 14:57:00) [2]Form.CanResize:=TRUE
Form.Style := Form.Style and not WS_THICKFRAME;
enjoy!
Ajax (2005-08-03 14:36:00) [3]Thank you. But what about my first question? When I set bsSingle border style in VCL, changing form's size programatically works fine. For KOL I use temporary re-enabling resizing, but I think that it isn't right. Also there is a visual effect of changing CanResize state. So it isn't good method.
Thaddy (2005-08-03 13:09:00) [4]This is the Windows API works.
If you want to set it programmatically, you have to temporary re-enable resizing.
On some older Windows versions it may be even necessary to recreate the Window to obtain the proper result.
On Me/XP this is not necessary.
Anyway, should you need it, here's code that does this for KOL:
// Surfaces protected fields and methods outside kol.pas
type
PHack = ^THack;
THack = object(TControl)end;
// KOL recreatewindow, like in the VCL
// Handy for adapting WindowClass parameters like
// CS_NOCLOSE at runtime.
procedure ReCreateWindow(aControl:PControl);
begin
DestroyWindow(aControl.Getwindowhandle);
PHack(aControl).fHandle:=0;
aControl.CreateWindow;
end;