ImageCombo

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

ImageCombo

Сообщение Eugenio » 24.03.2007 (Сб) 10:13

Доброго времени суток.
Может быть, уже и задавал такой вопрос, но тогда выход не нашелся. А всё-таки надо:-)
Для создания выпадающего списка с пиктограмммами используется ImageCombo. Но при этом:
а) мне нужно, чтобы текст элемента выделялся, как в ComboBox и не редактировался. Его можно "залочить" (свойство Locked) от изменения, но он при этом все равно находится, как бы, в режиме редактирования - есть перемещаемый помигивающий курсор, текст при установке фокуса не выделяется весь, нет рамки.
б) изображение выделяется тоже (у выделенного элемента оно "покрывается штриховкой", не помню, как правильно называть), а оно - мелкое, из-за этой штриховки его вообще не разобрать.
Вобщем, хотелось бы,
- чтобы выделялся только текст, причем, как в Grid'е или ComboBox - в рамке (тоже не помню уже, как правильно звать).
- убрать шриховку с пиктограммы
Не посоветует кто-нибудь, что сделать можно? как, например, нарисовать пиктограммы поверх ComboBox (в т.ч. в выпадающего списка) и отодвинуть притом текст вправо, чтобы для них место оставить?
Есть ли у меня вопрос? У меня всегда есть вопрос

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.03.2007 (Сб) 14:57

const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 24.03.2007 (Сб) 16:49

Чужой контрол, для которого требуется еще один их же контрол...
Для которого, наверное, требуется еще контрол:-)...
Нет. Спасибо, но это не подходит. Меня интересует, как это сделать.
Есть ли у меня вопрос? У меня всегда есть вопрос

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 24.03.2007 (Сб) 18:16

Возьми обычный combo и сабклассируй. Примеров на VBStreet полно.

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 24.03.2007 (Сб) 20:14

EUGY писал(а):Возьми обычный combo и сабклассируй. Примеров на VBStreet полно.

"Пойди уже, и сделай":-). Спасибо за ответ.
Ежу понятно, что сабклассинг потребуется.
Я не слишком хорошо знаю API, пользовался мало (нету у меня в этом необходимости обычно).
Чего бы спрашивал?
Есть ли у меня вопрос? У меня всегда есть вопрос

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.03.2007 (Сб) 22:15

Eugenio писал(а):Чужой контрол, для которого требуется еще один их же контрол...


Если речь о ssubtmr6, то минимальные изменения кода с использованием SetWindowLong GWL_WNDPROC, CallWindowProc решают проблему.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 26.03.2007 (Пн) 10:23

BV писал(а):
Eugenio писал(а):Чужой контрол, для которого требуется еще один их же контрол...


Если речь о ssubtmr6, то минимальные изменения кода с использованием SetWindowLong GWL_WNDPROC, CallWindowProc решают проблему.

Не очень понял. Имел в виду, что эта фиговинка, например, не совместима со стандартным ImageList. И вообще это, типа, принципиальная позиция: Microsoft, или open source, или своё, больше ничего.
Что касается API+ComboBox, то тут кроме SetWindowLong еще графические функции понадобятся, а их-то я не пользовал...
Есть ли у меня вопрос? У меня всегда есть вопрос

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 26.03.2007 (Пн) 12:12

Весь vbaccelerator -- это open-source.
Изображение

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 26.03.2007 (Пн) 13:37

tyomitch писал(а):Весь vbaccelerator -- это open-source.

Умудрился не заметить ссылку "Full source" именно для нужного контрола, прошу прощения.
Спасибо, BV, на что-то такое и рассчитывал. Иду разбираться.
Есть ли у меня вопрос? У меня всегда есть вопрос


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList