2013-11-03 4 views
2

TControlBar 내부의 도구 모음 위치 그룹을 재설정하려고합니다. 사용자는 툴바를 드래그하여 도킹 해제 할 수 있습니다. 툴바를 재정렬 할 리셋 버튼을 미리 설정하려고합니다.프로그래밍 된 도킹 된 도구 모음 위치 설정

툴바를 원하는 순서대로 재설정하는 데 문제가 있습니다. 내 ManualDock 호출의 결과는 코드가 실행되기 전에 배치 된 방법에 따라 달라지는 것 같습니다. 내가 성공하지 않고 다음 코드의 변종을 시도

 
[Toolbar1][Toolbar2] 
[Toolbar3][Toolbar4] 

: 화면에

// I found some references to different docking issues when controls were visible 
// Hide everything first and then show them in the order I want them added. 
Toolbar1.Visible := false; 
Toolbar2.Visible := false; 
Toolbar3.Visible := false; 
Toolbar4.Visible := false; 

ToolBar1.Visible := true; 
ToolBar1.ManualDock(DockSite); 
ToolBar1.Left := 0; 

Toolbar2.Visible := true; 
Toolbar2.ManualDock(DockSite, Toolbar1, alRight); 

Toolbar3.Visible := true; 
Toolbar3.ManualDock(DockSite, Toolbar1, alBottom); 
Toolbar3.Left := 0; 

Toolbar4.Visible := true; 
Toolbar4.ManualDock(DockSite, Toolbar3, alRight); 

결과는 따라 다릅니다

는 나는이 같은 두 개의 열로 배치하려는 4 도구 모음이 내 코드가 실행되기 전에 툴바가 시작된 곳.

내가 시도 여러 가지 방법 - 도구 모음의 상단을 설정 및 수동 도킹 호출 후에 왼쪽 - 위 대신 옵션의 alLeft /을 alTop을 - ManualDock 통화에서 두 번째 PARM로 무기 호를 사용하고 alTop으로 모든 것을 설정

단지 두 개의 도구 모음을 사용하여 동일한 행 (나란히) 또는 두 행에 표시되도록 노력했습니다. 다시 한 번 내 결과는 코드가 실행되기 전에 툴바가 시작된 위치에 따라 다릅니다.

답변

3

숨기기, 고정, 위치 설정 및 표시는 예상 된 결과를 가져와야합니다.

begin 
    ToolBar1.Visible := false; 
    ToolBar2.Visible := false; 
    ToolBar3.Visible := false; 
    ToolBar4.Visible := false; 
    ToolBar1.ManualDock(ControlBar1); 
    ToolBar2.ManualDock(ControlBar1); 
    ToolBar3.ManualDock(ControlBar1); 
    ToolBar4.ManualDock(ControlBar1); 

    ToolBar1.Left := 0; 
    ToolBar1.Top := 0; 
    ToolBar2.Left := ToolBar1.Width; 
    ToolBar2.Top := 0; 
    ToolBar3.Left := 0; 
    ToolBar3.Top := MAX(ToolBar1.Height, ToolBar2.Height); 
    ToolBar4.Left := ToolBar3.Width; 
    ToolBar4.Top := ToolBar3.Top; 

    ToolBar1.Visible := true; 
    ToolBar2.Visible := true; 
    ToolBar3.Visible := true; 
    ToolBar4.Visible := true; 
end; 
+0

그것은 나를 위해 그것을했다. 이 코드와 다른 코드 사이에서 다른 옵션을 시도하면 키가 왼쪽 위 및 위쪽 위치를 변경하기 전에 모든 도구 모음에서 ManualDock을 호출하는 것으로 보입니다. –