Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2013, 10:48   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию Кнопка на кнопке

Доброго времини суток. Ни когда не писал собственых компонентов. И столкнулся с проблемой. Есть код, обычной кнопки, как на этой же кнопке внутри неё создать кнопку меньшего размера?
Код:
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.
Буду рад за любые предложения
bulldog5293 вне форума Ответить с цитированием
Старый 24.08.2013, 19:07   #2
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Цитата:
Бредовая это идея. Выбрось из головы.
Я это для себя хачу сделать
Цитата:
Поищите компоненты JEDI VCL - они бесплатные, а всяких кнопок там -уфф! Хоть баян пиши.
Мне для канкретных целей
bulldog5293 вне форума Ответить с цитированием
Старый 28.08.2013, 10:57   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а наложить 2ю кнопку поверх 1й, не?
или я чего-то не понял
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реклама в кнопке Shaman-King Общие вопросы по Java, Java SE, Kotlin 1 12.01.2013 15:27
Запрос по кнопке. Xpins Microsoft Office Access 1 21.06.2012 10:45
Наззвание на кнопке Милочка C++ Builder 1 26.02.2011 16:51
Картинка на кнопке Михаил Юрьевич Общие вопросы Delphi 5 19.12.2009 22:18
Рисунок на кнопке JIimonKa Общие вопросы Delphi 3 27.05.2008 07:41