Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Ehlib

Автор: landy
Дата сообщения: 10.08.2014 15:05
XPerformer, формально согласен, но при использовании DBGridEh он работает посредником между нормальным датасетом (интерфейсом к БД) и, собственно, гридом и обладает интерфейсом для прямого доступа к данным в памяти.
Автор: XPerformer
Дата сообщения: 10.08.2014 15:36
landy

Цитата:
использовании DBGridEh он работает посредником между нормальным датасетом

именно поэтому не надо трогать исходный датасет, а позиционироваться через MemTableEh, как показано ниже

deyatel1974
>> MemTableEh.RecordsView.MemTableData.RecordsList
это как-то уж очень замысловато...

Почему вы не позиционируетесь в гриде как обычно
for nRow := 0 to Selection.Rows.Count - 1 do begin
MemTableEh.Bookmark := Selection.Rows.Items[nRow];

должно сработать и после изменения порядка сортировки
Автор: deyatel1974
Дата сообщения: 10.08.2014 16:15
XPerformer спасибо твой вариант рабочий но мне хотелось использовать самый прямой интерфейс. хотя для MemTableEh разницы наверное не будет.
Автор: XPerformer
Дата сообщения: 10.08.2014 16:22

Цитата:
но мне хотелось использовать самый прямой интерфейс

зачем? кроме запутанного кода и ошибок, это ничего не дает
Автор: Samotek
Дата сообщения: 10.08.2014 16:31
XPerformer

Цитата:
должно сработать и после изменения порядка сортировки

Возможны проблемы, если в процессе бега по селшен изменяются поля сортировки. Я для избегания этого собираю Id веделенных записей датасета грида, а потом спокойно их редактирую. В этом случае порядок сортировки не имеет значения.
Автор: landy
Дата сообщения: 10.08.2014 20:40
deyatel1974, MemTableData.RecordsList предназначен для того, чтобы обойти все загруженные строки, игнорируя наложенные фильтры и сортировки (и не двигая курсор - текущую запись.)
Автор: deyatel1974
Дата сообщения: 11.08.2014 12:22
XPerformer я полагал что это увеличит производительность. ну и в учебных целях конечно
Автор: XPerformer
Дата сообщения: 11.08.2014 13:17
deyatel1974
В учебных - это конечно.
А если производительность увеличить в разы - то лучше взять другой компонент, здесь было сравнение http://forum.ru-board.com/topic.cgi?forum=33&topic=8529&start=5760#20
Автор: landy
Дата сообщения: 11.08.2014 14:56
XPerformer, полезное исследование. А какая версия EhLib там участвовала? Может, нынешние себя получше ведут и уже не умирают на 100 тыс записей?
Автор: XPerformer
Дата сообщения: 11.08.2014 15:02
landy
один из последних билдов. так что это врядли
Хуже то, что он не всегда находит записи. У него очень удобный встроенный поиск, но я уже давно замечал, что русские слова находит не всегда. А тест показал, что и числа, увы тоже. Это гораздо хуже, на мой взгляд, критическая ошибка
Автор: landy
Дата сообщения: 11.08.2014 15:14
XPerformer, а это не может быть связано с разностью кодировок, например (одно/мультибайтовая)?
Автор: XPerformer
Дата сообщения: 11.08.2014 15:15
landy
не знаю как может повлиять кодировка на поиск по целочисленному полю
Автор: landy
Дата сообщения: 11.08.2014 15:23
XPerformer, в поддержку не пробовал писать? Они вроде реагируют на баг-репорты, но не факт, конечно, что сразу..
Автор: XPerformer
Дата сообщения: 11.08.2014 15:27
можно и написать. Но они ж не волшебники, ошибки может и исправят, но скорость вряд ли поднимут до лидера хитпарада. Поэтому при наличии альтернативы чего зазря людей беспокоить.
Автор: landy
Дата сообщения: 11.08.2014 15:47
XPerformer, альтернатива может быть достаточно трудоемкой - если в проекте, например, уже используется DBGridEh, то менять всё на монструозный DevExpress может быть не очень правильно, если, конечно, в остальном всё устраивает.
Автор: XPerformer
Дата сообщения: 11.08.2014 15:51
landy
речь не о DBGridEh, а о MemTableEh. Его заменить на другой компонент - дело недолгое (причем я-то как раз не считают devexpress хорошей альтернативой, из-за его нестандартности и громоздкости). Есть несколько других быстрых и надежных отдельно изданных мемори-датасетов, и даже бесплатных при этом
Автор: Samotek
Дата сообщения: 11.08.2014 15:52
landy

Цитата:
XPerformer, альтернатива может быть достаточно трудоемкой - если в проекте, например, уже используется DBGridEh, то менять всё на монструозный DevExpress может быть не очень правильно, если, конечно, в остальном всё устраивает.

Судя по этому вопросу вы не путаете понятия датасет и грид.
Автор: landy
Дата сообщения: 11.08.2014 16:04
Samotek, нет не путаю. Я имел в виду, что раз в DevExpress и в EhLib входят свои грид и датасет, то использовать одно из одного пакета, а другое из другого хоть и возможно, но довольно громоздко. Разумнее ограничиться одним пакетом компонент. Заменить же только InMemory-датасет проще, согласен, но, на мой взгляд, лучше минимизировать количество сторонних библиотек.
Автор: XPerformer
Дата сообщения: 11.08.2014 16:07
landy
нет, не разумнее, если компонент из одного пакета гораздо лучше чем из другого и наоборот, поэтому они дополняют друг друга. Я использую DBGridEh + AbsTable in memory, пользователю как-то все-равно сколько пакетов, зато не все равно, когда программа загружается 3 мин вместо 20 сек. Да еще и поиск работает через раз
Автор: AnViSe
Дата сообщения: 14.08.2014 13:32
Использую стандартный функционал отметки записей (чек-боксы в столбце индикатора).
Если при наличии отмеченных записей выполнить переход по записям с помощью стрелок на клавиатуре все отмеченные записи сбрасываются, если то же выполнить с помощью колесика мыши то все нормально.
Это есть глюк или фича?
Автор: Samotek
Дата сообщения: 14.08.2014 14:25
AnViSe

Цитата:
Это есть глюк или фича?

Options dgMultiSelect
Автор: AnViSe
Дата сообщения: 15.08.2014 08:51
Samotek
В свойстве Options включены dgRowSelect и dgMultiSelect.
Автор: Samotek
Дата сообщения: 15.08.2014 10:26
AnViSe

Цитата:
В свойстве Options включены dgRowSelect и dgMultiSelect.

Ну еще OptionsEh.dghClearSelection
Автор: AnViSe
Дата сообщения: 18.08.2014 09:45
Samotek
Со значением OptionsEh.dghClearSelection = False все стало на свои места, спасибо.
Автор: NightSpawn
Дата сообщения: 29.08.2014 04:35
Добрый день! Подскажите пожалуйста, можно ли у DBGridEh в режиме DataGrouping = True, сделать каким-нибудь образом, так что одиночные элементы не группировались?
Автор: waik
Дата сообщения: 29.08.2014 11:56
NightSpawn думаю что нет в прямом смысле. Но можно группировать по своему специально подготовленному полю где программно задать условия группировки (Например Группа - Негруппированные ) И её держать открытой. Либо я не совсем понял вопрос - там не хватает какой-то частицы речи - например "бы"
Автор: NightSpawn
Дата сообщения: 01.09.2014 02:46

Цитата:
NightSpawn думаю что нет в прямом смысле. Но можно группировать по своему специально подготовленному полю где программно задать условия группировки (Например Группа - Негруппированные   )  И её держать открытой.    Либо я не совсем понял вопрос - там не хватает какой-то частицы речи - например "бы"

Ну, например:
Где два элемента в "группе", там группировать, где один, то просто отображать как один элемент.
Автор: waik
Дата сообщения: 01.09.2014 11:03
NightSpawn Теперь понятно. Я такого не встречал. Или группируем или нет. А то слишком специфично получается. Как вариант - пробежаться по группам и если внутри один элемент то делать ей экспанд. Не очень красиво может получится.
Автор: NightSpawn
Дата сообщения: 02.09.2014 02:38
Понятно, будем посмотреть
Автор: Medium
Дата сообщения: 01.10.2014 00:41
Подскажите, плз, кто знает. Где задаётся цвет фона у DBGridEh (на скриншоте это белый цвет):

Что-то без правки исходников не нашёл.

P.S. EhLib v.7.0.122

Страницы: 1234567891011121314151617181920212223

Предыдущая тема: Конвертация char в ASCII код; c


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.