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

» Использование DevExpress

Автор: OXDBA
Дата сообщения: 01.02.2006 15:59
fr00m
Спасибо, сейчас попробую.
Автор: kii
Дата сообщения: 02.02.2006 09:19
Arjuna
Был когдато Infopower лучший, но сейчас только DevExpress. Таких возможностей больше нигде НЕТ!
Автор: ImHunter
Дата сообщения: 02.02.2006 10:11
OXDBA

лучше использовать ImageComboBox, т.к. у ComboBox по-нормальному не определить ItemIndex
Автор: OXDBA
Дата сообщения: 02.02.2006 11:24
ImHunter
Для решения моей задачи ComboBox'а достаточно, уже проверил(спасибо fr00m)

Теперь возникла другая проблема - вытащить список уникальных значений столбца и заполнить ими Items.
По демкам нашел событие
onGetFilterValues(Sender: TcxCustomGridTableItem; AValueList: TcxDataFilterValueList);
значения находятся в AValueList.ItemsList.
Все хорошо, но это значения одного столбца!
А мудрые юзера используя мастер фильтов и волшебную кнопочку "Добавить новое условие" дополнительно указывают другой столбец для которого onGetFilterValues не
возникало и соответственно Items пустое.
Сейчас ковыряю исходники в поисках другого пути, но если Уважаемый All знает
решение буду очень благодарен!


Автор: fr00m
Дата сообщения: 02.02.2006 17:13
Arjuna
Если супер-возможности как в DevEx не нужны, можно попробовать EhLib. Легкий, быстрый, выглядит хорошо, умеет сортировать... 3-я версия бесплатна.
http://www.farpost.com/personal/dmitryb/RUS/

Добавлено:
OXDBA

onGetFilterValues(Sender: TcxCustomGridTableItem; AValueList: TcxDataFilterValueList);

if Sender.Index=MyColumn.Index then
... заполняем для колонки MyColumn
else
... заполняем для других колонок
Автор: GENEMI
Дата сообщения: 03.02.2006 20:36
Объясните принцип и технологию использования TcxVirtualTreeList из
ExpressQuantumTreeList.

Читал приложенную документацию но она бедна по этой теме

Или как вы научились его использовать?
Автор: korobovmax
Дата сообщения: 03.02.2006 21:02
GENEMI, TcxVirtualTreeList отличается от TcxDBVirtualTreeList только поставщиком данных.
Прочитайте справку в разделе "ExpressQuantumTreeList4->Task Based Help->Using Virtual cxTreeList" и, соответственно, посмотрите демку ProviderModeDemo.
Автор: korobovmax
Дата сообщения: 04.02.2006 10:30
Есть тоже вопрос по дереву (TcxDBVirtualTreeList). Оно, естественно, не умеет хранить "развёрнутость" своих нодов. Следовательно, надо хранить в таблице.

А вот в каком событии можно одновременно получить очередной нод и запись в таблице, чтобы "загрузить" "развёрнутость"?
Автор: Arjuna
Дата сообщения: 04.02.2006 14:48
Поставил я DevExpress...
Класная вешь!!!
Спасибо вам за совет, наврядле что-то лучше можно найти...

Только теперь разобраться с ним немогу.

Помогите пожалуйста чайнику настроить ADO и DevExpress...
База данных на Access, поключаюсь через ADOConnection

Проблема в следющем:
Если в ADOTable курсор ставлю ctStatic, то при добавлении новой записи ключевое поле (со счетчиком) в новой записи равен 0. И при попытки ее еще раз редактировать, пишет что запись уже изменена другим пользователем. Тоесть, редактировать недает.

Если в ADOTable курсор ставлю ctKeyset, другая проблема. Номер ключевого поля обновляет нормально... Но если другой пользователь удаляет какую-то запись из таблицы, то при попадании на это поле, выскакивает диалоговое окно - "Запись удалена!". И немогу потом перейти ни накокое поле. Все время пишет "Запись удалена".

Может поможете советом как нужно настроить ADO и DevExpress?
Задача в следующем:
База данных на Access в сети. Нужно нормальное клиентское подключение для редактирования. Желательно, что бы было видно изменения сделанные другим пользователем. Ну и желательно, чтобы не сильно томрмозило.

Да... И еще вопросик...
15000 записей в DevExpress Гриде нормально или для него тяжело? У меня 2 сек задержка при переходе с записи на запись... Просто мышкой ткну на поле, а он думает прежде чем перейти... Может я что-то не то делаю?

Заранее благодарен!
Автор: korobovmax
Дата сообщения: 04.02.2006 14:58
Arjuna, насчёт скорости работы почитайте разделы справки, описывающие свойства SmartLoad/SmartRefresh (второе вам должно быть особенно интересно, ведь "The SmartRefresh feature is effective if the dataset’s size exceeds 1000 records. Otherwise, you should disable it.").
Автор: Arjuna
Дата сообщения: 04.02.2006 21:03
Спасибо, korobovmax!

SmartRefresh - помог. После изменения записи он обновляет не всю таблицу, а только одну запись. Конечно, тогда не видно изменения сделанные другими пользователями в других строках, но зато не тормозит.

С подключением к базе тоже вроде разобрался. Наверное я просто где-то, какое-то свойство непарвильно задал (скорей всего в гриде), что у меня до этого глючило. Решил не искать, что неправильно сделал, а заново создал форму и компаненты со значениями по умолчанию - и все заработало нормально!
Автор: korobovmax
Дата сообщения: 04.02.2006 23:36
Старый вопрос плюс два новых:
1. Есть тоже вопрос по дереву (TcxDBVirtualTreeList). Оно, естественно, не умеет хранить "развёрнутость" своих нодов. Следовательно, надо хранить в таблице.
А вот в каком событии можно одновременно получить очередной нод и запись в таблице, чтобы "загрузить" "развёрнутость"?
2. TcxDBVirtualTreeList вполне сносно работает в Drag-and-Drop-режиме dmAutomatic, за исключением одного - мне надо запретить драгить некоторые ноды. Как это сделать.
3. Есть 2 таблицы (Master-Detail), к первой привязано дерево(TcxDBVirtualTreeList), ко второй грид(TcxGridDBTableView). Практически всё получается, но вот только ода задачка - когда перенеситься запись из одного раздела в другой, в моём варианте просто создаётся копия перетаскиваемой записи. Но тогда встаёт естественый вопрос - а как удалять ту запись, которая осталась до перетаскивания? Просто узнать её ID и руками удалить не получится, ведь у первой таблице (которая Master, и к которой, что важно, привязано дерево) изменится текущий "раздел", а значит все записи Detail-таблицы вне этого раздела будут недоступны. Вот в чём вопрос.

Добавлено:
Второй вопрос решён
Автор: fr00m
Дата сообщения: 06.02.2006 10:55
korobovmax
На 1: В нужном месте делаешь обход всего дерева и сохраняешь свойство expanded у ноды:

Var n: TcxTreeListNode;
begin
n := Tree.TopNode;
while Assigned(n) do
begin
// Сохраняем n.Expanded. Видимо, понадобится ID записи, который тоже можно вытянуть из n
n := Tree.GetNext;
end;
end;
Автор: Adp
Дата сообщения: 07.02.2006 14:34
На http://www.devexpress.com/Support/BestPractices/.NET/Localization/ в параграфе Creating Satellite Resource Assemblies есть такая фраза

Цитата:
you can freely download them here. The download includes resources translated to the following languages:
Chinese, Czech, Danish, Dutch, French, German, Italian, Japanese, Norwegian, Portuguese, Russian, Slovenian, Spanish, Vietnamese.


Что то я никак не найду где этот here, с которого можно скачать.

Кто нибудь знает где можно скачать руссифицированные Assemblie для devexpress .net 2005?
Или скажите как вы руссифицируете девэкспресс. Ручками править ресурсы неохота, наверняка это уже проделано 100 раз.
Автор: korobovmax
Дата сообщения: 07.02.2006 17:03
fr00m, большое спасибо. Я на все три вопроса нашёл ответы. И тут же появился новый вопрос

Можно ли столбцы Грида с Properties = "TextEdit" или что угодно, лиж бы не "Memo" (и "RichEdit" ), научить не врапить слова (wordwrap)?
Нет никакого желания изменять Properties у всех текстовых полей на "Memo" из-за такой мелочи
Автор: gpi
Дата сообщения: 07.02.2006 18:12
korobovmax
Попробуй cxGrid1DBTableView1.OptionsView.CellAutoHeight=False
Автор: korobovmax
Дата сообщения: 07.02.2006 18:38
Ах, ну, конечно! Как я мог быть так глуп?!

gpi, прелесть! Оно самое!

----------

Да... С ру-бордом не пропадёшь.

Добавлено:
Если кому интересно, я сейчас решил задачку:
В панельки фильтра по-умолчанию даже если мы переводили строки cxFilterConsts.pas, в независимости от перевода, условия, которые нельзя отобразить знаками, пишутся на английском (LIKE, OR и т.д.). Как это исправить и писать условия на русском? DevExpress'овцы подумали о нас
После небольших напрягов выяснилось, что достаточно включить опцию фильтра fcoShowOperatorDescription (GridView.DataController.Filter.Options := GridView.DataController.Filter.Options + [fcoShowOperatorDescription]) и тогда в панельки фильтра будут писаться условия из констант, определённых в cxFilterConsts.pas, а не из нижеприведённой функции и ей подобных:
function TcxFilterLikeOperator.FilterText: string;
begin
Result := 'LIKE';
end;

Автор: kii
Дата сообщения: 10.02.2006 13:28
Привет Всем!
Это проблема моя или глюк DevEx...
в cxGrid1DBBandedTableView с источником dxMemData, при фильтрации по полю с CheckBox , если Сhecked - true -- все нормально, а фильтрация по Сhecked - false
-- выводит продублированные записи (вместо 1 -2 , вместо 5 - 10 и т.д.)
QGrid 5.12 или 5.13 - одинаково.
Автор: GENEMI
Дата сообщения: 11.02.2006 02:41
Как сделать чтобы TcxTreeList подстраивался под поля?

т.е. нужно чтобы TcxTreeList скрывал свой background (чтобы отображались только поля).

т.е. чтобы высота TcxTreeList была равна высоте всех его полей

т.е. нужно чтобы не занятая область просто отрезалась.

т.е. когда в Run-Time в TcxTreeList добавляется новое поле то чтобы размеры TcxTreeList подстраивались под высоту и ширину всех узлов.

Т.е. нужно чтобы никогда не было видно пустоты в TcxTreeList - а видны были только узлы т.е. поля.

Как это можно сделать?


- Это как TcxTreeListOptionsView.ColumnAutoWidth - только наоборот.
Автор: SuperBtr
Дата сообщения: 12.02.2006 20:25

Цитата:
Если кому интересно, я сейчас решил задачку:
В панельки фильтра по-умолчанию даже если мы переводили строки cxFilterConsts.pas, в независимости от перевода, условия, которые нельзя отобразить знаками, пишутся на английском (LIKE, OR и т.д.). Как это исправить и писать условия на русском?

а также
Цитата:
Что то я никак не найду где этот here, с которого можно скачать.

в принципе решаеться очень просто, т.е. сделать туже русификацию, не знаю как у вас а у меня Експресс скачан с исходниками, для русификации Грида и Принтинг система надо изменить файлы cxEditConsts.pas cxFilterConsts.pas cxGridStrs.pas dxPSRes.pas, и потом перекомпилировать бпл-ки в которых они используються.

Зато хочеться задать ламерский вопрос, как можно cxDBTreeList экспортировать в Excel, и пердусмотренно ли это?
Автор: korobovmax
Дата сообщения: 12.02.2006 20:49
SuperBtr, насчёт моего вопроса: ваш вариант широко известен и врятли кто-то делает по-другому. Однако вы не поняли сути вопроса - перечитайте рядом с "даже если мы переводили строки cxFilterConsts.pas".
О вопросе Adp почитайте рядом с "Ручками править ресурсы неохота".

Наконец, насчёт вашего вопроса: это предусмотрено, содержимое cxDBTreeList можно экспортировать в Excel. В файле (у вас же есть исходники ) cxExportTL4Link.pas определена процедура cxExportTL4ToExcel - используйте её и хелп.
Автор: SuperBtr
Дата сообщения: 12.02.2006 21:00
korobovmax
Полностью с вами согласен, ЗАТУПИЛ
Сам конечно искал как это перевести смотрел http://www.devexpress.com/Support/BestPractices/.NET/Localization/

here - тоже не нашел , было бы проще еслиб работал поиск, а так перечитать весь форум не располагаю временем, увы, хотя форум интересный, вот подписался буду за ним теперь следить

За подсказку на счет Экспорта СПАСИБО!
Автор: DeepTown
Дата сообщения: 13.02.2006 01:47
Adp
А вариант перевода констант без правки сурсов в cxEditConsts.pas не подойдет?
Переопределять прямо в тексте. Може это и не сказывается положительно на размере exe'файла, но я перевожу например только то что мне нужно...

cxSetResourceString(&_cxSDatePopupClear,"Очистить"); // "Clear"
cxSetResourceString(&_cxSDatePopupToday,"Сегодня"); // "Today"
cxSetResourceString(&_cxSDateError,"Неверная дата"); // "Invalid Date"
...

это касательно VCL, как в .NET не знаю, може также?
Автор: VoodooSV
Дата сообщения: 14.02.2006 13:04
Можно ли как-то узнать в QuantumGrid'е текстовое значение столбца, по которому я группировал, если выделена одна из строк данных грида (не строка группировки). Причем столбец по которому я групирую яаляется ExtLookupComboBox, т.е. на самом деле в столбце по ID подставляется текстовое значение столбца из другой вьюшки.

Заранее спасибо, если кто-нибудь откликнется!
Автор: xokc
Дата сообщения: 14.02.2006 18:50
VoodooSV
Ну, например так (GroupCol - имя колонки по которой производится группировка):
procedure TForm8.Button1Click(Sender: TObject);
begin
Caption := GroupCol.DataBinding.Field.Value;
end;

Автор: VoodooSV
Дата сообщения: 15.02.2006 08:39
xokc
С помощью GroupCol.DataBinding.Field.Value я получаю значение поля БД, а мне нужно получить тестовое значение, которое отображается в этом столбце при условии, что этот столбец ExtLookupComboBox, т.е. фактически отображается Lookup-значение поля из другой вьюшки
Автор: Alex47
Дата сообщения: 15.02.2006 10:11
VoodooSV

Попробуйте так:

var
Column: TcxGridDBColumn;
ColumnIndex: Integer;
RecordIndex: Integer;
Text: String;

begin
.....
Column := TcxGridDBTableView(cxGrid1.FocusedView).
GetColumnByFieldName('ИмяВашегоПоля');
ColumnIndex := Column.Index;
RecordIndex := TcxGridDBTableView(cxGrid1.FocusedView).
DataController.FocusedRecordIndex;
Text := TcxGridDBTableView(cxGrid1.FocusedView).DataController.
GetDisplayText (RecordIndex,ColumnIndex);
......
Автор: VoodooSV
Дата сообщения: 15.02.2006 10:44
Alex47
Супер!!!
Огромное тебе спасибо, уже не впервый раз выручаешь!!!


Автор: powertodead
Дата сообщения: 15.02.2006 14:13
Подксажите, как в QuantumGrid'е в колонке получить значение суммы двух других колонок для каждой записи соответтсвенно (сами эти колонки являются LookupComboBox'ами). Что-то наполобии Calulated поля в DataSet'e
Автор: xokc
Дата сообщения: 15.02.2006 18:29
powertodead
1. Добавить нужную колонку, не связанную с полями в БД
2. Добавить обработчик OnGetDisplayText

procedure TForm8.CalcColGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AText: string);
begin
AText := ARecord.Values[Col1.Index] + ARecord.Values[Col2.Index];
end;

где Col1 и Col2 - имена суммируемых колонок

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Kylix


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