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

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

18.11.2018, 16:09. Показов 2684. Ответов 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
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 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
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 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
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 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
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
22.11.2018, 14:40
Цитата Сообщение от Богдан2009 Посмотреть сообщение
BitBtn1->Caption = (IsPressed) ? "Новое название" : "Старое название";
Это присвоение, а не сравнение! И к чему относятся эти "названия", новое и старое?
И как вообще свойство Caption типа String можно сравнивать со значением типа boolean???
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
22.11.2018, 14:47
Это такой условный оператор "? :" (без кавычек).
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
22.11.2018, 14:57
Цитата Сообщение от gunslinger Посмотреть сообщение
Это такой условный оператор
"Этот" оператор называется тернарным
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
23.11.2018, 13:26
Дело не в правильном названии; с моей стороны лишь был (слишком) тонкий юмор в ответ на пост №10.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
23.11.2018, 17:53
Цитата Сообщение от gunslinger Посмотреть сообщение
в ответ на пост №10
Я бы сказал, что в коде была попытка применения тернарного оператора, но никак не его нормальное применение...
И да, юмор был слишком тонок...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
23.11.2018, 18:06
Цитата Сообщение от D1973 Посмотреть сообщение
в коде была попытка применения тернарного оператора
Чего ж попытка? Нормальное применение. Где проблема-то?
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
23.11.2018, 18:56
Цитата Сообщение от volvo Посмотреть сообщение
Где проблема-то?
Что-то я не догоняю такого условия: Caption кнопки сравнивать (а там еще и присваивают к тому же) с булевой переменной...
К чему относятся строки "Новое название", "Старое название"? Эти строки должны чему-то присваиваться при выполнении/невыполнении условия, но чему?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
23.11.2018, 18:59
Да не сравнивать. Просто если IsPressed, то взять одну строку, иначе - другую, и потом то, что взялось - присвоить в Caption. Приоритет у тернарного оператора выше, чему присваивания.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru