Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.08.2013, 15:41
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию Кнопка на кнопке

Доброго времини суток. Ни когда не писал собственых компонентов. И столкнулся с проблемой. Есть код, обычной кнопки, как на этой же кнопке внутри неё создать кнопку меньшего размера?
Код:
unit MyButton;

interface
  uses Classes, Vcl.Controls, Windows, Vcl.Graphics, Messages;

type TMyButton = class(TCustomControl)
  private
   FSelected: Boolean;
   FCaption: String;
   procedure SetCaption(Val: String);
   procedure MEnter(var Mes: TMessage); message CM_MOUSEENTER;
   procedure MLeave(var Mes: TMessage); message CM_MOUSELEAVE;
   procedure Paint; override;
  public
   constructor Create(AOwner: TComponent);
   property Caption: String read FCaption write SetCaption;
 end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('TMyButton', [TMyButton]);
end;

constructor TMyButton.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 Parent := AOwner as TWinControl;
 Width := 100;
 Height := 100;
end;

procedure TMyButton.SetCaption(Val: string);
begin
 FCaption := Val;
 paint;
end;

procedure TMyButton.Paint;
begin
 If not FSelected
 then
  begin
   Canvas.Pen.Color := $FFFFFF;
   Canvas.Brush.Color := $FFFFFF;
  end
 else
  begin
   Canvas.Pen.Color := $EEEEEE;
   Canvas.Brush.Color := $EEEEEE;
  end;

 Canvas.Rectangle(0,0,Width,Height);
 Canvas.Font.Color := 0;
 Canvas.TextOut((Width - Canvas.TextWidth(FCaption))div 2,(Height - Canvas.TextHeight(FCaption)) div 2,FCaption);
end;

procedure TMyButton.MEnter(var Mes: TMessage);
begin
 FSelected := True;
 Paint;
end;

procedure TMyButton.MLeave(var Mes: TMessage);
begin
 FSelected := False;
 Paint;
end;

end.

Буду рад за любые предложения
Ответить с цитированием
  #2  
Старый 24.08.2013, 23:43
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Почему бы не посмотреть исходный код TSpinEdit.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
bulldog (25.08.2013)
  #3  
Старый 25.08.2013, 08:11
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию

Цитата:
Сообщение от angvelem
Почему бы не посмотреть исходный код TSpinEdit.
Спасибо, только я посматрел в сторону TSpinButton
Ответить с цитированием
  #4  
Старый 25.08.2013, 12:14
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Идея в обоих компонентах одинакова - встраивание одного контрола в другой.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter