2009-06-25 3 views
0

CoolBands를 CoolBar의 왼쪽에 정렬 할 수 있습니까? CoolBar (Form)의 크기가 조절되고 CoolBands가 아래 행으로 이동하면 밴드가 (오른쪽 대신) 막대의 왼쪽에 정렬되어야합니다. 항목이 더 이상 한 행에 들어 가지 않으면 메뉴 비헤이비어와 유사합니다.Delphi TCoolBar - CoolBand 정렬

더 나은 것은 밴드의 조정을 저장할 수 있습니까?

답변

0

각 밴드의 MinWidth 속성을 설정하고 CoolBar AutoSize 속성을 True로 설정하면 밴드가 MinWidth에 도달하면 자동으로 래핑됩니다.

: 위의 내용은 여전히 ​​정확하지만 의견 섹션의 새로운 정보로 확장해야합니다. Coolbar는 항상 컨트롤의 너비를 채우려고하므로 마지막 밴드가 늘어나 공간을 차지합니다. 줄무늬 컨트롤에 MaxWidth 제약 조건을 추가하면 밴드가 줄 지어 늘어서면서 오른쪽으로 정렬됩니다. 가장 좋은 해결책은 MinWidth를 원하는 값으로 설정하고 CoolBar가 최대 너비를 결정하도록하는 것입니다.

조정을 저장 하시겠습니까? 각 쿨 밴드의 정확한 배치를 의미합니까? 그렇다면 직접 저장할 수 있다고 생각하지 않습니다. 그러나 레이아웃을 재현하는 것은 사소한 일입니다. 각 밴드의 구분 및 폭 속성을 저장하고 순서대로 적용하십시오. 최선의 전략은 폼 (또는 TCoolBar)의 크기를 조정하고 각 밴드마다 Break를 적용한 다음 각 밴드의 너비 (루프를 두 번) 적용하는 것이라고 생각합니다.

그래도 작동하지 않으면 Windows 메시지를 직접 호출 해보십시오. 이렇게하면 두 속성을 동시에 설정할 수 있습니다. 작동해야하지만 기존 스타일과 동일한 위 이전 스타일를 만드는 것이 필요합니다

uses 
    CommCtrl; 
... 
var 
    Info: TRebarBandInfo; 
... 
    ZeroMemory(@Info, SizeOf(Info)); 
    Info.cbSize := SizeOf(Info); 
    Info.fMask := RBBIM_SIZE + RBBIM_STYLE; 
    Info.cx := 400; // Your desired width 
    Info.fStyle := RBBS_BREAK + OldStyle; 
    SendMessage(Coolbar.Handle, RB_SETBANDINFO, 0, Integer(@Info)); 

. TCoolBar.UpdateItem에 코드의 상당 부분을 복사하거나 RB_SETBANDINFO 메시지를 먼저 보내야합니다. 고통 스럽기 때문에 Break and Width를 지정하십시오.

Delphi Windows SDK 도움말 파일에서 필요한 경우 모든 메시지에 대한 정보는 Rebar Reference를 확인하십시오. 내 도움말 URL (도움말 뷰어의 경우)은 입니다. ms-help : //embarcadero.rs2009/ShellCC/platform/commctls/rebar/reflist.htm

+0

AutoSize 및 MinWidth가 이미 설정되어 있으므로 그에 따라 밴드가 래핑됩니다. 그러나 새 행이 시작되면 새 행의 밴드가 오른쪽으로 정렬됩니다. 조금 이상해 보입니다. –

+0

나는 그것을 보지 못한다. 밴드가 나를 위해 전체 줄을 채 웁니다. 밴드의 컨트롤에 제약 조건을 설정하면 밴드가 왼쪽으로 이동합니다. BiDi 모드를 오른쪽에서 왼쪽으로 설정하는 경우에도 제대로 작동하지 않습니다. 아마도 밴드, 쿨바 및 폼의 설정에 대해 더 자세히 알려줄 수 있습니까? Window XP SP 3을 실행 중입니다. 아마도 Windows 버전일까요? 아마도 빈 밴드가 있습니다. –

+0

또한 상태 복원에 대한 내 답변에 만족합니까? –