2009-08-06 2 views
3

새 Delphi 폼을 만들고 OnResize 이벤트를 연결 한 다음 앱을 실행하면 OnResize가 실행되기 전에 창이 표시됩니다. 내가 모르는 것은 이것이 어떤 창문에 대해서도 항상 일어날 것인지 아닌지입니다.델파이 양식은 표시 될 때 항상 OnResize를 실행합니까?

(Windows API에 익숙한 사용자는 TCustomForm.ShowingChanged (Forms.pas line 5503 in Delphi 2007)의 ShowWindow 호출을 추적하여 분명히 WM_SIZE을 트리거합니다. 새 창에 다른 속성이 설정되어 있지 않습니다. ShowWindow가 항상 WM_SIZE을 발생시키는 것을 확인하지 못 했으므로이 값을 믿을 수 있는지 여부를 모르겠습니다.)

So : TForm 항상 발사 OnResize 처음 표시 될 때? 또는 상황 (어쩌면 창 크기를 조정할 수없는 경우, 아마도 Position 속성에 특정 값이있는 경우 등). 여기서 OnResize는 이 아니며이 먼저 표시되기 전에 실행됩니까?

답변

6

아니요,이 이벤트는 BorderStyle과 같은 항목에 따라 양식이 표시 될 때 항상 실행되는 것은 아닙니다. 예를 들어, 시작시 bsSingle에 대해 발생하지만 bsDialog에는 발생하지 않습니다.

테스트하기 쉽습니다. 기본 양식의 OnResize 이벤트에 일부 로깅 코드를 추가하고 BorderStyle을 변경하고 응용 프로그램을 실행하십시오.

+0

가능한 모든 속성 조합을 테스트해야한다고 생각했습니다. OnResize가 아닌 경우를 찾기가 쉽지 않을 것이라고 솔직하게 기대하지 않았습니다. 그러나 답을 알고있는 것이 좋다. 감사! –

관련 문제