0

我想创建一个组件,但我对 Align 的工作方式不满意,所以我想创建自己的属性以完全不同的方式重新定位组件。但是我不确定在哪里使用它-应该在哪里调用它?

4

2 回答 2

2

一种快速访问是覆盖 SetBounds,以确保调用它,您必须设置除 alNone 之外的 Alignment

type
  TMyButton=Class(Tbutton)
      procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;

  End;

//..............


procedure TForm3.Button1Click(Sender: TObject);
begin
  With TMyButton.Create(self) do
    begin
      Parent := self;
      Width := 200;
      top := 100;
      Height := 100;
      align := alCustom; // was alRight thanks to David Heffernan
    end;
end;


{ TMyButton }

procedure TMyButton.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
   if Assigned(parent)  then
      begin // .. just e.g.
        ALeft :=  Parent.Width - Width -100 ;
        ATop := 100;
        AHeight := Parent.Height - Atop - 100 ;
      end;
   inherited;

end;
于 2012-11-03T13:37:40.983 回答
1

这篇由前 Borland 开发人员 Steve Trefethen 撰写的文章展示了如何使用alCustom.

于 2012-11-07T13:03:13.067 回答