Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
159 / 26 / 3
Регистрация: 17.08.2013
Сообщений: 510
1

Изменение цвета кнопки при многократных нажатиях

04.10.2013, 15:38. Показов 630. Ответов 8
Метки нет (Все метки)

Есть кнопка. При нажатии на нее она становится красной, при повторном
нажатии она должна становиться зеленой, потом опять красной и т.д.

Но она почему-то один раз становится красной и все, может, кто знает, почему?

C++
1
2
3
4
5
6
7
8
9
10
11
isSoundOn = 0;
for( /* Что-то там */ ) {
     if(isSoundOn == 0) {
          // Кнопка становится красной
          isSoundOn = 1;
     }
     else {
          // Кнопка становится зеленой
          isSoundOn = 0;
     }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2013, 15:38
Ответы с готовыми решениями:

Запись координат при нажатиях кнопки мыши
Есть программа, которая при нажатии кнопки мыши записывает её координаты. Что нужно добавить, чтобы...

Изменение цвета текста и фона при консольном выводе
Всем привет. Помогите решить мою проблему. Как менять цвет текста и фона при консольном выводе....

Изменение цвета текста/фона при консольном выводе
Доброго времени суток. Как изменить цвет фона/текста в консоли с++ в формате RGB? Я знаю, что есть...

Изменение положения формы при нажатии кнопки
На форме есть кнопка jump. Как сделать так, чтобы при нажатии на неё один раз окно меняло место...

8
159 / 98 / 25
Регистрация: 07.03.2013
Сообщений: 509
Записей в блоге: 1
04.10.2013, 15:44 2
Попробуй так:
C++
1
2
3
4
5
6
7
8
9
if(isSoundOn == 0) {
          // Кнопка становится красной
          isSoundOn = 1;
     }
 else    if(isSoundOn == 1) 
     {
          //кнопка становится зеленой
          isSoundOn = че-то там
      }
1
159 / 26 / 3
Регистрация: 17.08.2013
Сообщений: 510
04.10.2013, 15:49  [ТС] 3
Цитата Сообщение от Algoritmer Посмотреть сообщение
else * *if
Пробовал, не работает

Добавлено через 43 секунды
Цитата Сообщение от Algoritmer Посмотреть сообщение
isSoundOn = че-то там
А здесь что имеется ввиду? Условие выхода из цикла?
0
159 / 98 / 25
Регистрация: 07.03.2013
Сообщений: 509
Записей в блоге: 1
04.10.2013, 16:06 4
покажи весь обработчик
1
159 / 26 / 3
Регистрация: 17.08.2013
Сообщений: 510
04.10.2013, 16:11  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int C_Events::buttonEvents(SDL_Event* o_event_C_Events, int numberOfButton, C_InitSurfaces *p, C_LoadImages *pli) {
    int x = o_event_C_Events -> button.x;
    int y = o_event_C_Events -> button.y;
        
    int isSoundOn = 0;
 
        if(o_event_C_Events -> type == SDL_MOUSEBUTTONDOWN)
           if(o_event_C_Events -> button.button == SDL_BUTTON_LEFT)
                if((x > o_rect_C_Events.x) && (x < o_rect_C_Events.x + o_rect_C_Events.w) &&
                   (y > o_rect_C_Events.y) && (y < o_rect_C_Events.y + o_rect_C_Events.h))
                    switch(numberOfButton) {
                    case 0: // button "play"
                        return 0;
                        break;
                    case 1: // button "sound"
                        if(isSoundOn == 0) {
                                                        // событие 1
                            o_C_Blitting_C_Events.blittingImage(200, 400, pli -> img_soundOn, p -> getScreen());
                            isSoundOn = 1;
                        }
                        else if(isSoundOn == 1){
                                                        // событие 2
                            o_C_Blitting_C_Events.blittingImage(200, 400, pli -> img_soundOff, p -> getScreen());
                            isSoundOn = 0;
                        }
                            SDL_Flip(p -> getScreen());
                        break;
 
...
0
159 / 98 / 25
Регистрация: 07.03.2013
Сообщений: 509
Записей в блоге: 1
04.10.2013, 16:41 6
isSoundOn у тебя определяется в 5-й строке как "0". После этого я не вижу, чтоб оно переопределялось. Разумеется будет срабатывать всегда первый if

Добавлено через 1 минуту
Сделай isSoundOn глобальной и инициализируй первый раз где-нибудь за пределами этого обработчика
1
159 / 26 / 3
Регистрация: 17.08.2013
Сообщений: 510
04.10.2013, 16:46  [ТС] 7
Цитата Сообщение от Algoritmer Посмотреть сообщение
После этого я не вижу, чтоб оно переопределялось
Переопределяется в 19 и 24 строке

Добавлено через 3 минуты
Цитата Сообщение от Algoritmer Посмотреть сообщение
Сделай isSoundOn глобальной и инициализируй первый раз где-нибудь за пределами этого обработчика
Если сделать глобальной, то работает.
А можно как-то иначе сделать? Без глобальных, в смысле
0
555 / 509 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.10.2013, 16:48 8
скажи, что она static
1
159 / 26 / 3
Регистрация: 17.08.2013
Сообщений: 510
04.10.2013, 16:50  [ТС] 9
Цитата Сообщение от novi4ok Посмотреть сообщение
скажи, что она static
оу е, работает, спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2013, 16:50

Delphi xe2: изменение цвета кнопки, цвета рамки вокруг кнопки
изменение цвета кнопки, цвет рамки вокруг кнопки. подскажите как это сделать

Изменение цвета кнопки при нажатии
Подскажите, пожалуйста, как сделать так, что бы цвет кнопки при наведении был одним, а при нажатии,...

Изменение цвета кнопки при ее нажатии
Как сделать,чтобы при нажатии на кнопку она изменила свой цвет в visual studio 2010?

Изменение цвета кнопки при клике
как сделать чтоб кнопка меняла цвет при нажатии на неё?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.