TSplitter/ja
From Lazarus wiki
Jump to navigationJump to search
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
日本語 (ja) │
русский (ru) │
A TSplitter はサブパネルを機能的に分離するための垂直、あるいは水平の棒である。
このコントロールはフォームを視覚的に2つに分離するために用いられ、アプリケーションを垂直、または水平に移動することを可能とする。これはComponent PaletteのAdditional tabにある。
TSplitterは基本的に2つの異なるモードを持つ。Align (Delphi 式)とAnchorSides(Delphiではサポートされない)である。
Splitter と並び
並びは2つのコントロール、またはコントロールの行のような多くの簡便なレイアウトに用いることができる。例えば、メモやリストボックスのように自由にサイズが変更できるあるコントロールが必要な時である。
以下はこれをデモしている。
設計時
- 新しいformを作る
- TMemoをフォームに配置する(TMemoアイコンをコンポーネントパレットで左クリックして選択しフォームに左クリックして配置)。
- オブジェクトインスペクタ でMemo1を
alLeft
に設定する。 - フォームにTSplitterを配置。
- デフォルトの並びはすでに
alLeft
となっている。 - もう1つのTMemoをフォームに配置する。
- オブジェクトインスペクタでMemo2を
alClient
に設定する。
実行時
オブジェクトインスペクタのデザイナに代わって上記と同じアクションをコードで行うこともできる:
procedure TMainForm.FormCreate(Sender: TObject);
var
Memo1: TMemo;
Splitter1: TSplitter;
Memo2: TMemo;
begin
Memo1:=TMemo.Create(Self);
with Memo1 do begin
Name:='Memo1';
Parent:=Self;
Align:=alLeft;
end;
Splitter1:=TSplitter.Create(Self);
with Splitter1 do begin
Name:='Splitter1';
Parent:=Self;
Left:=1; // Memo1の配置を左へ
Align:=alLeft;
end;
Memo2:=TMemo.Create(Self);
with Memo2 do begin
Name:='Memo2';
Parent:=Self;
Align:=alClient;
end;
end;
アンカーサイドを持つSplitter
アンカーサイドはより調整されたレイアウトを可能にする。並びはすべての余地を埋める。アンカーサイドは他のどの姉妹コントロールにもつけられる。
設計時
- 新しいformを作る
- TMemo をフォームに配置する(TMemoアイコンをコンポーネントパレットで左クリックして選択しフォームに左クリックして配置)。
- オブジェクトインスペクタ でMemo1を
alLeft
に設定する。 - フォームにTSplitterを配置。
- Splitter1の並びのプロパティを
alNone
とする。 - Memo1を選択
- ビュー -> アンカーエディタ
- Memo1の右側にSplitter1に対してアンカーを置く。
- 別のTMemoをフォームに配置。
- Memo2の並びのプロパティを
alRight
とする。 - Splitter1に対してMemo2の左側にアンカーを置く。Splitter1の右側にアンカーすることを忘れないこと(コンボボックス下のアンカーエディタ上にボタンがつく)。.
実行時
オブジェクトインスペクタのデザイナに代わって上記と同じアクションをコードで行うこともできる:
procedure TMainForm.FormCreate(Sender: TObject);
var
Memo1: TMemo;
Splitter1: TSplitter;
Memo2: TMemo;
begin
Memo1:=TMemo.Create(Self);
with Memo1 do begin
Name:='Memo1';
Parent:=Self;
Align:=alLeft;
end;
Splitter1:=TSplitter.Create(Self);
with Splitter1 do begin
Name:='Splitter1';
Parent:=Self;
Align:=alNone;
Left:=100; // 同じ値
AnchorParallel(akBottom,0,Parent);
end;
Memo1.AnchorToNeighbour(akRight,0,Splitter1);
Memo2:=TMemo.Create(Self);
with Memo2 do begin
Name:='Memo2';
Parent:=Self;
Align:=alRight;
AnchorToNeighbour(akLeft,0,Splitter1);
end;
end;
Splitterの色
デフォルトでTSplitterは色付けされている。そのため色彩プロパティを割り当てることは色には影響しない。しかしダミーのOnPaintイベントでテーマカラーは無効にできる。
Splitter1.OnPaint:= @SplitterOnPaintDummy;
Splitter1.Color:= clGreen;
....
procedure TfmMain.SplitterOnPaintDummy(Sender: TObject);
begin
//空にする。テーマカラーを無効にする
end;
以下も参照のこと