- Сделать перевод в БУ по нажатию на кнопку
- События НАЖАТИЯ кнопки и ОТЖАТИЯ
- Нужна ли возможность настраивать контекстное меню графика?
x=!x;
О какой кнопке вопрос? Если OBJ_BUTTON, то она сама меняет состояние при клике. Должно быть отключено свойств SELECTABLE.
Ну хорошо, тогда какой самый экономичный код смены цвета кнопки при её нажатии.
Тогда чуть сложнее:
btnColor = (btnColor == clrBlue)? clrRed : clrBlue;
Тогда чуть сложнее:
Меня экономичность вообще не интересует. А зачем она, поясните? Я делаю так, это для матрицы кнопок 2*2, это вырезка из класса, но я думаю, будет ясно
string BtnName[BTN_ROWS][BTN_COLS] = {{"btnSellEnable", "btnBuyEnable"}, {"btnCloseLoss", "btnCloseProfit"}}; string BtnText[BTN_ROWS][BTN_COLS] = {{"Sell enable", "Buy enable"}, {"Close loss", "Close profit"}}; int XYCoord[BTN_ROWS][BTN_COLS][4] = {{{20,50,100,75}, {110,50,190,75}}, {{20,85,100,110}, {110,85,190,110}}}; color BtnColor[BTN_ROWS][BTN_COLS][2] = {{{clrLime,clrRed}, {clrLime,clrRed}}, {{clrLime,clrRed}, {clrLime,clrRed}}}; color BtnTextColor[BTN_ROWS][BTN_COLS][2] = {{{clrBlack,clrLinen}, {clrBlack,clrLinen}}, {{clrBlack,clrLinen}, {clrBlack,clrLinen}}}; CButton* ArrButtons[BTN_ROWS][BTN_COLS]; void SetPressedState(int row, int col, bool state) { ArrButtons[row][col].Pressed(state); } void SetPressedState(string name, bool state) { for(int row = 0; row < BTN_ROWS; row++) for(int col = 0; col < BTN_COLS; col++) { if(StringFind(name, BtnName[row][col]) != -1) { ArrButtons[row][col].Pressed(state); if(state) { ArrButtons[row][col].ColorBackground(BtnColor[row][col][1]); ArrButtons[row][col].Color(BtnTextColor[row][col][1]); } else { ArrButtons[row][col].ColorBackground(BtnColor[row][col][0]); ArrButtons[row][col].Color(BtnTextColor[row][col][0]); } return; // кнопка нашлась } } }
Меня экономичность вообще не интересует. А зачем она, поясните? Я делаю так, это для матрицы кнопок 2*2, это вырезка из класса, но я думаю, будет ясно
Обрамления с условиями обработки события не нужно, а вот только непосредственно та часть с операторами , которые меняют состояние кнопки . Т.е. нужно, чтобы каждое нажатие кнопки меняло её состояние на противоположное. Было false, стало true и наоборот. Кто сможет предложить самый экономный вариант? У меня есть вариант, который я считаю самым экономичным, но мне интересно посмотреть, как это делают другие. Если подобный вариант здесь не будет предложен, то я его потом выложу.
сразу масса вопросов - что считать "состоянием" ? нажата/отжата ?? разрешена/запрещена ?? И что экономим...можно экономить объём кода, скорость, обращения к библ.функциям.
в простейшем варианте, что-то навроде:
// меняем состояние нажата/отжата
if (ObjectSetInteger(0,buttonName,OBJPROP_STATE,state=(ObjectGetInteger(0,buttonName,OBJPROP_STATE)==0)) ) {
// меняем прочие декорации (фон,шрифт и прочее-прочее)
switch (state) {
case 1: // декорации для НАЖАТОЙ кнопки
break;
case 0: // декорации для ОТЖАТОЙ кнопки
break;
}
}
сразу масса вопросов - что считать "состоянием" ? нажата/отжата ?? разрешена/запрещена ?? И что экономим...можно экономить объём кода, скорость, обращения к библ.функциям.
в простейшем варианте, что-то навроде:
// меняем состояние нажата/отжата
if (ObjectSetInteger(0,buttonName,OBJPROP_STATE,state=(ObjectGetInteger(0,buttonName,OBJPROP_STATE)==0)) ) {
// меняем прочие декорации (фон,шрифт и прочее-прочее)
switch (state) {
case 1: // декорации для НАЖАТОЙ кнопки
break;
case 0: // декорации для ОТЖАТОЙ кнопки
break;
}
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования