Delphi : Align = Altop으로 구성 요소의 시각적 순서를 프로그래밍 적으로 조정하는 방법

StackOverflow https://stackoverflow.com/questions/1259849

  •  12-09-2019
  •  | 
  •  

문제

나는 여러 패널이있는 양식을 가지고 있으며, 각 패널은 allign = altop을 가지고 있으므로 양식 상단에서 잘 쌓입니다.

그러나이 패널의 모양 순서를 동적으로 변경하고 싶습니다. 즉, 위아래로 움직입니다. 이것을하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

상단에 정렬 된 패널을 설정하여 상단으로 쉽게 이동할 수 있습니다. 맨 위 속성 0. 리버스 요청 순서 (하단 패널 먼저)로이를 수행하면 완료됩니다.

다른 팁

마우스와 함께 설계 시간에 이동하는 것과 같은 방식으로 이동하십시오. 현재 패널의 설정 Top 재산보다 1에 대한 재산 Top 현재 패널 아래에있는 패널의 속성. VCL은 나머지를 처리합니다.

여러 패널을 이동 해야하는 경우 BeginDeferWindowPos. 원하는 좌표로 모든 패널을 조정하십시오. DeferWindowPos, 그리고 그들 모두가 한 번에 움직이게합니다. EndDeferWindowPos.

부모 제어에서 양식을 동적으로 제거/추가하는 프레임 워크를 구축하는 것이 좋습니다. 일반적으로 생성/추가 순서는 시각적 순서이지만, 귀하의 질문에서 응용 프로그램 수명 동안 순서가 변경되기를 원하므로 원래 생성 순서를 변경하는 것만으로는 충분하지 않습니다.

순서를 변경하려면 시도해보십시오.

  1. 패널을 숨 깁니다
  2. 부모 컨트롤에서 패널을 제거하십시오
  3. 원하는 새 순서로 패널을 부모 제어에 추가하십시오.
  4. 패널을 보여줍니다

최고 정렬을 시도하는 것은 어떻습니까? TGridPanel 하나의 열과 N 대신 줄은 --- 상단 정렬 패널을 재정렬하는 것은 약간의 고통입니다.

(메모: TGridPanel 내가 정확하게 기억한다면 Delphi 2007 이상에서 사용할 수 있습니다).

패널 상단을 변경하면 시각적으로 패널 변경 순서가 변경됩니다.

이것을 시도하십시오 (모든 패널이 정렬되었습니다 알트 그리고 같은 높이로):

패널 0
패널 1
패널 2
패널 3
패널 4

~에 onclick 이벤트 모든 패널 이 작업을 수행:

 TPanel(Sender).Top := TPanel(Sender).Top - TPanel(Sender).Height - 2;

패널을 클릭하면 한 위치가 올라갑니다.

그것이 아이디어입니다. 상단 X 픽셀을 변경하십시오.
마찬가지로, 당신이 이것을한다면 :

   TPanel(Sender).Top := TPanel(Sender).Top - (TPanel(Sender).Height * 2)- 2; 

패널은 2 개의 위치입니다.

추가 : 드래그 앤 드롭을 사용하는 경우이 이벤트는 위치 (x 및 y)를 반환합니다. 원래 위치 및 엔드 위치를 사용하면 패널에 ASIGN의 WEW 상단을 계산할 수 있습니다.

변명 내 가난한 영어를 형성합니다. 문안 인사

다음 코드를 사용했습니다.

procedure Show_Hide (Flag_Show : boolean);
begin
  if Flag_Show then
  begin
    with Panel_1 do begin Align := alTop; Visible := true; end;
    with Panel_2 do begin Align := alTop; Visible := true; end;
    with Panel_3 do begin Align := alTop; Visible := true; end;
    with Panel_4 do begin Align := alTop; Visible := true; end;
  end else
  begin
    with Panel_1 do begin Visible := false; Align := alNone; end;
    with Panel_2 do begin Visible := false; Align := alNone; end;
    with Panel_3 do begin Visible := false; Align := alNone; end;
    with Panel_4 do begin Visible := false; Align := alNone; end;
  end;
end;

내 Wish Panel_1 Panel_2 Panel_3 Panel_4에 따라

나는 그것의 오래된 게시물을 알고 있지만 기본적으로 저를 도와주었습니다 - 상단 속성을 0으로 설정한다는 아이디어. 나는 앱 사용자에게 달려있는 위치 원인을 프로그래밍적으로 설정한다는 아이디어를 사용할 수 없다. 앱에 일부 차트를 표시 할 수있다. 그런 다음 Teecharts의 모든 패널 (부모)은 Altop을 정렬합니다. 나는 그들의 상단 속성을 역 순서로 0으로 설정 한 다음 사용자 입력에 따라 가시적 인 true 또는 false를 설정합니다 ...

감사.

panel3.Visible  := True;
panel3.Top      := 0;

panel2.Visible  := True;
panel2.Top      := 0;

panel1.Visible  := True;
panel1.Top      := 0;

마지막은 첫 번째가 될 것입니다.

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