如何使用自定义对齐过程创建组件?

时间:2012-11-03 12:06:23

标签: delphi

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

2 个答案:

答案 0 :(得分:2)

一个快速访问将覆盖SetBounds,以确保它的调用你必须设置一个Alignment,然后alNone

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;

答案 1 :(得分:1)

前Borland开发人员Steve Trefethen的这个article展示了如何使用alCustom