리사이즈할 때 폼이 지정한 값(300)보다 일단 작아졌다가 다시 300으로 리사이즈되기 때문에 생기는 현상입니다.
왼쪽 위를 드래그하면 일단 300보다 작아졌다가 다시 300으로 리사이즈된 거죠.
그런데 이건... VCL의 버그라고 보이네요. 일반 컨트롤과 달리 폼에서는 일단 리사이즈된 후에 다시 Constraints에서
지정한 사이즈로 리사이즈되는 것이 아니라, WM_GETMINMAXINFO 메시지를 이용해서 드래그하는 중에도 Constraints
이하로는 리사이즈되지 않도록 되어 있는데요. 방금 폼의 VCL 소스를 보니 그 루틴이 절대로(영원히!) 실행되지 않도록 된
로직 버그가 있군요. 볼랜드에 레포트하도록 하겠습니다.
어쨌든... VCL에서 그런 버그가 있더라도 직접 WM_GETMINMAXINFO 메시지를 처리해주면 됩니다.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=5895
참고로, WM_GETMINMAXINFO 메시지를 직접 처리하는 경우에는 Constraints를 잡아주면 안됩니다.
그럼...
서비 님이 쓰신 글 :
: this->Constraints->MinWidth = 300;
:
: 1. 폼에 최소 너비값을 300을 주고 리사이징을 합니다.
: 2. Right, Bottom 영역에서 마우스로 폼을 리사이징 할 때는 정상적으로 동작합니다.
: 3. Left, Top 영역에서 마우스로 폼을 리사이징 할 때는 폼이 최소 사이즈가 되었을 때 마우스가 움직이는 방향으로 폼도 같이 움직이게 됩니다.
:
: 이건 원래 빌더에서 그렇게 정책적으로 정한건지 좀 부자연스러운 동작으로 보입니다.
: 해결 할 수 있는 방법이 있을련지요.
:
: 매번 도움이 필요할 때만 찾아와서 죄송스럽네요 ^^
|