Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > работа со SpeedButton


Автор: artsb 21.11.2007, 20:22
У меня два вопроса:

1. Установил свойство Flat=true. Как сделать, чтобы при наведении не появлялась рамка?

2. На форме SpeedButton, Image, ImageList и Button. В Image и ImageList картинки. Сначала делаю, чтобы при нажатии на Button в SpeedButton заносилась картинка из ImageList. Всё нормально. Потом, делаю, чтобы при нажатии на Button в SpeedButton заносилась картинка из Image. Но ничего не происходит. И ошибок нет. В чём дело?

Спасибо.

Автор: lenin_yo 21.11.2007, 21:24
Делать так:

Form1->SpeedButton1->Glyph=Form1->Image1->Picture->Bitmap;

Добавлено через 9 минут и 37 секунд
Эта конструкция будет работать только если в Image1 картинка с .bmp  форматом.
Если использовать другой формат, то получается что картинка удаляется из Image1 при переконвертировании и на кнопку ничего не заносится.
 smile   сам толком не пойму, но так получается.

Автор: artsb 21.11.2007, 21:52
Странно, но я с самого начала пробовал именно с *.bmp. Одну и туже *.bmp засовывал в Image и ImageList. Из ImageList заносится нормально, а из Image ну никак. smile 
Как насчёт первого вопроса?

Автор: EugenOS 21.11.2007, 23:36
вот кусок исходного кода спид баттона(функция Paint):

Код

  if not FFlat then
  begin
  .............
  else
  begin
    if ( FState in [ bsDown, bsExclusive ] ) or 
      ( FMouseInControl and ( FState <> bsDisabled ) ) or
      ( csDesigning in ComponentState ) then
      DrawEdge( Canvas.Handle, PaintRect, DownStyles[ FState in [ bsDown, bsExclusive ] ],
        FillStyles[ Transparent ] or BF_RECT)
    else if not Transparent then
    begin
      Canvas.Brush.Color := Color;
      Canvas.FillRect(PaintRect);
    end;
    InflateRect(PaintRect, -1, -1);
  end;




Из этого кода видно, что когда мышь в зоне контрола, не рисуется рамка только если кнопка Disabled. что я думаю не будет приемлемым.
Попробуй отнаследовать спид баттон и переписать эту функцию, как тебе нужно.

Автор: artsb 22.11.2007, 01:22
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)