初歩的なことですが教えてください。
FormにPanel1を配置し、Align:=alLeft; に設定します。
もうひとつ、Panel2を配置して、Align:=alTop; に設定すると、
Panel2は、Panel1の上に配置されてしまします。
これを、Panel1をLeftにそのまま配置して、Panel2をPanel1の右に
配置する設定方法があったらお願いします。
>Panel1を配置し、Align:=alLeft
その右側にSplitterを配置
Panel1をその右側に配置
Align:=alClientでどうでしょか
こんにちわ
やはり、Splitterしかありませんか。
実は画面を多重に分割して使っているため、Panel2の下にさらにPanel3とか
配置しています。途中までSplitterでやりかけたのですが、
私の知らない、簡単な方法があるのか、知りたいと思いました。
Splitterを使う以外の方法として
Panel1を配置し、Align:=alLeft;
PanelCを配置し、Align:=alClient; //・・縁を消して見えないようにする。
Panel2をPanelCを親にして配置し、Align:=alTop;
こうすれば、擬似的に出来るかと..
>私の知らない、簡単な方法があるのか、知りたいと思いました。
Toshiさんがどこまでわかられるのか私にはわかりません
私ならPageControlを使うと思います。
Align=alCustomを使います。
Formにpanelを2つ置いて、panelのAlignを「alCustom」にしてください。
CustomAlignInsertBefore
CustomAlignPosition
をoverrideします。
function TForm1.CustomAlignInsertBefore(C1, C2: TControl): Boolean;
begin
Result:= (C2=Panel2) and (C1=Panel1);
end;
procedure TForm1.CustomAlignPosition(Control: TControl; var NewLeft,
NewTop, NewWidth, NewHeight: Integer; var AlignRect: TRect;
AlignInfo: TAlignInfo);
begin
if Control=Panel1 then
begin
NewLeft:= 0;
NewTop:= 0;
NewWidth:= 150;
NewHeight:= ClientHeight;
end else
if Control=Panel2 then
begin
NewLeft:= Panel1.Width;
NewTop:= 0;
NewWidth:= ClientWidth-NewLeft;
NewHeight:= 120;
end;
end;
ToshiさんではないですがPanelの配置に苦労した事があります
Aさん、いいですね。
皆さん情報をありがとうございました。
Aさん、こういう方法もあったんですね。とても参考になりました。
これから、少し試行錯誤をしたいと思います。
とりあえず、お礼です。 また、この件は解決としました。
ツイート | ![]() |