Доброго времени сутк, ALL.
Вопрос в следующем, есть такой вот простецкий код:
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('handle='+inttostr(handle));
borderStyle:=bsSizeable;
showmessage('handle='+inttostr(handle));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('handle='+inttostr(handle));
borderStyle:=bsNone;
showmessage('handle='+inttostr(handle));
end;
Обратите внимание, что при смене типа бордюра меняется handle окна.
Кто в курсе, по какой причине это происходит и какой эффект это может оказать на работу приложения.
(например, объекты при закрытии окна не уничтожатся автоматом или ещё чего)
Здравствуйте, TwisterMan, Вы писали:
Вот кусок из VCL5:
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;
Т. е. видим, что в Real-тайме окно убивается и создаётся заново (с новым стилем WS_EX_CLIENTEDGE или без него).
Отсюда новый Handle.
P.S. Иногда полезно заглянуть в исходники...
Здравствуйте, ak_miass, Вы писали:
>Вот кусок из VCL5:
>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;
>Т. е. видим, что в Real-тайме окно убивается и создаётся заново (с новым стилем WS_EX_CLIENTEDGE или без него).
>Отсюда новый Handle.
Спасибо.
>P.S. Иногда полезно заглянуть в исходники...