작은 문제가 하나 있습니다. 일부 컨트롤을 동적으로 생성하고 TScrollbox
구성 요소에 배치합니다. 그러나 스크롤 상자가 보이면 사용자가 생성되고 배치 된 각 컨트롤을 명확하게 볼 수 있다는 것을 알게되었습니다. 그래서 많은 일이 끝나고 느린 것처럼 보입니다.TScrollBox에서 스크롤 막대를 다시 표시 한 후 표시하는 방법은 무엇입니까?
스크롤 상자를 숨기고 그 위에 모든 컨트롤을 생성 했으므로 훨씬 적은 시간과 깜박 거림이 필요하지 않았습니다. 그러나 여기에 문제가 있습니다. 실제로 스크롤 상자를 표시 할 때 폼의 크기를 조정할 때까지 해당 '스크롤 막대가 나타나지 않습니다. (스크롤 상자의 정렬은 alClient
입니다.
해결 방법에 대한 아이디어가 있습니까?
시도했지만 다시 작동하지 않았습니다. 새로 고침이 작동하지 않았습니다.
당신에게편집 감사합니다 내가 숨기고 스크롤 박스를 표시하는 방법을
TScrollBox(Form1.FindComponent('termai')).Visible:= false;
for I := 0 to mazgas.GrafasPagalVarda(sActiveGrafas).Termai.Count - 1 do
begin
fNaujasTermas(i,oHook);
end;
TScrollBox(Form1.FindComponent('termai')).Visible := true;
위의 코드를 보여줍니다.
fNaujasTermas
은 여러 트랙바, 이미지 및 수정이있는 패널을 생성합니다.
단계별 설명이 무엇인지 잘 모르겠습니다. 많은 컨트롤이있는 패널을 생성하고 ScrollBox를 부모로 설정하는 절차를 수행하기 만하면됩니다. 아무것도 생성하지 않고 스크롤 박스를 숨기고 모든 작업이 끝난 후에 다시 숨김을 해제하십시오.
아, 패널이 alTop
으로 정렬되었습니다. 따라서 새 패널이 만들어져 스크롤 상자에 배치 될 때마다 맨 위에 표시되고 다른 모든 패널은 아래로 이동합니다. 나는이 문제를 재현하는 방법을 알고 있다고 생각 :
이것은 내가 자체가
pTermai := TScrollBox.Create(Self);
pTermai.Parent := pLeft;
pTermai.Align := alClient;
pTermai.Name := 'termai';
pTermai.BorderStyle := bsNone;
pTermai.VertScrollBar.Increment := 40;
EDIT2 스크롤 박스를 생성하는 방법이다.
새 패널을 스크롤 상자에 추가 할 때 이미 해당 스크롤 상자에있는 모든 컨트롤의 전체 높이로 계산되지 않는 것으로 보입니다.
예를 들어 설명해주십시오. 1 Panel의 높이가 200px라고 가정 해 보겠습니다.
ScrollBox 높이가 300px입니다.
그래서 두 번째 패널의 절반이 보이지 않더라도 스크롤바는 스크롤바를 표시하지 않습니다. 하나 더 패널 = 600px 합계를 추가하면 scrollbox는 스크롤 막대를 보여 주며, 스크롤 막대는 3 개가 아닌 2 개 패널에서만 스크롤하는 것처럼 보입니다. 이러한 창을 스크롤하려고하면 값이 다시 계산되고 모든 것이 잘 표시됩니다.
그래서 주된 문제는 스크롤 상자 표시 스크롤 막대를 "시간상"으로 설정하여 패널을 반으로 자르지 않게하는 방법입니다.
내가 D2009에 문제를 재현 할 수없는입니다. –