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

Создать свой стиль для Checkbox


ader

Вопрос

Собрал стиль для чекбокса. TLayout, на нём TLabel и TRectangle, для галочки TPath. Назначил StyleName, отображение работает. А вот как сделать, чтоб работало переключение?

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

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

  • 0

HitTest у всех false. и TText вместо TLabel, это я перепутал. Но переключаться не хочет. попробовал добавить анимацию с триггером на IsChecked - сначала заработало, потом перестало..

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

Вот мой стиль для чекбокса - работает нормально. Я, правда вместо TPath - TImage использую. Сравните со своим, может чем поможет. Или скиньте свой - может чё посоветую.

object TLayout
  StyleName = 'checkboxstyle'
  Align = Center
  Padding.Top = -1.000000000000000000
  Size.Width = 50.000000000000000000
  Size.Height = 50.000000000000000000
  Size.PlatformDefault = False
  TabOrder = 6
  object TLayout
    Align = Left
    Position.Y = -1.000000000000000000
    Size.Width = 22.000000000000000000
    Size.Height = 51.000000000000000000
    Size.PlatformDefault = False
    object TRectangle
      Align = Center
      Fill.Kind = Gradient
      Fill.Gradient.Points = <
        item
          Color = xFFEBEBEB
          Offset = 0.000000000000000000
        end
        item
          Color = xFFFBFBFB
          Offset = 1.000000000000000000
        end>
      Fill.Gradient.StartPosition.X = 0.500000000000000000
      Fill.Gradient.StopPosition.X = 0.499999970197677600
      HitTest = False
      Size.Width = 16.000000000000000000
      Size.Height = 16.000000000000000000
      Size.PlatformDefault = False
      Stroke.Color = xFFB9B9B9
      XRadius = 2.000000000000000000
      YRadius = 2.000000000000000000
      object TColorAnimation
        StyleName = 'focused'
        Duration = 0.000000000000000000
        PropertyName = 'Stroke.Color'
        StartValue = xFF999999
        StopValue = xFF222222
        Trigger = 'IsFocused=True'
        TriggerInverse = 'IsFocused=False'
      end
    end
    object TImage
      StyleName = 'check'
      MultiResBitmap = <
        item
          Width = 8
          Height = 8
          PNG = {
            89504E470D0A1A0A0000000D4948445200000008000000080806000000C40FBE
            8B000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
            008049444154285363200418A134063032324AF9FFFFFF7D26209BC9C2C28213
            220C0140C93E4646C6D94C4C4C93988C8D8DE7FEFCF9F32550D00949B210C8FC
            0534A10C64C273A04ADE2F5FBE6C064AAE46920C3A77EEDC56901B1881A6CC00
            D269400C027049108719443C7FFE7CAB949494C8BF7FFF3481DC309824118081
            0100A1F434E007FD62490000000049454E44AE426082}
        end>
      Align = Center
      HitTest = False
      MarginWrapMode = Fit
      Opacity = 0.000000000000000000
      Size.Width = 12.000000000000000000
      Size.Height = 12.000000000000000000
      Size.PlatformDefault = False
      WrapMode = Center
      object TFloatAnimation
        Duration = 0.000000000000000000
        PropertyName = 'Opacity'
        StartValue = 0.000000000000000000
        StopValue = 1.000000000000000000
        Trigger = 'IsChecked=True'
        TriggerInverse = 'IsChecked=False'
      end
    end
  end
  object TText
    StyleName = 'text'
    Align = Client
    Locked = True
    HitTest = False
    Margins.Left = 5.000000000000000000
    Size.Width = 23.000000000000000000
    Size.Height = 51.000000000000000000
    Size.PlatformDefault = False
    Text = 'Text'
    TextSettings.Font.Family = 'Arial'
    TextSettings.Font.Size = 13.000000000000000000
    TextSettings.FontColor = xFF202020
  end
end

 

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

Спасибо, немного поменял у себя структуру стиля, заработало. Но, получается, без TFloatAnimation никак? Что управляет видимостью "галочки" в "родном" стиле? Там вроде нет анимации..

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

а если у меня векторные элементы чекбокса?

Я пользуюсь TFloatAnimation - другого выхода не нашёл (может просто плохо или мало искал?).

Ссылка на комментарий
  • 0
В 09.12.2017 в 21:06, ader сказал:

Спасибо за помощь! Я тоже других вариантов не нашёл.. и вообще все примеры  и уроки про кнопки, как будто ничего другого нет..

Просто все остальное работает аналогично, можно хоть на панель реакцию на нажатие повесить.

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

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

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

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

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

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

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

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

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

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

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