powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Жирные тоже плачут
17 сообщений из 17, страница 1 из 1
Жирные тоже плачут
    #32413399
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотел в списке выделить один из пунктов жирным шрифтом , чтобы было видно, какой пункт был выбран исходно. С огорчением обнаружил, что в CListBox такой возможности нет. С удивлением обнаружил, что и в CListCtrl нет! Тогда я занялся owner draw'ом, но потом нашёл более простое решение.

А вы? :)
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32413539
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой а нам еще долеко до этого
____
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32413555
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с JibSkeart, для юзающих C++Builder такие проблемы действительно делеки, только не еще а уже .
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32413807
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. твой способ работает для CListBox и для CListCtrl и не использует OWNERDRAW ?
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32413894
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рискну предположить, что имеется в виду перехват сообщения NM_CUSTOMDRAW
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32414081
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tracer
Не совсем. Я использовал вместо списка дерево :)
(а CTreeCtrl поддерживает жирный шрифт)
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32414312
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой Вэй из Харькова нам писалХотел в списке выделить один из пунктов жирным шрифтом , чтобы было видно, какой пункт был выбран исходно.
С огорчением обнаружил, что в CListBox такой возможности нет.
С удивлением обнаружил, что и в CListCtrl нет!
Тогда я занялся owner draw'ом, но потом нашёл более простое решение.

А вы? :)

Хотел я как-то раз укусить себя зубами за жопу , чтобы.. чтобы.. да просто делать было нех.., вот и решил.
С огорчением обнаружил, что дотянуться до неё зубами возможности нет.
С удивлением обнаружил, что и дотянуться жопой до зубов никак!
Тогда я занялся о#####'ом, но потом нашел более простое решение.

А вы? :)
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32414688
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2DarkCat

Ээээ что енто с тобой ???
такую культурную беседу исковеркал

____
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32414694
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стиль такой
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32415105
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SnowMan
Т.е. в Билдере это сделать легко?
Интересно, а есть ли там такое понятие, как "недоступный пункт"? Т.е. он виден, но его нельзя выбрать.
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32415141
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню нету .
если толко сам ручками :)
____
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32415809
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я вот опробовал-таки NM_CUSTOMDRAW...
классная вещь оказалась и хлопот немного... правда CListBox этого не поддерживает, но вот в CListCtrl можно делать все, что хочешь - хоть жирный, хоть подчеркнутый... а цвет текста у разных элементов поменять и вовсе нефиг делать
зато в CListBox можно делать item-ы разной высоты, что может потребоваться в случае сильно разного рамера шрифтов.
"С удивлением обнаружил..." (С), что у CListCtrl такой возможности нет... может кто знает, как ему объяснить, что строки должны быть разной высоты?
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32416009
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2_Konst
Похоже, что и правда нет...

Вот тут я нашёл пару извращений для борьбы с этим:
http://www.sources.ru/cpp/mfc/t9107.htm

Что самому рисовать очень просто согласиться не могу. На каждый чих надо писать три-четыре строки кода (например, надо прочитать несколько системных цветов). А чтобы нарисовать жирным шрифтом, как я понимаю, надо создавать шрифт, выбирать его для DC и.т.д.
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32416030
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Ой Вэй
Интересно, а есть ли там такое понятие, как "недоступный пункт"?

как ты себе это представляешь установить, если списка еще нет в дизайн моде ?
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32416066
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ой Вэй
авторИнтересно, а есть ли там такое понятие, как "недоступный пункт"? Т.е. он виден, но его нельзя выбрать.

Недоступного пункта списка конечно нет.
Однако если очень хочется, то можно. На базе ListView очень просто в обработчике OnSelectItem надо написать 2 строчки:

Код: plaintext
1.
if (условие недоступности) 
     Selected = false;

Если еще хочется покрасить в цвет недоступного объекта, то в обработчике OnDrawItem тоже 2 строчки:

Код: plaintext
1.
if (условие недоступности) 
     ListView1->Canvas->Pen->Color = clGrayText;


PS 1. Заголовки обработчиков Builder пишет сам.
2. HDC определять не надо, шрифт создавать тоже.

Итого 4 строки.
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32416609
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щас я вам всё испорчу

Как на счёт тоже самое сделать в Combo-box'е?
...
Рейтинг: 0 / 0
Жирные тоже плачут
    #32418025
SnowMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В обработчике OnDrawItem

Код: plaintext
1.
2.
 if (Index %  3  ==  2 ) // Например каждая третья строка недоступна
     ComboBox1->Canvas->Font->Color = clGrayText;
 ComboBox1->Canvas->TextOut( 1 , Rect.Top+ 1 , ComboBox1->Items->Strings[Index]);

В обработчике OnKeyDown

Код: plaintext
 OldItemIndex = ComboBox1->ItemIndex; // OldItemIndex - общая переменная

В обработчике OnKeyUp

Код: plaintext
1.
2.
3.
4.
5.
 if (ComboBox1->ItemIndex %  3  ==  2 )
     if (ComboBox1->ItemIndex > OldItemIndex &&
         ComboBox1->ItemIndex < ComboBox1->Items->Count- 1 )
          ComboBox1->ItemIndex++;
     else
          ComboBox1->ItemIndex--;

В обработчике OnClick

Код: plaintext
1.
 if (ComboBox1->ItemIndex %  3  ==  2 )
     ComboBox1->ItemIndex--;


Пишите на Builder-e - круто. Если круто писать конечно.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Жирные тоже плачут
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]