2014-07-11 3 views
2

완벽하게 작동하는 Delphi XE2의 코드가 있습니다. 그러나 Delphi XE6에서는 작동하지 않습니다. AutoSize 속성을 true로 설정하여 Tform을 만듭니다. 나는 다른 패널을 만들기 위해 TPanel과 alTop을 버튼으로 사용합니다.Delphi XE6 TForm.AutoSize

procedure TForm2.Button1Click(Sender: TObject); 
var 
    t :TPanel; 
begin 
    t := TPanel.Create(self); 
    t.Parent := self; 
    t.Align := alTop; 
end; 

양식이 자동 크기가 아닙니다. 모든 패널을보고 싶으면 양식을 옮겨야합니다 (또는 크기를 조정하려고합니다 ....).

의견이 있으십니까? 이 실제로 행동의 변화이다

이 내 XE5에서입니다
t.Anchors:=[TAnchorKind.akTop]; 

가 (더 XE6이 없다)

+0

이 XE5에서 확인을 작동하는 것 같다. XE6 om을 설치하는 데 시간이 좀 걸릴 수 있습니다 ... –

+0

@LURD XE6에 좋지 않음 –

+2

AutoSize -> 자동으로 용지 크기를 조정합니다. alTop -> 패널 크기를 자동으로 조정하십시오. 두 가지 모두를 사용하면 좋지 않습니다. 그 중 하나는 우선 순위가 있어야하며, 이는 구현 세부 사항에만 의존합니다. –

답변

0

정렬되지는 앵커를 사용합니다. 내가보고있는 것을 재현 할 수 있습니다. 즉, XE2에서는 양식 크기가 변경되지만 XE6에서는 변경되지 않습니다.

수동 AdjustSize를 호출 할 수 있습니다이 문제를 해결하려면 다음

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Panel: TPanel; 
begin 
    Panel := TPanel.Create(self); 
    Panel.Parent := Self; 
    Panel.Top := ClientHeight; 
    Panel.Align := alTop; 
    AdjustSize; 
end; 
+0

앵커하기 전에 패널을 원하는 위치에 배치하고 크기를 지정하십시오. –

3

:

+0

'Panel.Parent : = Self;'XE5에는'OnFormResize' 이벤트가 발생하지만 XE6에는 발생하지 않습니다. 나는이 행동의 변화가 왜 도입되었는지 의문입니다. –

관련 문제