Обсуждение статьи "Графические интерфейсы VI: Элементы "Чекбокс", "Поле ввода" и их смешанные типы (Глава 1)" - страница 2

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так у каждого элемента как раз и есть свой уникальный идентификатор элемента.
if(id==CHARTEVENT_CUSTOM+ON_END_EDIT)
{
if(lparam==m_spin_edit1.Id()){Print(m_spin_edit1.GetValue());}
if(lparam==m_spin_edit2.Id()){Print(m_spin_edit2.GetValue());}
if(lparam==m_spin_edit3.Id()){Print(m_spin_edit3.GetValue());}
if(lparam==m_spin_edit4.Id()){Print(m_spin_edit4.GetValue());}
if(lparam==m_spin_edit5.Id()){Print(m_spin_edit5.GetValue());}
if(lparam==m_spin_edit6.Id()){Print(m_spin_edit6.GetValue());}
if(lparam==m_spin_edit7.Id()){Print(m_spin_edit7.GetValue());}
if(lparam==m_spin_edit8.Id()){Print(m_spin_edit8.GetValue());}
if(lparam==m_spin_edit9.Id()){Print(m_spin_edit9.GetValue());}
...
}
я имел ввиду чтобы не писать такой код, может есть смысл сделать
if(id==CHARTEVENT_CUSTOM+ON_END_EDIT)
{
Print(GetValue(lparam));
или
Print(this.GetValue());
}
но у меня полей не много, мне и первый вариант подойдет
Pavel Kolchin:
...
я имел ввиду чтобы не писать такой код, может есть смысл сделать
if(id==CHARTEVENT_CUSTOM+ON_END_EDIT)
{
Print(GetValue(lparam));
или
Print(this.GetValue());
}
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
program.ChartEvent(id,lparam,dparam,sparam);
if(lparam==program.m_checkbox.Id())
if(program.m_checkbox.CheckButtonState())
{
program.m_checkbox.LabelColor(clrGreen);
}
else
{
program.m_checkbox.LabelColor(clrRed);
}
}
//+------------------------------------------------------------------+
Alexander Fedosov:
Сейчас можно установить цвета для разных состояний только до установки элемента (пример ниже):
//| Создаёт чекбокс 1 |
//+------------------------------------------------------------------+
bool CProgram::CreateCheckBox1(const int x_gap,const int y_gap,string text)
{
//--- Сохраним указатель на окно
m_checkbox1.WindowPointer(m_window1);
//--- Установим свойства перед созданием
m_checkbox1.XSize(90);
m_checkbox1.YSize(18);
m_checkbox1.LabelColor(clrGreen);
m_checkbox1.LabelColorOff(clrRed);
m_checkbox1.LabelColorHover(clrCornflowerBlue);
m_checkbox1.LabelColorLocked(clrSilver);
//--- Создадим элемент управления
if(!m_checkbox1.CreateCheckBox(m_chart_id,m_subwin,text,x_gap,y_gap))
return(false);
//--- Добавим объект в общий массив групп объектов
CWndContainer::AddToElementsArray(0,m_checkbox1);
return(true);
}
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
program.ChartEvent(id,lparam,dparam,sparam);
if(lparam==program.m_checkbox.Id())
if(program.m_checkbox.CheckButtonState())
{
program.m_checkbox.LabelColor(clrGreen);
}
else
{
program.m_checkbox.LabelColor(clrRed);
}
}
//+------------------------------------------------------------------+
А если так?
{
if(program.m_checkbox.CheckButtonState()) program.m_checkbox.LabelColor(clrGreen);
else program.m_checkbox.LabelColor(clrRed);
}
А есть возможность получить значение типа string из элемента CSpinEdit ? Или возможно для этого есть другой (элемент) класс ?
Получайте значение с помощью метода GetValue() и преобразуйте его в тип string.
Толь, что-то долго обновлений нету. Не из-за запрета кастинга структур и ввода юнионов?
Не увидел, как бы это могло помешать дальнейшему развитию библиотеки. У меня это событие прошло незамеченным.
Сейчас идёт большая работа по оптимизации кода. Общий объём сократится приблизительно на 30%. Общие свойства элементов будут вынесены в базовые классы. Файлов станет меньше, так как некоторые элементы будут объединены в один. Без потери функционала, так как можно будет выбирать режим. Будет существенно уменьшено количество графических объектов. Теперь будет только один тип объектов - bitmap label, так как все элементы будут рисоваться. Сложные составные элементы будут теперь собираться из готовых элементов, а не графических объектов-примитивов.
В общем, много всего нужно пересобрать и протестировать прежде, чем представлять новую версию. Не могу сказать, когда будет следующая статья.
Не увидел, как бы это могло помешать дальнейшему развитию библиотеки. У меня это событие прошло незамеченным.
Сейчас идёт большая работа по оптимизации кода. Общий объём сократится приблизительно на 30%. Общие свойства элементов будут вынесены в базовые классы. Файлов станет меньше, так как некоторые элементы будут объединены в один. Без потери функционала, так как можно будет выбирать режим. Будет существенно уменьшено количество графических объектов. Теперь будет только один тип объектов - bitmap label, так как все элементы будут рисоваться. Сложные составные элементы будут теперь собираться из готовых элементов, а не графических объектов-примитивов.
В общем, много всего нужно пересобрать и протестировать прежде, чем представлять новую версию. Не могу сказать, когда будет следующая статья.