Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Модератор
 Аватар для Curry
5158 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,542
Записей в блоге: 9
RAD 2009-XE2

Кнопка с подсветкой в нажатом состоянии

16.09.2022, 13:38. Показов 1193. Ответов 17

Студворк — интернет-сервис помощи студентам
Привет всем!
В программе есть несколько кнопок (Tbutton) у которых меняется состояние отображаемое разным текстом, например, нажимаем на кнопку "Пуск" текст меняется на "Стоп" и наоборот, в программе, думаю понятно, есть логические переменные отслеживающие состояние и функции меняющие текст. Заказчик захотел что бы такие кнопки подсвечивались в одном из логических состояний (в примере выше, когда написано "Стоп"), так же, как если на кнопку наведён указатель мыши.
Дело усложняется тем, что в программе используются темы delphi (vcl.themes), так что текст заранее нарисованными картинками (.bmp) не заменить, пришлось бы для всех тем отдельные картинки с разными цветами делать. Да и менять тексты в Caption на всех кнопках на картинки не хочется. И, многоязыковый интерфейс к тому же.

На какие кнопки бы заменить TButton-ы, что бы можно было организовать такую подстановку цвета?

p.s.Цвета из темы я знаю, откуда брать, из TStyleManager.ActiveStyle.GetStyleColor( scButtonHot{например}).

p.p.s. Delphi XE2.

p.p.p.s. Я понимаю что подсвечивать выбранной состояние так же, как и подсветку под указателем не очень хорошо, но это не моя хотелка.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2022, 13:38
Ответы с готовыми решениями:

Div:active кнопка не фиксируется в нажатом состоянии
Вот код <div id="container"> <div class="button"> <a href="#">Нажми!</a> <ul> <li><a...

Зафиксировать кнопку в "нажатом" состоянии
Всем привет) Подскажите каким образом можно : при нажатии Mouse2 она должна зажаться , но при следующем нажатие на Mouse2 переходит в...

При нажатом checkBox из EditText содержимое попадает в первый лист, при не нажатом во второй
Здравствуйте, пытаюсь выполнить задачку. При нажатом checkBox из EditText содержимое попадает в первый лист, при не нажатом во второй....

17
Злостный нарушитель
 Аватар для Verevkin
10302 / 5725 / 1268
Регистрация: 12.03.2015
Сообщений: 26,511
16.09.2022, 14:32
Есть TSpeedButton со свойством Down. Но это потомок от TGraphicControl, поэтому он не может иметь фокус.
0
Модератор
 Аватар для Curry
5158 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,542
Записей в блоге: 9
16.09.2022, 14:59  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Есть TSpeedButton со свойством Down.
А что мне даст замена Tbutton на TSpeedButton?
Наличие состояния нажатия не так важно, его и вне компонента можно хранить. Изменение раскраски то от состояния как менять?
Может что то из jvcl использовать? Оно уже и так задействовано в проекте.
0
Злостный нарушитель
 Аватар для Verevkin
10302 / 5725 / 1268
Регистрация: 12.03.2015
Сообщений: 26,511
16.09.2022, 15:03
Цитата Сообщение от Curry Посмотреть сообщение
Изменение раскраски то от состояния как менять?
Оно жэж автоматически меняется, чтобы было видно, что кнопка нажата/отжата. Тебе не это, штоли, надо?
Цитата Сообщение от Curry Посмотреть сообщение
Может что то из jvcl использовать? Оно уже и так задействовано в проекте.
Может.
0
Злостный нарушитель
 Аватар для Verevkin
10302 / 5725 / 1268
Регистрация: 12.03.2015
Сообщений: 26,511
16.09.2022, 15:12




0
Модератор
 Аватар для Curry
5158 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,542
Записей в блоге: 9
16.09.2022, 15:14  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Оно жэж автоматически меняется, чтобы было видно, что кнопка нажата/отжата. Тебе не это, штоли, надо?
Оно не так меняется. Я же даже выделил жирным "так же, как если на кнопку наведён указатель мыши".

Добавлено через 1 минуту
Verevkin, что это за весёлые картинки? Отрисовка не та что мной описана, и что толку от картинок без кода.
0
Злостный нарушитель
 Аватар для Verevkin
10302 / 5725 / 1268
Регистрация: 12.03.2015
Сообщений: 26,511
16.09.2022, 15:15
Цитата Сообщение от Curry Посмотреть сообщение
Может что то из jvcl использовать? Оно уже и так задействовано в проекте.
Попробуй методом тыка.



Не все контролы из JVCL поддерживают VCL-темы.
0
Злостный нарушитель
 Аватар для Verevkin
10302 / 5725 / 1268
Регистрация: 12.03.2015
Сообщений: 26,511
16.09.2022, 15:20
Цитата Сообщение от Curry Посмотреть сообщение
что это за весёлые картинки? Отрисовка не та что мной описана
Значит ты хреново её описал.
Цитата Сообщение от Curry Посмотреть сообщение
и что толку от картинок без кода.
Никакого кода тут не нужно, это просто демострация TSpeedButton с VCL-темами.
--------
И скажи своему заказчику, что не всё, что он хочет, возможно. Решение может существовать, но его применение может занять неоправданно много времени. У меня тут полно борзых заказчиков, которые много чо хотят просто "щоб було". Приходится периодически их в пешие эротические круизы отправлять.

Я серьёзно.
0
Модератор
 Аватар для Curry
5158 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,542
Записей в блоге: 9
16.09.2022, 15:29  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Значит ты хреново её описал.
Нет. Это значит что вы СП не прочитали.
Цитата Сообщение от Verevkin Посмотреть сообщение
И скажи своему заказчику, что не всё, что он хочет, возможно.
Заказчик всегда прав.
Возможно, например, если кнопку самому соорудить из TButtonControl, а то и из TWinControl, но не хочется городить велосипед, может кто подскажет.
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
16.09.2022, 15:44
Цитата Сообщение от Curry Посмотреть сообщение
Заказчик всегда прав.
Ну да, ну да

Добавлено через 2 минуты
Цитата Сообщение от Curry Посмотреть сообщение
Нет. Это значит что вы СП не прочитали.
А вы можете нарисовать кнопки с нужными вам состояниями и опубликовать на форуме картинку? Думается мне, что так будет нагляднее.
1
Модератор
 Аватар для Curry
5158 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,542
Записей в блоге: 9
16.09.2022, 16:32  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
А вы можете нарисовать кнопки с нужными вам состояниями и опубликовать на форуме картинку? Думается мне, что так будет нагляднее.
В состоянии программы "Старт" кнопка выглядит так
Название: b0.png
Просмотров: 113

Размер: 691 байт
При наведении на неё указателя мыши цвета меняются согласно выбранной теме.
Название: b1.png
Просмотров: 112

Размер: 597 байт
Если нажать на кнопку, то состояние программы изменится, текст на кнопке станет "Стоп", но при удалении указателя мыши с кнопки цвета стали бы как на самой верхней картинке. А нужно что бы расцветка осталась такой как если бы на ней был указатель, вот такой для данной темы:
Название: b2.png
Просмотров: 112

Размер: 685 байт
Кнопка не должна получать фокус.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,660
Записей в блоге: 21
16.09.2022, 16:40
TImage + 3 обработчика
OnClick
OnMouseEnter
OnMouseLeave
и примерно 10 строк кода, который меняет картинку на "кнопке"

если же хочется по-взрослому, чтобы еще и цвет брался из VCL-темы, то думаю стоит новую тему открыть - как получать цвета из VCL-темы
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
16.09.2022, 16:52
напиши свою кнопку и не бунтуй на корабле))))
0
Злостный нарушитель
 Аватар для Verevkin
10302 / 5725 / 1268
Регистрация: 12.03.2015
Сообщений: 26,511
16.09.2022, 16:58
Цитата Сообщение от krapotkin Посмотреть сообщение
стоит новую тему открыть - как получать цвета из VCL-темы
ага, и градиенты тоже
Я задолбался вытаскивать оттуда отрисовку TProgressBar. Пришлось только для этого написать отдельное приложение!

0
Модератор
 Аватар для Curry
5158 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,542
Записей в блоге: 9
16.09.2022, 17:01  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
TImage + 3 обработчика
OnClick
OnMouseEnter
OnMouseLeave
и примерно 10 строк кода, который меняет картинку на "кнопке"
В зависимости от темы кнопки получаются и с закруглёнными краями, может ещё с какими то фенечками.
Там больше чем 10 строк будет. А с учётом того, что кнопок несколько, нужно делать свой компонент. Новую тему "Как сделать компонент" открывать не хочу, делал, но, само по себе это как бы намекает что может быть готовое решение.
Цитата Сообщение от krapotkin Посмотреть сообщение
если же хочется по-взрослому, чтобы еще и цвет брался из VCL-темы, то думаю стоит новую тему открыть - как получать цвета из VCL-темы
Как получать цвета из темы я в СП написал. Да, всё можно сделать в ручную. и текст на canvas рисовать, я спросил что бы не выдумывать велосипед.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
16.09.2022, 17:04
Цитата Сообщение от Curry Посмотреть сообщение
я спросил что бы не выдумывать велосипед.
чтобы не выдумывать велосипед, придется тогда взять самокат)))))

Добавлено через 2 минуты
Цитата Сообщение от Arcor Посмотреть сообщение
напиши свою кнопку
вся основа как сделать находится тут
0
453 / 177 / 31
Регистрация: 04.08.2018
Сообщений: 717
17.09.2022, 10:57
В качестве снаряда специальной олимпиады, если отправить кнопке сообщение, которое автоматически отправляется при появлении мышки над кнопкой (WM_MOUSEHOVER)? Кнопка сменит состояние? Можно ли такое сообщение отправить нескольким кнопкам одной формы? Будут ли они все одновременно в состоянии "мышка над кнопкой"?
0
Модератор
 Аватар для Curry
5158 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,542
Записей в блоге: 9
17.09.2022, 11:47  [ТС]
Rayvenor, решение разве что для "специальной олимпиады", хотите, проверьте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2022, 11:47
Помогаю со студенческими работами здесь

После нажатия на button, кнопка остаётся в активном состоянии
Здравствуйте! В теме сложно было описать проблему, суть такова: При нажатии на button в обработчике события может сработать return....

WI-FI постоянно в состоянии "откл", кнопка включения не активна
Подскажите плз, на вин 10 драйвер для адаптера установлен, ноут HP 15-ac021ur . Устройство включено. Но сам wifi включить не могу. Если...

Можно ли заменить матрицу TN с CCFL-подсветкой на матрицу AFFS с LED-подсветкой?
Имею ноут MSI S300 (13.3 TN+film матрица с CCFL-подсветкой), который полностью меня устраивает, за исключением экрана. Хотел бы его...

передача изображения при нажатом Win+L
подскажите как мне получить изображение с удалённого компа если он находится в блокировочном режиме. получаю изображение такprocedure...

Прибавление стоимости при нажатом checkbox
Как сделать? Бокс на который человек нажимает: <tr><td height="33">Хотите венок с ленточкой?(3 EUR)</td> <td...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru