簡體   English   中英

Delphi TCoolBar-CoolBand對齊

[英]Delphi TCoolBar - CoolBand alignment

是否可以將CoolBand對准CoolBar的左側? 意味着當調整CoolBar(窗體)的大小並且CoolBands移動到下面的行時,Band應該與Bar的左側(而不是右側)對齊。 當菜單項不再適合一行時,類似於菜單行為。

還有可能節省頻段的調整嗎?

如果您設置每個波段的MinWidth屬性並將CoolBar AutoSize屬性設置為True,則當波段處於其MinWidth時,它將自動包裝。

編輯 :上面仍然是正確的,但應擴展-評論部分的新信息。 Coolbar嘗試始終填充控件的寬度,因此您的最后一個頻段會拉伸以占用空間。 如果將MaxWidth約束添加到帶區控件,則它們在帶環繞和拉伸時會向右對齊。 最好的解決方案是將MinWidth設置為所需的值,但讓CoolBar確定最大寬度。

保存調整? 您是指每個冷卻帶的確切位置嗎? 如果是這樣,我認為您不能直接存儲它。 但是復制布局應該是微不足道的。 存儲每個Band的Break和Width屬性,並按順序應用它們。 我認為您最好的策略是調整窗體(或TCoolBar)的大小,對每個帶應用Break,然后對每個帶應用Width(循環兩次)。

如果這不起作用,則可以嘗試直接調用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));

那應該可以,但是要求您使OldStyle等於現有樣式。 反過來,這將要求您要么復制TCoolBar.UpdateItem中的許多代碼,要么首先發送消息RB_SETBANDINFO。 很痛苦,因此請嘗試先分配“中斷”再分配“寬度”。

在Delphi Windows SDK幫助文件中,如果需要,請在“鋼筋參考”中查看所有消息的信息。 在我的網站上,幫助URL(用於幫助查看器)是ms-help://embarcadero.rs2009/ShellCC/platform/commctls/rebar/reflist.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM