• 0
ader

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

Вопросы

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 ответов на этот вопрос

  • 0

Проверьте HitTest у TPath - должен быть False. И я бы еще посоветовал вместо TLabel использовать TText

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1

Вот мой стиль для чекбокса - работает нормально. Я, правда вместо 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 никак? Что управляет видимостью "галочки" в "родном" стиле? Там вроде нет анимации..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

а, кажется понял, если векторные - TFLoatAnimation, растровые - TCheckStyleObject и TBitmapLinks.. так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1
1 минуту назад, ader сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1
4 минуты назад, ader сказал:

а, кажется понял, если векторные - TFLoatAnimation, растровые - TCheckStyleObject и TBitmapLinks.. так?

Да, именно так!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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