Revert to Win 3.1 form resizing behaviour (Views: 28)
Problem/Question/Abstract: Has anyone found a way to prevent the Paint method from firing when you're in the middle of resizing a form? In other words, is there some way to ghost the change until the user actually releases the mouse button, instead of redrawing the form constantly during the resize? Answer: You can revert to the way a window was resized in Win 3.1 - with a sizing frame and a redraw only when the user let go of the mouse. In your forms declaration you place this: private {Private declarations} FDragFullWindowState: LongBool; procedure WMEnterSizeMove(var msg: TMessage); message WM_ENTERSIZEMOVE; procedure WMExitSizeMove(var msg: TMessage); message WM_EXITSIZEMOVE; The implementation is like this: procedure TProdBuilderMainForm.WMEnterSizeMove(var msg: TMessage); begin SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, @FDragFullWindowState, 0); if FDragFullWindowState then SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Ord(False), nil, 0); end; procedure TProdBuilderMainForm.WMExitSizeMove(var msg: TMessage); begin if FDragFullWindowState then SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Ord(True), nil, 0); end; |