2013-03-19 5 views
1

사용자가 크기를 조정할 때 비례 적으로 크기를 조정할 수 있습니다. 나는 다음과 같은 코드로 이벤트 OnCanResize에 이런 짓을했는지 :더블 클릭시 양식 최대화 비활성화

if (AMsg.CmdType = SC_MAXIMIZE) then MessageBeep(0); 
:

NewHeight := Round(Height/Width* NewWidth); 

내가 그것을 다음과 같은 코드로 메시지 WMSysCommand을 치료하지 않도록 관리 최대화 버튼을 클릭하여 양식을 극대화하는 사용자를 방지하기 위해

내가 할 수 없었던 것은 사용자가 제목 표시 줄을 두 번 클릭 할 때 양식을 최대화하지 못하게하기 위해서였습니다. Delphi에서이 작업을 수행 할 수있는 방법이 있습니까?

사용자가 양식의 크기를 조정하지 못하도록하고 싶습니다. 나는 최대화 버튼을 클릭하고 제목 표시 줄을 두 번 클릭했을 때 크기 조절을 막기를 원합니다.

답변

7

으로 첫째, 당신은 WM_SYSCOMMAND 메시지 핸들러에서 사용 후 바로 Object Inspector에서 False로 BorderIcons.biMaximize를 설정하여 다른 단어 양식의 BorderIcons 속성에서 또는에서 biMaximize 옵션을 제거 한 해결 방법을 제거하고거야 최대화 버튼을 얻고 양식 제목을 더블 클릭하여 최대화 비활성화.

실행시 간단히 사용할 수 있습니다

BorderIcons := BorderIcons - [biMaximize] 
6

대안을 @로 TLama의 명백한 answer :

SetWindowLong(Handle, GWL_STYLE, 
    GetWindowLong(Handle, GWL_STYLE) and not WS_MAXIMIZEBOX); 

BorderIcons 설정 반대로,이의 재 작성을 강요하지 않습니다 창 핸들 (RecreateWnd은 호출되지 않습니다). 창 상태/핸들을 잃지 않고 동적으로 창 스타일을 전환/변경할 때 유용 할 수 있습니다.

관련 문제