양식을 더 매끄럽게 만드는 방법은 무엇입니까?
문제
많은 컨트롤로 양식을 크기를 조정할 때, 깜박 거리는데서 형태는 나쁘게 보입니다. 매끄러운 양식 크기 조정을위한 몇 가지 팁은 무엇입니까?
해결책
procedure TForm1.WMEnterSizeMove(var Message:TWMMove);
begin
Self.DisableAlign;
end;
procedure TForm1.WMExitSizeMove(var Message:TWMMove);
begin
Self.EnableAlign;
end;
다른 팁
WM_SetRedRaw를 사용해보십시오 (~ 아니다 Lockwindowupdate).
당신은 또한 살펴볼 수도 있습니다 연기.
복잡한 형태는 종종 중첩 패널로 구성되며 다시 칠한 과정은 깜박일 수 있습니다. 이 경우 프로젝트의 경우에는 두 가지 쉬운 솔루션이 있습니다. ~할 것 같다 돕다:
- 속성을 비활성화합니다
FullRepaint
패널에. - 속성을 활성화하십시오
DoubleBuffered
당신의 형태에. 객체 검사관 에서이 속성을 찾지 못하므로DoubleBuffered := true;
Formcreate에서.
나는 이것을 다음과 같이 가지고있다 :
- 양식의 'onresize'이벤트에서는 모든 어린이 컨트롤을 숨기고 약 500ms의 진드기로 타이머를 시작하는 일상이 있습니다.
- 타이머가 발사되면 비활성화 한 다음 모든 어린이 컨트롤을 표시되도록 설정하십시오.
이 활동을 가지고 놀면 크기를 조정하는 동안 비워지는 형태를 얻지 만 '놓아 놓을 때'깔끔하게 채워집니다.
브리
나는 더 이상 정렬하여 깜박임을 피합니다 1 동부의 뜻alClient
부모당 구성 요소는 항상 a와 쌍을 이룹니다 alClient
(예 : a TPanel
) 다른 모든 구성 요소를 포함합니다. 경계가없는 패널로 그룹화하십시오.
세 가지를 결합하고 싶다고 말하십시오. alLeft
, alTop
그리고 alClient
메인 뷰를 위해. 이것을하지 마십시오 :
Form
alTop
alLeft
alClient // your main view
대신에 이것들을 다음과 같이 포함시킵니다.
Form
alTop
alClient // panel to avoid flicker
alLeft
alClient // your main view
몇 가지를 포함시키는 것과 같은 이야기 alTop
집단.
제휴하지 않습니다 StackOverflow