Delphi 动态改变Rzsplitter的Orientation(方向)属性

效果图:

原先不知道,弄了半天都改不了RzSplitter.Orientation = orHorizontal / orVertical

然后去查该组件的源代码,原来Orientation不是在RzSplit单元定义的,而是在RzCommon这个单元,uses它后,一切正常了。

RzCommon Unit
//...
type
  TAlignmentVertical = ( avTop, avCenter, avBottom );

  TBlinkState = ( bsOn, bsOff );

  TTextStyle = ( tsNormal, tsRaised, tsRecessed, tsShadow );
  TOrientation = ( orHorizontal, orVertical );  //此处
  TBarStyle = ( bsTraditional, bsLED, bsGradient );
  TLineStyle = ( lsNone, lsFlat, lsGroove, lsBump );
//Button1 的 OnClick事件
procedure TForm1.Button1Click(Sender: TObject);
var
  w, h: Integer;
begin
  w := Ceil((RzSplitter1.UpperLeft.Pane.Height / RzSplitter1.Height) * RzSplitter1.Width);  //width
  h := Ceil((RzSplitter1.UpperLeft.Pane.Width / RzSplitter1.Width) * RzSplitter1.Height);  //height
  if RzSplitter1.Orientation = orHorizontal then
  begin
    RzSplitter1.Orientation := orVertical;
    RzSplitter1.UpperLeft.Pane.Height := h;
    RzSplitter1.Position := RzSplitter1.UpperLeft.Pane.Height;
    Button1.Caption := 'Vertical (垂直铺设)';
  end
  else
  begin
    RzSplitter1.Orientation := orHorizontal;
    RzSplitter1.UpperLeft.Pane.Width := w;
    RzSplitter1.Position := RzSplitter1.UpperLeft.Pane.Width;
    Button1.Caption := 'Horizontal (水平铺设)';
  end;

end;

  

  

原文地址:https://www.cnblogs.com/go-jzg/p/4115530.html