Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.207.129] |
|
Сообщ.
#1
,
|
|
|
Борьба за быстродействие и нехватку памяти для ооочень больших списков.
Сделал виртуальный CListCtrl. По клику на ячейке нужно вывести CListBox и выбрать какое-то значение. 1. Вот не пойму как динамически создать этот CListBox и от него получить выбранное значение? 2. В расширенных CListCtrl в ячейки уже встроен CListBox, а как сделать что-то похожее на CListBox: в рамочке значение и рядом треугольничек? |
Сообщ.
#2
,
|
|
|
https://www.codeproject.com/Articles/29064/...ed-on-CListCtrl
см там все это есть |
Сообщ.
#3
,
|
|
|
Cfon, спасибо, я его уже видел, но мне нужен виртуальный CListCtrl
|
Сообщ.
#4
,
|
|
|
Цитата Vladimir_ @ 1. Вот не пойму как динамически создать этот CListBox и от него получить выбранное значение? Самое тупое решение(возможно самое рациональное и разумное), в редакторе форм создать диалог с CListBox, потом по клику на ячейке - его вызывать, и его заполнять значениями при открытии(в конструктор диалога передавать данные, в OnInitDialog ими наполнять свой ClistBox), потом при клике на ячейку CListCtrl - вызывать DoModal у твоего диалога, после вызова DoModal - проверять возвращенное значение, если IDOK, тогда брать с него данные, например какую нибудь функцию запилить, которая будет возвращать - что выбрал пользователь. Цитата Vladimir_ @ . В расширенных CListCtrl в ячейки уже встроен CListBox, а как сделать что-то похожее на CListBox: в рамочке значение и рядом треугольничек? Ниче не понял. Но на крайняк можно самому нарисовать треугольничек. |
Сообщ.
#5
,
|
|
|
KILLER, спасибо, да я так "тупо" и сделал!
Но вот пока не могу найти как сделать чтобы автоматом раскрывался CListBox. Т.е. нужно чтобы при двойном клике на ячейке в CListCtrl появлялся уже раскрытый CListBox. Я так понимаю в InitDialog запускаю таймер, а там какое-то сообщение CListBox нужно послать? |
Сообщ.
#6
,
|
|
|
Цитата Vladimir_ @ KILLER, спасибо, да я так "тупо" и сделал! Но вот пока не могу найти как сделать чтобы автоматом раскрывался CListBox. Т.е. нужно чтобы при двойном клике на ячейке в CListCtrl появлялся уже раскрытый CListBox. Я так понимаю в InitDialog запускаю таймер, а там какое-то сообщение CListBox нужно послать? Ну тут есть несколько вариантов. 1) - либо я не понимаю что ты вообще хочешь сделать 2) - либо ты перепутал ListBox с чем то другим 3) - либо ты не понятно формулируешь свой вопрос. Что значит я хочу чтобы раскрывался CListBox ???? Это список, он не может раскрываться в принципе. Может быть ты хочешь ComboBox ? Или ты имеешь ввиду как заполнить CListBox значениями? Ты можешь сделать скриншот того, что ты хочешь и нормально пояснить? И какой еще таймер в InitDialog? Зачем он нужен? Вот так выглядит CListBox: Прикреплённая картинка
Теперь объясни - что значит "как сделать чтобы автоматом раскрывался"? |
Сообщ.
#7
,
|
|
|
Сообщ.
#8
,
|
|
|
Можешь скинуть минимальный проект? Потому что судя по всему - у тебя там какая то кнопка, нажимая на которую нужно показать список. Но я не совсем представляю как у тебя внутри все устроено, соответственно мне сложно угадывать как тебе нужно сделать.
Но могу сказать одно - если вот эта хрень, которая должна показываться CListBox, А вот та кнопка со треугольником - диалог(или кнопка или что это вообще?), то возможно, когда ты показываешь свой CListBox - он у тебя показывается, но не там. Какой у него родитель? В твоем случае, если без минимальных телодвижений делать, у него родитель должен быть CListCtrl, тогда он будет рисоваться по верх него. А у тебя судя по всему другой родитель, и он рисуется, но рисуется в другом окне. |
Сообщ.
#9
,
|
|
|
Все, спасибо, нашел функцию ShowDropDown();
|
Сообщ.
#10
,
|
|
|
Цитата Vladimir_ @ Все, спасибо, нашел функцию ShowDropDown(); Ыыы, так значит у тебя не CListBox, а CComboBox, потому что такого метода у CListBox'а - нет. Он есть у CComboBox. |
Сообщ.
#11
,
|
|
|
Ага, очепятался
|
Сообщ.
#12
,
|
|
|
Цитата Vladimir_ @ Ага, очепятался Ты в следующий раз, копируй типы данных прямо из кода, а не пиши их руками. Тогда ты очень много времени сэкономишь себе и остальным, потому как выше я тебе писал: Цитата KILLER @ Что значит я хочу чтобы раскрывался CListBox ???? Это список, он не может раскрываться в принципе. Может быть ты хочешь ComboBox ? |
Сообщ.
#13
,
|
|
|
ок
|