Обсуждение статьи "Графические интерфейсы XI: Интеграция графической стандартной библиотеки (build 16)" - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
себе сделал, может автору пригодятся.
Не могу заставить меняться картинку в ячейке-кнопке. Индекс изображения меняется без проблем. Но поменять само изображение не получается.
Как это делать? Какие методы перерисовывают кнопку?
Если использовать метод Update() для экземпляра CTable - программа компилируется, но не запускается, пишет "Invalid EX5 file (4)".
Сделал публичным метод Draw() из CTable - не перерисовывает.
Попробовал метод Reset() из CWindow - судя по всему, окно перерисовал, т.к. оно стало тусклым. Но кнопочки не поменялись.
Кто нибудь успешно сделал ячейки-кнопки?
Если использовать метод Update() для экземпляра CTable - программа компилируется, но не запускается, пишет "Invalid EX5 file (4)".
Кто нибудь успешно сделал ячейки-кнопки?
Ячейки-кнопки делал, но менять картинку задачи небыло...
У метода Update() по-умолчанию перерисовка установлена false. С перерисовкой нужно использовать Update(true)
Добавил в библиотеке одну строчку и заработало! Ура, товарищи!
Желтым выделено что добавил. Куда добавил:
void CTable::DrawImage(const int column_index,const int row_index)
{
//--- Расчёт координат
int x =m_columns[column_index].m_x+m_columns[column_index].m_image_x_offset;
int y =m_rows[row_index].m_y+m_columns[column_index].m_image_y_offset;
//--- Выбранная картинка в ячейке и её размеры
int selected_image =m_columns[column_index].m_rows[row_index].m_selected_image;
uint image_height =m_columns[column_index].m_rows[row_index].m_images[selected_image].Height();
uint image_width =m_columns[column_index].m_rows[row_index].m_images[selected_image].Width();
//--- Рисуем
for(uint ly=0,i=0; ly<image_height; ly++)
{
for(uint lx=0; lx<image_width; lx++,i++)
{
//--- Если нет цвета, перейти к следующему пикселю
if(m_columns[column_index].m_rows[row_index].m_images[selected_image].Data(i)<1)
continue;
//--- Получаем цвет нижнего слоя (фона ячейки) и цвет указанного пикселя картинки
uint background =(row_index==m_selected_item)? m_selected_row_color : m_canvas.PixelGet(x+lx,y+ly);
uint pixel_color =m_columns[column_index].m_rows[row_index].m_images[selected_image].Data(i);
//--- Смешиваем цвета
uint foreground=::ColorToARGB(m_clr.BlendColors(background,pixel_color));
//--- Рисуем пиксель наслаиваемого изображения
m_table.PixelSet(x+lx,y+ly,foreground);
}
}
m_table.Update(true);
}
Ячейки-кнопки делал, но менять картинку задачи небыло...
У метода Update() по-умолчанию перерисовка установлена false. С перерисовкой нужно использовать Update(true)
Так это ясный перец!
Я всегда за правду, когда мне fasle я сразу чую :)
как изменить пункты комбобокса после его создания?
а у меня такая проблема, когда выбираю пункт combobox, то не нажимается любой item на CheckBoxList
как сместить вправо надпись с иконкой вместе:
иконка отдельно двигается методом IconXGap(...), а надпись не нашел как