CoolBandsをCoolBarの左側に揃えることは可能ですか? CoolBar(フォーム)のサイズが変更され、CoolBandsが下の行に移動するとき、バンドは(右ではなく)バーの左側に揃えられます。 アイテムがもう1つの行に収まりきらないときのメニューの動作に似ています。Delphi TCoolBar - CoolBandアラインメント
さらに、バンドの調整を保存することは可能ですか?
CoolBandsをCoolBarの左側に揃えることは可能ですか? CoolBar(フォーム)のサイズが変更され、CoolBandsが下の行に移動するとき、バンドは(右ではなく)バーの左側に揃えられます。 アイテムがもう1つの行に収まりきらないときのメニューの動作に似ています。Delphi TCoolBar - CoolBandアラインメント
さらに、バンドの調整を保存することは可能ですか?
各バンドのMinWidthプロパティを設定し、CoolBar AutoSizeプロパティをTrueに設定すると、バンドがMinWidthになると自動的にラップします。
を編集してください。上記は正しいですが、コメントセクションから新しい情報に拡張する必要があります。 Coolbarは、コントロールの幅を常に埋めるようにします。最後のバンドが広がってスペースを取るようにします。バンドコントロールにMaxWidth制約を追加すると、バンドが折り返して伸びると右に揃えられます。ここでの最適な解決方法は、MinWidthを必要なものに設定することですが、CoolBarで最大幅を決定させることができます。
調整を保存しますか?各クールバンドの正確な配置を意味しますか?もしそうなら、あなたはそれを直接保管することはできないと思います。しかし、レイアウトを再現するのは簡単なことです。各バンドのブレークと幅のプロパティを保存し、順番に適用します。あなたの最善の戦略は、フォーム(またはTCoolBar)のサイズを変更し、各バンドにBreakを適用し、次に各バンド(ループを2回)に適用することです。
これでうまくいかない場合は、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
AutoSizeとMinWidthは既に設定されており、それに応じてバンドをラップします。しかし、新しい行が始まると、新しい行のバンドが右側に揃えられます。それは少し奇妙に見えます。 –
私はそれを見ません。バンドは私のために行全体を埋める。バンドのコントロールに制約を設定すると、バンドは左にシフトします。 BiDiモードを右から左に設定しても、右に掛けることはできません。 バンド、クールバー、フォームの設定についてもっと詳しく教えてください。 私はWindow XP SP 3を実行しています。おそらくWindows版のものでしょうか? おそらく空きバンドがあります –
また、あなたは状態を復元する上で私の答えに満足していますか? –