∵ なぜならば

映画とかネットとかパソコンとかコミックとか音楽とか……

結論:やはりソースは読むもんだ

2021-12-22 22:09:27 | Delphi
NanaTerry はオリジナルからの流れで Window のドッキングを JVCL に任せている
ググっても英語かロシア語中国語で結局欲しい情報に行き当たらなかったりする

今回はドッキングした状態ではサイズを変えられないようにしたかったので
各々の Constraints を変えればいいと高をくくっていたところ上手くいかなかった

んで JvDockControlForm.pas から JvDockSupportControl.pas に飛んだら Splitter を生成してて
そこにはちゃんと OnCanResize イベントがあったので制御することが出来た
最初は例の type ごまかしで protected メソッドにアクセスしたりして苦労したんだけど
そんなにたいした問題でも無かった


FixedSize:Boolean;//サイズ固定

procedure TNanaMainForm.SplitterCanResize(Sender: TObject; var NewSize: Integer;
  var Accept: Boolean);
begin
  if FixedSize then Accept:=False;
end;

procedure TNanaMainForm.FormCreate(Sender: TObject);
begin
  with JvDockServer do
  begin
    Splitter[JvDockControlForm.dpRight].OnCanResize:=SplitterCanResize;
    Splitter[JvDockControlForm.dpLeft].OnCanResize:=SplitterCanResize;
    Splitter[JvDockControlForm.dpTop].OnCanResize:=SplitterCanResize;
    Splitter[JvDockControlForm.dpBottom].OnCanResize:=SplitterCanResize;
  end;
end;