Здравствуйте, PhantomIvan, Вы писали:
PI> Есть ли аналог сетке (таблице) из дельфийского VCL (TDBGrid) для представления данных из БД в MFC?
Есть ActiveX элементы типа MSFlexGrid и DBGrid которые нужно поместить на форму.
Но я так и не разобрался с ними. Я сделал свой клас наследник от CListCtrl. В нем отображал содержимое базы, а по по дабл-клику на любой subitem показывал динамически создаваемый EditBox запоминал текст и передавал в базу. А выбраный екстенд-стиль CListControl-a : LVS_EX_GRIDLINES придавал моему контролу полное сходство с гридом.
Здравствуйте, suffiks, Вы писали:
S>Есть ActiveX элементы типа MSFlexGrid и DBGrid которые нужно поместить на форму. S>Но я так и не разобрался с ними. Я сделал свой клас наследник от CListCtrl. В нем отображал содержимое базы, а по по дабл-клику на любой subitem показывал динамически создаваемый EditBox запоминал текст и передавал в базу. А выбраный екстенд-стиль CListControl-a : LVS_EX_GRIDLINES придавал моему контролу полное сходство с гридом.
Но ведь в таком случае следует реализовывать сложное поведение наследника CListCtrl при прокрутке (нельзя же грузить большие выборки прямо в него сразу (памяти не напасешься...)?
Re[3]: аналог TDBGrid в MFC
От:
Аноним
Дата:
15.04.04 05:31
Оценка:
Здравствуйте, PhantomIvan, Вы писали:
PI>Но ведь в таком случае следует реализовывать сложное поведение наследника CListCtrl при прокрутке (нельзя же грузить большие выборки прямо в него сразу (памяти не напасешься...)?
Логично. Тогда остаются перечисленные ранее OCX-ы...
Здравствуйте, PhantomIvan, Вы писали:
PI>Но ведь в таком случае следует реализовывать сложное поведение наследника CListCtrl при прокрутке (нельзя же грузить большие выборки прямо в него сразу (памяти не напасешься...)?
Чесно говоря не думал над этим. Но полагаю стоит обратиться к описанию класса CListCtrl по вопросу — сколько элементов максимально можно помещать в его список.
(Если что то найдешь — напиши. мне тоже интересно :))
Здравствуйте, suffiks, Вы писали:
S>Чесно говоря не думал над этим. Но полагаю стоит обратиться к описанию класса CListCtrl по вопросу — сколько элементов максимально можно помещать в его список.
Я использовал ListCtrl в режиме виртуального списка — отображал 20 000 без тормозов. Говорят что и 1 000 000 таким методом отображать можно.. Помоему даже читал про это на rsdn в статьях.
Здравствуйте, suffiks, Вы писали:
S>Чесно говоря не думал над этим. Но полагаю стоит обратиться к описанию класса CListCtrl по вопросу — сколько элементов максимально можно помещать в его список. S>(Если что то найдешь — напиши. мне тоже интересно
Учитывая заметку об виртуальных лист контролах, я попробую сначала выписать код именно для этого класса. Думаю на следующей неделе сделаю. Смогу привести код или просто рассказать как все-таки сделал. В конце следующей недели найди этот топик на форуме.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, PhantomIvan, Вы писали:
PI>>Но ведь в таком случае следует реализовывать сложное поведение наследника CListCtrl при прокрутке (нельзя же грузить большие выборки прямо в него сразу (памяти не напасешься...)?
А>Логично. Тогда остаются перечисленные ранее OCX-ы...
Я реализовывал аналогичное поведение с помощью ALXGrid + Кэшируюший рекордсет (Потомок CRecordset), считывающий данные порциями, по мере обращения к ним. Кэширующий рекордсет пишется, отсилы, за полдня. Открытие таблицы с 2 млн. записей занимало ~1-2 сек. (Oracle). Можно, как уже советовали, ипользовать CListCtrl в режиме виртуального списка + кеширующий рекордсет.