Delphi の TSplitter がアレなので TSpTBXSplitter を使ってみる
Delphi の Splitterコンポーネント、サイズ変更のため使用するなら問題ないのだが、対象先がサイズ 0 になるような使い方の場合、スプリッタの移動やフォームのリサイズをきっかけに突然使用不能になったりする
適当なタイミングで、対象先とスプリッタ位置を修正したりしてみるが、対象がサイズ 0 の場合、位置関係がハッキリせず、問題が解消したりしなかったりと昔からイライラの素だったりした(現在も変わらない様子)
で、ちょうど入れていた SpTBX のスプリッタを使ってみたら、位置関係不明の状態があっさり解決
MinSizeプロパティの解釈が違うので、ソコだけ修正した
MinSize プロパティ
適当なタイミングで、対象先とスプリッタ位置を修正したりしてみるが、対象がサイズ 0 の場合、位置関係がハッキリせず、問題が解消したりしなかったりと昔からイライラの素だったりした(現在も変わらない様子)
で、ちょうど入れていた SpTBX のスプリッタを使ってみたら、位置関係不明の状態があっさり解決
MinSizeプロパティの解釈が違うので、ソコだけ修正した
MinSize プロパティ
- TSplitter は、この値未満になると対象のサイズが 0になる
サイズを規制するには対象の Constraints で指定 - TSpTBXSplitter では、この値未満にはスプリッタが移動しなくなる
対象の Constraints 規制値が実行時に確認すると 0 にされてる
procedure TDocForm.SpTBXSplitter1Moved(Sender: TObject); begin if (Panel1.Height < 30) then begin Panel1.Height := 0; end; end; procedure TDocForm.SpTBXSplitter1Moving(Sender: TObject; var NewSize: Integer; var Accept: Boolean); begin Accept := (NewSize > 25); end;のように、OnMoving の Acceptに余裕をもたせて、OnMoved で閾値以下は 0 にする
コメント