문제

나는 그것을 시도하는 데 오랜 시간을 보내더라도 해결할 수없는 문제가 있습니다.

나는 보통 그리드 파넬을 사용하여 형태의 컨트롤을 정렬합니다. 그러나 성가신 버그가 있습니다. 그리드 파넬 정렬 모드가 Alclient이고 부모 창을 최대화하면 그리드 파넬은 해당 창의 새 크기로 조정되지만 그리드에 놓인 컨트롤은 그렇지 않습니다. 그들은 창을 크기를 조정하기 전과 같은 위치에 머물러 있습니다. 첫 번째 창의 최대화에서만 발생합니다. 창의 먼저 수동으로 크기를 조정하면 모든 것이 정상입니다. 두 번째 크기 조정 이벤트 (??) 후 그리드가 자식 제어를 조정한다고 생각합니다.

이 버그와 관련하여 그리드 파넬을 올바르게 작동 시키게하려면 어떻게해야합니까? 메시지를 보내기에 충분할 수 있습니다 (그러나 어떤 메시지?) 모르겠습니다. 나는 재조정, 새로 고침 등을 사용하려고했지만 도움이되지 않았습니다.

미리 도와 주셔서 감사합니다.

마리우스.

도움이 되었습니까?

해결책

아, 나도 비슷한 문제가있었습니다. VCL의 크기 조정 문제와 관련이있을 수 있습니다. 시도하고 싶을 수도 있습니다 Andreas Hausladen의 수정. 대부분의 경우에 저에게 효과가있는 것 같습니다.

다른 팁

나는 하나의 트릭을 찾았다.

안에 OnResize 그리드 파넬의 부모의 사건, 그리드 파넬의 너비를 1 픽셀로 변경하십시오.

그런 다음 Gridpanel은 크기가 변경된 다음 Gridpanel에서 하위 제어를 재 배열합니다.

샘플은 아래입니다 ..

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.Width := GridPanel1.Width - 1;  // subtract 1
  GridPanel1.Width := GridPanel1.Width + 1;  // recover width by adding 1
end; 

너비를 변경 / 컨트롤을 무효화하는 것은 효과가 없습니다 (최근 버전의 Rad Studio에서 변경된 것은 무엇입니까?).

어쨌든 해당 라인을 따라 비슷하고 간단한 해결 방법은 다음과 같습니다.

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.ControlCollection.BeginUpdate;
  GridPanel1.ControlCollection.EndUpdate;
end; 

여러 프로젝트 에서도이 오류가있었습니다. 나는 이것을 어떻게 해결했는지 잘 모르겠습니다 (이전 고용주를위한 프로젝트에 있었고 더 이상이 소스 코드에 액세스 할 수 없습니다). 나는 GridPanel이 배치 된 부모 프레임이나 형태를 TE Redraw / Refresh를 가지고 있다고 생각합니다.

소유자의 크기를 조정하십시오. 나는 그것을 테스트하지 않았다. 나는 그것이 일하기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top