FAQ VCL
Компоненты\SpeedButton

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как сделать программный 'Click' по TSpeedButton?

// Так можно щелкнуть по любому компоненту,
// имеющему метод Perform
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
   ShowMessage( 'Clicked' );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   SpeedButton1.Perform( WM_LBUTTONDOWN, 0, 0 );
   SpeedButton1.Perform( WM_LBUTTONUP, 0, 0 );
end;


Как сделать выпадающее меню у TSpeedButton?

// Не забудь бросить popup-меню на форму
var
  s: TPoint;
begin
   s := SpeedButton1.ClientToScreen( Point( 0, SpeedButton1.Height ) );
   PopupMenu1.Popup( s.x, s.y );
end;


Как сделать многострочную надпись на TSpeedButton?

procedure TForm1.FormCreate(Sender: TObject);
begin
   SpeedButton1.Caption := 'aaa' + #13 + 'bbb';
end;


Как использовать иконку в качестве картинки на кнопке TSpeedButton?

uses
  {...,} ShellAPI;

procedure TForm1.FormCreate(Sender: TObject);
var
  Icon: TIcon;
begin
   Icon := TIcon.Create;
   Icon.Handle := ExtractIcon( 0, PChar( Application.ExeName ), 0 );
   SpeedButton1.Glyph.Width := Icon.Width;
   SpeedButton1.Glyph.Height := Icon.Height;
   SpeedButton1.Glyph.Canvas.Draw( 0, 0, Icon );
   Icon.Free;
end;


Как нарисовать рамку фокуса на TSpeedButton?

type
  TSpeedButton = class(Vcl.Buttons.TSpeedButton)
  protected
    procedure Paint; override;
  public
    property Canvas;
  end;

implementation

procedure TSpeedButton.Paint;
var
  r: TRect;
begin
  inherited;
  r := ClientRect;
  InflateRect(r, -3, -3);

  SetTextColor(Canvas.Handle, GetSysColor(COLOR_BTNFACE));
  Canvas.DrawFocusRect(r); // DrawFocusRect(Canvas.Handle, r);
end;

При использовании материала - ссылка на сайт обязательна