Перейти к содержанию
Fire Monkey от А до Я
  • 0

Кнопка с картинкой


Euvene

Вопрос

Рекомендуемые сообщения

  • 0

Чтобы картинка была на всю кнопку - вообще картинки должны быть фиксированного размера, когда одна больше, другая меньше - это смотрится криво. Но если очень нужно тогда так (это для Firemonkey, не для VCL): 

Бросайте рядом TGlyph - затем в инспекторе объектов мышкой перемещаете его на кнопку. В результате TGlyph должен быть внутри кнопки (TSpeedButton или TButton). Далее настраиваете TGlyph - указываете там ImageList, ImageIndex (можно картинку и без ImageList указать отдельно, там есть соответствующее поле), далее  свойство Stretch  и Align = Client.

 

Изменено пользователем ENRGY
Ссылка на комментарий
  • 0
В 06.03.2017 в 21:07, ENRGY сказал:

Чтобы картинка была на всю кнопку - вообще картинки должны быть фиксированного размера, когда одна больше, другая меньше - это смотрится криво. Но если очень нужно тогда так (это для Firemonkey, не для VCL): 

Бросайте рядом TGlyph - затем в инспекторе объектов мышкой перемещаете его на кнопку. В результате TGlyph должен быть внутри кнопки (TSpeedButton или TButton). Далее настраиваете TGlyph - указываете там ImageList, ImageIndex (можно картинку и без ImageList указать отдельно, там есть соответствующее поле), далее  свойство Stretch  и Align = Client.

 

ты сам то пробовал так сделать???????????? TGlyph картинку можно только из ImageList загрузить

Ссылка на комментарий
  • 0
39 минут назад, ENRGY сказал:

BEE-KEE-PER

Вместо TGlyph можно использовать TImage, там точно можно указать картинку напрямую, без TimageList 

есть полноценный пример кнопки с картинкой где картинка полность на всю кнопку???....

Ссылка на комментарий
  • 0

BEE-KEE-PER

Что у Вас конкретно не получается?

Способ описан выше, чтобы напрямую указать файл с изображением, - вместо TGlyph используйте TImage ,

Изменено пользователем ENRGY
Ссылка на комментарий
  • 0
В 14.03.2017 в 14:58, BEE-KEE-PER сказал:

есть полноценный пример кнопки с картинкой где картинка полность на всю кнопку???....

Такое впечатление что вам тут кто-то должен. Есть стиль

Спойлер

  object TLayout
    StyleName = 'CornerButtonCircleStyle12'
    Position.X = 564.000000000000000000
    Position.Y = 387.000000000000000000
    Size.Width = 32.000000000000000000
    Size.Height = 32.000000000000000000
    Size.PlatformDefault = False
    Visible = False
    TabOrder = 108
    object TGlowEffect
      Softness = 0.200000002980232200
      GlowColor = xFF6BD2EE
      Opacity = 1.000000000000000000
      Trigger = 'IsFocused=true'
      Enabled = False
    end
    object TCircle
      StyleName = 'background'
      Align = Contents
      Fill.Kind = Gradient
      Fill.Gradient.Points = <
        item
          Color = x9644ADE0
          Offset = 0.000000000000000000
        end
        item
          Color = x324AA0CA
          Offset = 0.449999988079071000
        end
        item
          Color = x324AA0CA
          Offset = 0.550000011920929000
        end
        item
          Color = x9644ADE0
          Offset = 1.000000000000000000
        end>
      Locked = True
      HitTest = False
      Size.Width = 32.000000000000000000
      Size.Height = 32.000000000000000000
      Size.PlatformDefault = False
      Stroke.Color = xFF3ABEDA
      object TInnerGlowEffect
        Softness = 0.400000005960464500
        GlowColor = xFF6BD2EE
        Opacity = 0.899999976158142100
        Trigger = 'IsPressed=true'
        Enabled = False
      end
    end
    object TImage
      StyleName = 'imagestyle'
      MultiResBitmap = <
        item
        end>
      Align = Center
      Locked = True
      HitTest = False
      Size.Width = 32.000000000000000000
      Size.Height = 32.000000000000000000
      Size.PlatformDefault = False
    end
  end
 

 

Изменено пользователем GASCHE
Ссылка на комментарий
  • 0

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

Ссылка на комментарий
  • 0

Вернее во время запуска приложения на телефоне, в дизайнере картинка тоже смещается в левый угол и становится маленькой, после закрытия приложения картинка остаётся в левом угле. Если зайти в editcustomstyle и заново применить стиль, в дизайнере все становится как надо до первого запуска.

Ссылка на комментарий
  • 0

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

 

А вообще бери за основу компонент TButton (TSpeedButton), делай ему свойство содержащее картинку - и перерисовывай в OnPaint на канву контрола. Тут тебе и триггеры сохранятся, и прозрачность картинки можешь использовать (в DrawBitmap) и всё такое.

 

 

Изменено пользователем POV
Ссылка на комментарий
  • 0

Проблема решилась в первом приближении. 

Кнопка была на фрейме. Я пытался задать стиль в дизайнере. А фрейм кидал на форму рантайм.

Оказывается, так не прокатит. Надо кинуть фрейм в дизайнере на форму и уже на форме менять стили у кнопок в фрейме.

Как делать, чтобы стили из кнопок фрейма сохранялись при создании фрейма динамически, пока не понятно.

Ссылка на комментарий
  • 0
В 24.03.2017 в 21:19, GASCHE сказал:

Такое впечатление что вам тут кто-то должен. Есть стиль

  Показать контент

  object TLayout
    StyleName = 'CornerButtonCircleStyle12'
    Position.X = 564.000000000000000000
    Position.Y = 387.000000000000000000
    Size.Width = 32.000000000000000000
    Size.Height = 32.000000000000000000
    Size.PlatformDefault = False
    Visible = False
    TabOrder = 108
    object TGlowEffect
      Softness = 0.200000002980232200
      GlowColor = xFF6BD2EE
      Opacity = 1.000000000000000000
      Trigger = 'IsFocused=true'
      Enabled = False
    end
    object TCircle
      StyleName = 'background'
      Align = Contents
      Fill.Kind = Gradient
      Fill.Gradient.Points = <
        item
          Color = x9644ADE0
          Offset = 0.000000000000000000
        end
        item
          Color = x324AA0CA
          Offset = 0.449999988079071000
        end
        item
          Color = x324AA0CA
          Offset = 0.550000011920929000
        end
        item
          Color = x9644ADE0
          Offset = 1.000000000000000000
        end>
      Locked = True
      HitTest = False
      Size.Width = 32.000000000000000000
      Size.Height = 32.000000000000000000
      Size.PlatformDefault = False
      Stroke.Color = xFF3ABEDA
      object TInnerGlowEffect
        Softness = 0.400000005960464500
        GlowColor = xFF6BD2EE
        Opacity = 0.899999976158142100
        Trigger = 'IsPressed=true'
        Enabled = False
      end
    end
    object TImage
      StyleName = 'imagestyle'
      MultiResBitmap = <
        item
        end>
      Align = Center
      Locked = True
      HitTest = False
      Size.Width = 32.000000000000000000
      Size.Height = 32.000000000000000000
      Size.PlatformDefault = False
    end
  end
 

 

Дельфа должна была из коробки дать возможность делать примитивные вещи 🙂

Ссылка на комментарий
  • 0
В 27.12.2017 в 12:10, Антон Епифанов сказал:

Проблема решилась в первом приближении. 

Кнопка была на фрейме. Я пытался задать стиль в дизайнере. А фрейм кидал на форму рантайм.

Оказывается, так не прокатит. Надо кинуть фрейм в дизайнере на форму и уже на форме менять стили у кнопок в фрейме.

Как делать, чтобы стили из кнопок фрейма сохранялись при создании фрейма динамически, пока не понятно.

вообще не согласен. у меня везде все на фреймах. прекрасно и со стилями и без стилей, со вложенными картинками работает. как TGlyph так и TImage
А вот фреймы кидать в дизайн-тайме- это прямо прицелиться в ногу и ждать когда бахнет...

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...