0

コンポーネントを作成したいのですが、Align の動作に満足できないため、独自のプロパティを作成してコンポーネントをまったく別の方法で再配置したいと考えています。しかし、どこに接続すればよいかわかりません。どこで呼び出す必要がありますか?

4

2 に答える 2

2

高速アクセスの1つは、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 に答える