Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 05.09.2018
Сообщений: 73

При на кнопку (bitbtn) меняется ее картинка (Glyph) на нужную в ImageList1

18.11.2018, 16:09. Показов 2743. Ответов 17

Студворк — интернет-сервис помощи студентам
Я думал сделать по аналогии как с image , но не работает, вот этот код:
C++
1
ImageList1->GetBitmap(0,BitBtn28->Glyph->Bitmap);
Как сие можно реализовать вообще - любой вариант сойдет...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2018, 16:09
Ответы с готовыми решениями:

BitBtn и его Glyph
Доброго времени суток уважаемые программисты. Хотел бы спросить, как сделать красивую анимацию нажатия. У меня есть основная...

При наведении на кнопку картинка меняется
Нужно сделать так: Наводим мышку на button1, его картинка сменилась,отводим курсор и вернулась обратно

При нажатии на кнопку картинка прячется, и надпись на кнопке меняется на «покажи меня»
2.Сначала на странице две картинки в рамках и две кнопки с надписью «спрячь меня». При нажатии на кнопку картинка прячется, и надпись на...

17
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
18.11.2018, 16:18
Вообще-то надо в Glyph назначать картинку, содержащую несколько изображений: TSpeedButton: цвет затемнения (для BitBtn точно так же), тогда ничего не надо будет делать, все сделает сама кнопка при наведении (это ведь надо было? В заголовке слово явно пропущено)...
1
1 / 1 / 0
Регистрация: 05.09.2018
Сообщений: 73
18.11.2018, 16:31  [ТС]
По смыслу именно так, но в коде я не совсем понял как реализовать...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
18.11.2018, 16:40
Лучший ответ Сообщение было отмечено Богдан2009 как решение

Решение

Нет там никакого кода, он там не нужен. Рисуешь картинку, в которой по горизонтали содержатся максимум 4 картинки, которые будут выставлены на кнопку (1-я слева - обычная, без наведения, без нажатия, 2-я - когда кнопка задизейблена, 3-я - когда кнопка нажата и 4-я - когда кнопка зажата в нижнем состоянии), назначаешь эту картинку в свойство Glyph и выставляешь NumGlyphs в значение, соответствующее количеству картинок. Всё. Остальное - заложено в кнопку...
0
1 / 1 / 0
Регистрация: 05.09.2018
Сообщений: 73
20.11.2018, 23:11  [ТС]
volvo А можно ли как то контралировать эти стадии с помощью кода? Я их заюзал, но при нажатой кнопке, я еще хотел бы при нажатии на другую кнопку, чтобы glyph снова стал в 1 позицию... И потом при нажатии на битбтн снова переместился на 2 позицию
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.11.2018, 23:38
Богдан2009, вы можете с помощью кода менять целиком Glyph (битмап с 1...4-мя фрагментами). Таким образом можно и "подсвечивать" SpeedButton при мыше на нём (OnMouseMove; правда потом нужно восстанавливать, когда мышь с него уходит).
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
20.11.2018, 23:39
Не понял, как ты собрался две кнопки (TBitBtn) одновременно зажимать? Это у SpeedButton-а есть свойство Down, которое ей позволяет оставаться нажатой, пока не будет нажата другая SpeedButton с тем же GroupIndex-ом. А у TBitBtn такого функционала нет, так что непонятно, что ты хочешь...
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.11.2018, 23:43
.. я думаю, - предполагался таки SpeedButton. Но вообще ТС порядком запутал.
0
1 / 1 / 0
Регистрация: 05.09.2018
Сообщений: 73
21.11.2018, 09:10  [ТС]
Вот можно с помощью имедж листа чот сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
.            bool IsPressed = false;
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
 // обязательно обнуляем указатель
 BitBtn1->Glyph = NULL;
 
 // получаем картинку из ImageList
 ImageList1->GetBitmap(((IsPressed) ? 0 : 1),BitBtn1->Glyph);
 
 BitBtn1->Caption = (IsPressed) ? "Новое название" : "Старое название";
 
 IsPressed = !IsPressed;
}
1
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,406
Записей в блоге: 3
22.11.2018, 14:40
Цитата Сообщение от Богдан2009 Посмотреть сообщение
BitBtn1->Caption = (IsPressed) ? "Новое название" : "Старое название";
Это присвоение, а не сравнение! И к чему относятся эти "названия", новое и старое?
И как вообще свойство Caption типа String можно сравнивать со значением типа boolean???
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
22.11.2018, 14:47
Это такой условный оператор "? :" (без кавычек).
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
22.11.2018, 14:57
Цитата Сообщение от gunslinger Посмотреть сообщение
Это такой условный оператор
"Этот" оператор называется тернарным
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
23.11.2018, 13:26
Дело не в правильном названии; с моей стороны лишь был (слишком) тонкий юмор в ответ на пост №10.
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,406
Записей в блоге: 3
23.11.2018, 17:53
Цитата Сообщение от gunslinger Посмотреть сообщение
в ответ на пост №10
Я бы сказал, что в коде была попытка применения тернарного оператора, но никак не его нормальное применение...
И да, юмор был слишком тонок...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
23.11.2018, 18:06
Цитата Сообщение от D1973 Посмотреть сообщение
в коде была попытка применения тернарного оператора
Чего ж попытка? Нормальное применение. Где проблема-то?
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,406
Записей в блоге: 3
23.11.2018, 18:56
Цитата Сообщение от volvo Посмотреть сообщение
Где проблема-то?
Что-то я не догоняю такого условия: Caption кнопки сравнивать (а там еще и присваивают к тому же) с булевой переменной...
К чему относятся строки "Новое название", "Старое название"? Эти строки должны чему-то присваиваться при выполнении/невыполнении условия, но чему?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
23.11.2018, 18:59
Да не сравнивать. Просто если IsPressed, то взять одну строку, иначе - другую, и потом то, что взялось - присвоить в Caption. Приоритет у тернарного оператора выше, чему присваивания.
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,406
Записей в блоге: 3
23.11.2018, 19:05
тьфу ты, блин... беру свои слова назад!!! Повнимательней посмотрел - все понял!

Добавлено через 5 минут

Не по теме:

вот за что, собственно, у меня к С++ двойственное отношение: с одной стороны - можно лаконично записать достаточно громоздкую конструкцию, с другой - с кондачка не разберешься, что там написано...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2018, 19:05
Помогаю со студенческими работами здесь

При нажатии на кнопку Bitbtn добавлять значение в ячейку Dbgrid
Здравствуйте. Подскажите пожалуйста как сделать так, чтобы при нажатии на кнопку bitbtn в ячейку "ТекущийЭкз" dbgrid...

Не загружается картинка в Glyph SpeedButton-a
Какие параметры должны быть у картинки, чтобы она загрузилась. Я пробовал увеличивать и уменьшать до различных размеров картинки формата...

При нажатии на кнопку должна отображатся другая картинка ,при повторном нажатии снова первая картинка
На html языке отобразить картинку и кнопку.При нажатии на кнопку должна отображатся другая картинка ,при повторном нажатии снова первая...

при наведении картинка меняется...
Помогите разобрать скрипт: 1 <script type="text/javascript" language="JavaScript"> 2 function changeImg(source,links) 3 {...

Картинка меняется при наведении мышки
Здравствуйте Уважаемые Вебмастера. Срочно нужна ваша помощь. В общем имеется вот такой код <style...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru