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

» Использование DevExpress (часть 4)

Автор: reenoip
Дата сообщения: 16.08.2013 06:43
DE 2013.1.2 не перестаёт "радовать": скин "Office2013White", безусловно, очень красивый, но шибко уж пакостливый - даже если у формы BorderStyle выставить как bsDialog/bsSingle, размер окна всё равно свободно изменяемый. Приходится пока через костыль в виде "resize:=false", но это же как один бетонный столб другим подпирать...
Автор: karlss0n
Дата сообщения: 16.08.2013 11:40
Кто нибудь сталкивался с торможением при выборе ячеек в локальном cxGrid?
Размер таблицы 40*500, вроде небольшая.

DevEx 12.1.6
Автор: mcdie
Дата сообщения: 16.08.2013 11:52
karlss0n

У меня DevEx 12.1.6. Всё норм.
Автор: karlss0n
Дата сообщения: 16.08.2013 13:25

Цитата:
У меня DevEx 12.1.6. Всё норм.


Сейчас поставил 12.2.6 - проблема частично решилась.

Выделение части данных по прежнему работает плохо.
Заметил, что при включенных скинах выделение чуть медленнее происходит, без них чуть быстрее. Но всё равно лагает.

А решилась проблема с выделением всех ячеек сразу (у меня в одном из гридов 620 000+ ячеек). Раньше на выделение всех ячеек требовалось до 5 минут, сейчас за 1-2 секунды выбирается.
Автор: BlackVetal
Дата сообщения: 16.08.2013 13:45
karlss0n

Цитата:
у меня в одном из гридов 620 000+ ячеек

раскройте плиз тайну такого извращения? ну почему нельзя выводить порциями данные? ну например на текущую дату вывести, навряд ли будет большое количество строк.
Автор: mcdie
Дата сообщения: 16.08.2013 14:02
karlss0n
Я проверял на 7000 где то.

BlackVetal
+
Автор: karlss0n
Дата сообщения: 16.08.2013 14:13

Цитата:
раскройте плиз тайну такого извращения? ну почему нельзя выводить порциями данные? ну например на текущую дату вывести, навряд ли будет большое количество строк.


В наследство досталось

При небольшом количестве записей всё работает хорошо. В любом случае при большом объёме нет видимых причин - почему должно замедляться, но видимо это архитектура cxGrid...
Автор: mcdie
Дата сообщения: 16.08.2013 14:38
karlss0n
Возможно в компутаре памяти мало. Посмотри на объем процесса программы в памяти.
Автор: reenoip
Дата сообщения: 17.08.2013 08:46
Сам спросил, сам отвечаю:


Цитата:
RibbonAutoHideMode.Enabled := False;

Автор: Shepot
Дата сообщения: 17.08.2013 14:39

Цитата:

у меня в одном из гридов 620 000+ ячеек

раскройте плиз тайну такого извращения? ну почему нельзя выводить порциями данные? ну например на текущую дату вывести, навряд ли будет большое количество строк.

Ну например бывает удобно показать все данные, а потом быстрой фильтрацией найти нужные, средствами самого грида. Можно, конечно, задавать условия для запроса к БД с предварительной фильтрацией и показывать данные по частям, но у схГрида уж больно удобно фильрация реализована, а также быстрый инкрементальный поиск.
Автор: AlexCoRu
Дата сообщения: 17.08.2013 16:20

Цитата:
620 000+ ячеек
Наверное, строк?
А если не секрет, что эта таблица содержит? Список чего?
Автор: AlexCoRu
Дата сообщения: 18.08.2013 00:03

Цитата:
если TdxRibbonForm.DisableAero := True, то высота формы увеличивается на 2 пикселя.
У меня размер и положение формы восстанавливается/сохраняется в ini-файле, получается что от запуска к запуску высота окна увеличивается. Т.е. при закрытии формы размер записывается в файл, при открытии этот размер читается и присваивается форме, увеличивается на 2, при закрытии сохраняется и т.д.
Решено. Восстанавливать размеры окна нужно в обработчике OnShow. У меня было в OnCreate.
Автор: karlss0n
Дата сообщения: 18.08.2013 13:30

Цитата:
Наверное, строк?
А если не секрет, что эта таблица содержит? Список чего?


Нет, именно ячеек. Всего строк ~17 000 и 37 колонок.

Содержит список товара, который возможно отвезти в магазин. Логически побить её на несколько (через выбор даты и т.д.) не получится. Я для себя наметил 3 пути
1) оставить всё как есть
2) использовать локальный dataset (MemData)
3) попробовать перевести её в ServerMode

Добавлено:

Цитата:
Ну например бывает удобно показать все данные, а потом быстрой фильтрацией найти нужные, средствами самого грида. Можно, конечно, задавать условия для запроса к БД с предварительной фильтрацией и показывать данные по частям, но у схГрида уж больно удобно фильрация реализована, а также быстрый инкрементальный поиск.


Да, именно так и есть. Хочется использовать инкрементальный поиск и локальные фильтры. Они работают быстро и хорошо. При всём желании такой же "воздушной" работы при использовании "SQL режима" не получится, можно приблизится, но не достичь =)

К тому же есть особенность - запросы идут к WareHouse, а на него идёт соответствующая нагрузка, поэтому оптимизировать его работу для одновременного, качественного обслуживания OLTP клиентов затруднительно. Под высокой нагрузкой клиент будет периодически лагать, а это не очень хорошо с точки зрения юзабилити, тут надо думать что больше будет раздражать пользователя - небольшие лаги при выборе ячеек (что не основной функционал) или периодические лагания при фильтрации через FilteRow, инкрементальном поиске, что используется значительно чаще.

Я всё же попробую через MemData, возможно это решит все проблемы разом и не нужен будт компромис. О результатах отпишусь.
Автор: AlexCoRu
Дата сообщения: 18.08.2013 14:13

Цитата:
Нет, именно ячеек. Всего строк ~17 000 и 37 колонок.
17000 строк это не много ), а колонки может все сразу не тащить, вряд ли столько надо. Можно и потом отдельным запросом по необходимости.

Цитата:
Я всё же попробую через MemData
Можешь попробовать, но лучше сразу TClientDataSet.
Автор: karlss0n
Дата сообщения: 18.08.2013 15:07

Цитата:

Цитата:
Нет, именно ячеек. Всего строк ~17 000 и 37 колонок.
17000 строк это не много ), а колонки может все сразу не тащить, вряд ли столько надо. Можно и потом отдельным запросом по необходимости.

Вот и про тоже. Не кажется что это слишком много, для того, чтобы появлялись такие вещи.


Цитата:

Цитата:
Я всё же попробую через MemData
Можешь попробовать, но лучше сразу TClientDataSet.


Чем лучше?
Автор: X11
Дата сообщения: 18.08.2013 20:48
17 тысяч строк - это фигня, у меня работали с ~100 тыс. строк и это было ещё в 2008-2010 гг. Полей было не 35, но зато было одно из полей полей текстовое, символов на 400 + Master/Detail.
Компы тогда были не шибко умные. Я не хочу сказать, что всё летало. Но было приемлемо.

Добавлено:

Цитата:
3) попробовать перевести её в ServerMode


когда будет под миллион записей, тогда есть смысл
Автор: Roman85R31
Дата сообщения: 18.08.2013 21:18
Здравствуйте!
Подскажите, пожалуйста, с компонентом TcxDBTreeList. Не отображаются значения элементов.
В datacontroller я указал источник данных - таблица с базы данных, содержит улицы районов города и ссылку на район. В KeyField я указываю поле таблицы с адресами, в ParentField - поле, содержащее привязку к району.
Пока в источнике данных не поставить фильтрацию (к примеру, код района равен 1) все элементы находятся на одном уровне, но названия все равно не отображаются. После установки фильтра в источнике данных - появляется иерархическая структура, но названий нет.
http://s019.radikal.ru/i600/1308/a8/0ad512dbff93t.jpg
Автор: X11
Дата сообщения: 18.08.2013 22:33
по идее должен быть band и привязанные к нему columns

Добавлено:
Просто щёлкни по дереву правой кнопкой мышки и выбери Create all colums. Ненужное скрой.
Автор: BlackVetal
Дата сообщения: 19.08.2013 06:14
Shepot

Цитата:
Ну например бывает удобно показать все данные, а потом быстрой фильтрацией найти нужные

не соглашусь - фильтровать такое огромное количество строк на клиентской машине - это надо железо хорошее, что на практике не всегда и не везде реализуемо. Это первое.
Второе - это все может вызвать большое количество коллизий с доступом данных (так вроде это называется )
Автор: Roman85R31
Дата сообщения: 19.08.2013 21:44
Как понял, band и columns нужны для настройки внешнего вида отображения данных. Поясните, пожалуйста, подробнее.
Разобрался с отображением. Нужно было в keyField и в ParentField указать одинаковые поля (в моем случае). Помогла вот эта страница руководства: Tree Generation Algorithm in the XtraTreeList

Добавлено:
Появился вопрос другого рода: cxDBTreeList свойство optionsSelection.MultiSelect установил в true.
Как теперь программно получить список отмеченных элементов? Как вообще обратиться к какой-либо строке?
Автор: BlackVetal
Дата сообщения: 20.08.2013 05:25
Roman85R31
column - вывод/ввод данных
band - группа column-ов
Например, если взять транспорт у него есть постоянные характеристики (первый банд) - марка, тип, год постройки, грузоподъемность и т.д. и есть временные характеристики (второй банд) - пробег, время ТО и т.д.
по поводу дерева - на c# есть метод у дерева Selection - выделенная группа элементов, а конкретно к строке либо FocusedNode (текущий элемент) либо Nodes[index] - выбор элемента по индексу.
Автор: X11
Дата сообщения: 20.08.2013 11:03
http://www.sql.ru/blogs/x11/tags/tcxdbtreelist
Автор: Roman85R31
Дата сообщения: 20.08.2013 19:10
BlackVetal, X11 - огромное спасибо за пояснение и полезную ссылку.



Добавлено:
У tcxdbtreelist есть свойство SelectionCount (int) и Selections[i:int;] (типа TcxDBTreeListNode).
Тогда получение значений всех отмеченных элементов будет вот таким:

Код:
for I := 0 to <TcxDBTreeList>.SelectionCount-1 do
str:= str + VarToStr(<TcxDBTreeList>.Selections[i].Values[<Номер стоблца, из которого брать значение>])+',';
Автор: X11
Дата сообщения: 21.08.2013 08:49
Selected и checked - это разные вещи
Автор: jvthegost
Дата сообщения: 21.08.2013 11:02
Подскажите, как поменять цвет фона закладок в TcxPageControl, сами закладки при необходимости подсвечивать.
Раньше стояла Delphi 2007 + DevExpress v.42 там просто в настройках указывал цвет, + cxPageControl1.Pages[14].Highlighted := true
Сейчас установил XE3 + devcl20120105sdh в результате цвет фона PfgeControl стал серым и cxPageControl1.Pages[14].Highlighted := true не отрабатывает, исчезла подсветка.
Как лечить ??
Автор: A_V
Дата сообщения: 21.08.2013 14:39
jvthegost
xe2, та-же сборка девок, highlighted работает.
скины используются в проекте?
Автор: jvthegost
Дата сообщения: 22.08.2013 08:26
Вопрос снимается. Видать компонента стала криво, сейчас переставил, цвета и highlighted вернулись в свое русло.
Автор: xxbesoxx
Дата сообщения: 23.08.2013 08:55
вычисляемые поля работает не правильно . ребята пожалуйста если кто то сможет помочь .


Price

3,50
2,60

Quantity

2
3
5

Если Price * Quantity неправильно читает


Добавлено:
Вот первый пример .... НЕ РАБОТАЕТ, ПОКАЗЫВАЕТ НЕ ПРАВИЛЬНЫЙ ОТВЕТ


Код: procedure TForm1.cxDBPivotGrid1Field1CalculateCustomSummary(
Sender: TcxPivotGridField; ASummary: TcxPivotGridCrossCellSummary);
var
a , b: Double;
begin
a := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1UnitPrice, stSum);
b := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1Quantity, stSum);
cxDBPivotGrid1Field1.DataBinding.ValueType := 'Float';
ASummary.Custom := a * b;
Автор: MGAlex
Дата сообщения: 23.08.2013 15:14
Отладчик Вам в помощь. Нужно понять, на каком этапе ошибка. То ли неправильно получаете параметры UnitPrice и Quantity, то ли по-другому нужно присваивать конечное значение ASummary.Custom
Автор: k94kwk1
Дата сообщения: 24.08.2013 13:12
Здравствуйте!

У меня cxgrid для Delphi (VCL).
Мне нужно подкрасить определенную ячейку в таблице при нажатии кнопки пользователем. Пробовал воспользоваться событием cxGrid1DBTableView1CustomDrawCell

Работает.... но сек через 5-10. А мне нужно подсветить ячейку другим цветом сразу же!!!
Не подскажите как сделать?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


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