掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
閉じるボタンを表示しないようにするには? (ID:22232)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Form2.DragKindをTrue dkDock ですね。 それはともかく、質問への回答として、「できないことはない(否定の否定)」と思います。 TDockTree クラスが二本のバー?と閉じるボタンを描画しています。 Pro以上なら、ソースがあるはずなので Controls.pas ユニットのTDockTree.PaintDockFrame を見てください。 また、同ユニットの、TDock〜やら、TDrag〜が、ドッキング関連のクラスのようです。 UseDockManager=Trueにしたとき、DockManagerのインスタンスにTDockTreeの継承クラスを使用します。 このとき、どのクラスを使用するかは、Controls.pasのグローバルな変数 DefaultDockTreeClassにより決定されます。 Controls.pas より一部抜粋 > TDockTreeClass = class of TDockTree; > DefaultDockTreeClass: TDockTreeClass = TDockTree; つまり、DefaultDockTreeClassを自分の好きな動作になるように作った TDockTreeからの継承クラスを指定すると、閉じるボタンも消えるのです。 具体的には、以下のような感じのクラスを作成 例:TMyDockTree=class(TDockTree) (1)PaintDockFrameで、閉じるボタンを描画しないようにする。 (2)TDockTree.WindowProc の別名メソッドを作成し、FDockSite.WindowProc に割り当てる(例:TMyDockTree.MyWindowProc)。 TDockTree.Createで、TDockTree.WindowProc を割り当てているので、直接 FDockSite.WindowProc := TMyDockTree.MyWindowProc; と放り込むだけでいいでしょう。 (3)TMyDockTree.MyWindowProcの記述 ここでは、WM_LBUTTONDBLCLKの応答のみ記述する。 (たぶん)TDockTree.InternalHitTestで、閉じるボタンであるという判定が返ってきますが、 これを握りつぶし、HTBORDERになるようなマウス座標に変換。 あとは、TDockTree.WindowProc に、そのまま処理を放り投げ。 (4)プログラム起動時に、DefaultDockTreeClass変数に、TMyDockTree を指定。 と、頭の中で描いてみました。 ただし、(3)の握りつぶしについては、もっといい方法があるかもしれません。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.