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

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

Автор: crazypiggy
Дата сообщения: 01.10.2011 19:10
Индекс сам у dxMemData будет автоматически увеличиваться?

Цитата:
А можно использовать не cxGridDBTableView, cxGridTableView, без dxMemData

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

Добавлено:
И ещё один вопрос. Может немного не по адресу...
Я получаю из разных баз с одинаковой структурой записи и поочереди загоняю их в dxMemData. Можно ли получить из dxmemdata результат суммирования с группировкой по полям. Кроме простого перебора ничего в голову не лезет. Но записей может быть около тысячи, и пробегаться по ним группируя их както сложновато получается. Может подскажите как это можно реализовать?
Автор: AlexCoRu
Дата сообщения: 01.10.2011 20:06
crazypiggy, X11 пишет, что можно вообще обойтись без DataSet. Грузи сразу в cxGridTableView, вручную грузить проблем нет. У меня текстовые логи телефонной станции за 3 года (1 200 000 записей) загружаются секунд за 30 и затем с фильтрацией, сортировкой, поиском проблем нет. Ешё и экспорт в xls.
Автор: crazypiggy
Дата сообщения: 01.10.2011 20:41
AlexCoRu
А не подскажешь как вручную загрузить данные в cxGridTableView. Я просто это ниразу не делал

Добавлено:
Дело в том что у меня раньше вместо dxMemData столя FIBDataset и все работало, а как только поменял на dxMemData перестало работать
Автор: AlexCoRu
Дата сообщения: 01.10.2011 21:05
Из текстового файла, примерно, так:

Код: while not Eof(Log) do
begin
ReadLn(Log, S);
IRow := cxGridTableView.DataController.AppendRecord;
cxGridTableView.DataController.Values[IRow,0] := Copy(S, FieStart, FieLen);
end;
Автор: X11
Дата сообщения: 01.10.2011 21:16
crazypiggy, скачай справку и примеры, там описано, как работать с cxGridTableView без TDataSet. У cxGridTableView есть своё встроенное хранилище.


Цитата:
Можно ли получить из dxmemdata результат суммирования с группировкой по полям.

Это НЕ SQL-направленный набор данных. Если тебе нужен InMemorySQL-направленный-DataSet, нужно ставить другие компоненты. Но это же никак DevExpress не касается.
Автор: maratea
Дата сообщения: 04.10.2011 14:20
Доброго всем дня.
У меня вопрос такой.

Есть TcxGridDBTableView. По определенной колонке (Value) выводится Summary (настраивается во вкладке Groups). Есть возможность получить по колонке сумму значений, минимальное, максимальное, среднее. А мне нужно посчитать разницу между максимальным и минимальным. Чувствую, что решение не должно быть сложным, но вот с разных сторон пытаюсь подобраться и никак не могу.

Буду благодарна, если кто-то сможет направить мысль куда надо. )
Автор: linker_2009
Дата сообщения: 04.10.2011 15:45
maratea
То что вам нужно, с примером, есть в справке.
ExpressQuantumGrid.chm -> Task Based Help -> Creating Custom Summaries
Автор: xyebiz
Дата сообщения: 04.10.2011 16:11

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

А в чем трудность объявить в процедуре две переменные типа variant, присвоить им соответствующие максимальное и минимальное значения и их разницу запихнуть обратно в summary (либо в любое другое место)?
Автор: linker_2009
Дата сообщения: 04.10.2011 16:21

Цитата:
А в чем трудность объявить в процедуре две переменные типа variant, присвоить им соответствующие максимальное и минимальное значения и их разницу запихнуть обратно в summary?

В том что maratea'е нужно summary в группе, а не в Footer'e все таблицы.
Автор: kii
Дата сообщения: 05.10.2011 07:49
Народ!
Совершенно тупой вопрос.
Сколько записей можно открыть в cxGrid ?
Уменя 35-40 тыс. открывается без проблем, а 110 - виснет все.
Когда-то было ограничение 10 тыс. записей. А сейчас?
Автор: fitget
Дата сообщения: 05.10.2011 09:49
kii

У меня глупый вопрос на вопрос, а зачем столько открывать? Как пользователь сможет этим воспользоваться? Неужели он сможет все это обозреть?
Автор: wasilissk
Дата сообщения: 05.10.2011 11:07
kii
В GridMode хоть сикстиллион.
Автор: imanagadze
Дата сообщения: 05.10.2011 12:55
У меня вопрос, как скрыть в Win проекте главное меню? поискав в гугле нашел:

Код:
public partial class MyToolBarController : WindowController
{
public MyToolBarController()
{
InitializeComponent();
RegisterActions(components);
}

protected override void OnActivated()
{
base.OnActivated();
Window.TemplateChanged += new EventHandler(Window_TemplateChanged);
Window.ViewChanged += new EventHandler<ViewChangedEventArgs>(Window_ViewChanged);
}

void Window_TemplateChanged(object sender, EventArgs e)
{
UpdateToolBarVisibility();
}

private void UpdateToolBarVisibility()
{
XtraFormTemplateBase template = Window.Template as XtraFormTemplateBase;
if (template == null)
return;
foreach (DevExpress.XtraBars.Bar item in template.BarManager.Bars)
{
if (item.BarName != "Main Toolbar")
item.Visible = false;
}
}

void Window_ViewChanged(object sender, ViewChangedEventArgs e)
{
UpdateToolBarVisibility();
}
}
Автор: sergbt
Дата сообщения: 07.10.2011 01:19
Господа, при попытке зайти на девовское комьюнити выдает рантайм еррор, это только у меня?
Автор: X11
Дата сообщения: 07.10.2011 01:23
Наверное да, т.е. у меня ссылка http://community.devexpress.com/forums/ работает.
Автор: sergbt
Дата сообщения: 07.10.2011 07:47
Спасибо!
Они, по каким-то причинам, не любят Макстон.
Хотя ввезде на сайте всё открывается.
Автор: kii
Дата сообщения: 07.10.2011 10:45
fitget
Подготовка пользователей 0 (нулевая), но поледовательно фильтровать
они умеют, отсюда такое количество записей.
wasilissk
Я сам понимаю, что ограничение может быть только свободной памятью и скоростью доступа к серверу.
но почему виснет комп???
Автор: wasilissk
Дата сообщения: 07.10.2011 12:50
kii
fitget намекает на серверную фильтрацию. Зачем на клиента тащить такое количество записей? А я на то, что если уж тащишь на клиента, то не обязательно их все сразу фетчить. GridMode пробовал?
Автор: BlackVetal
Дата сообщения: 07.10.2011 13:49
kii

Цитата:
но поледовательно фильтровать
они умеют

так тем более - зачем тебе все тянуть? пусть пользователь выставит какой-нить фильтр - а потом по этому фильтру и тянуть данные с сервера.

Цитата:
но почему виснет комп???

ты смотрел как используются ресурсы тачки при твоей выборке?
Автор: fitget
Дата сообщения: 10.10.2011 11:10
kii

Изначально подход вытащить все из базы а потом... А потом ничего не будет. Пользователю все равно понадобится как-то отобрать необходимый минимальный набор данных, с которым он в принципе сможет работать. Чем поедать ресурсы компьютера, лучше сразу дать ему возможность ограничиться минимумом. Чем больше выборка, тем медленнее грид будет своими средствами отфильтровывать данные. И эти тормоза будут очень раздражать пользователей.
Автор: maratea
Дата сообщения: 12.10.2011 13:05
Спасибо за ответ. Однако то, что мне нужно, описывается в связи с событием OnSummary.
В моем же случае, как я поняла, существует только событие OnAfterSummary:

,
а OnSummary существуют для DefaultGroupSummary и FooterSummary. Или это не так?


Пыталась другими способами решить задачу. Например, перебирать значения через TADOQuery - учитывать те значения поля Value, которым соответствует определенное значение поля, по которому осуществляется группировка. Это можно было бы сделать, к примеру, через событие OnCustomDrawGroupCell. Но тут я не могу понять, как же мне получить это группируемое значение =( В общем, пока что-то не получается у меня никак =(
Автор: X11
Дата сообщения: 13.10.2011 12:31
Кто-нибудь пробовал загрузить в dxMemData несколько тысяч строк (записей)? Валится с ошибкой Out of memory Хотя памяти вроде бы хватает.

cxGrid прекрасно и легко справляется без привязки в датасету с тем же количеством строк.
А вот dxMemData не хочет

Просто приложение маленькое, нет смысла текстовый файл грузить в базу, а потом в грид.
Автор: exteris
Дата сообщения: 14.10.2011 07:45
Грузил когда-то порядка 20000 строк, все работало. Гиг оперативы, версию Девов не помню.
Автор: AlexCoRu
Дата сообщения: 14.10.2011 08:34
X11, были проблемы dxMemData поэтому использовал ClientDataSet. Самым медленным по загрузке и доступу получился вариант с dxMemData, чуть быстрее ClientDataSet, самый быстрый загрузка в cxGrid и 1200000 записей из текстовых файлов (1 файл - 1 день, за 3 года) грузил запросто.
Размер записи у тебя какой?
Автор: X11
Дата сообщения: 14.10.2011 09:07
Там не просто текстовые файлы, там около 12 полей разного типа. Есть три больших поля, текстовых, но заполняется только одно как правило. Там тексты объявлений, примерно по 100-500 символов.

Добавлено:
Использую tcxBarEditItem, где свойство properies = DateEdit.

Пользователь выбрал новую дату и время, я в событии properies.OnChange получаю значение, что то типа:
A := dtDpp.EditValue;

Но EditValue содержит старой значение, до выбора пользователя.
Свойства EditingValue я не нашёл.
Свойство ImmediatePost установлен в TRUE. Это баг или так задумано?
Автор: Czechoslovak
Дата сообщения: 14.10.2011 10:47
maratea

Примерно так, на пример: Заводим 3 FooterSummaryItem для нужного поля
1-ое Min, 2-ое Max, 3-е Count (Можно поставить None, но тогда формат не будет цепляться)

в событие OnAfterSummary

прописывам

Код:
ASender.FooterSummaryValues[3] := ASender.FooterSummaryValues[2]-ASender.FooterSummaryValues[1];
Автор: X11
Дата сообщения: 17.10.2011 13:28
Подскажите, как правильно программно отфильтровать по условиям ИЛИ + И

Вот мой код:


Код: try
Grid2.DataController.Filter.BeginUpdate;
with Grid2.DataController.Filter.Root do
begin
Clear;
if (Edit1.Text <> '') and (Edit1.Text <> sConstSearchStreet) then
begin
AddItem(grid2street_name, foLike, '%' + Trim(Edit1.Text) + '%', Edit1.Text);
BoolOperatorKind := fboOr;
AddItem(grid2Text, foLike, '%' + Trim(Edit1.Text) + '%', Edit1.Text);
end;

if (Edit2.Text <> '') and (Edit2.Text <> sConstSearchPrice) then
AddItem(grid2price, foLessEqual, Trim(Edit2.Text), Edit2.Text);
end;// with

Grid2.DataController.Filter.Active := true;
finally
Grid2.DataController.Filter.EndUpdate;
end;
Автор: GeXamin
Дата сообщения: 19.10.2011 14:40
Подскажите по cxDateNavigator. Я подсовываую ini-файл в cxLocalizer, все локализируется кроме него - я так понимаю он завязан на региональные настройки системы. Как его вымучить. Спс.
Автор: X11
Дата сообщения: 19.10.2011 15:11
Есть cxGridTableView, который не привязан к НД.
В нём есть колонка типа PopupEdit.
Пользователь выбирает значение из дерева и нажимает кнопку ОК, при этом PopupEdit с деревом закрываются.


Как и куда правильно в этом случае записать значение выбраной ноды?


Ведь текстовое значение ноды должно записаться непосредственно в колонку, чтобы пользователь видел свой выбор.
А для (KeyValue) TcxDBTreeListNode(FocusedNode).KeyValue как быть? Записывать в скрытую колонку или в глобальную переменную?
В итоге cxGridTableView будет сохранёт в базу данных.

В общем, как правильно подружить cxGridTableView с колонкой PopupEdit, в которую встроен cxDBTreeList?
Автор: linker_2009
Дата сообщения: 19.10.2011 15:28
В колонку записываешь id noda.
На OnGetDisplayText подсовывешь текст из тескта нода по сохраненому ID.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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