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

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

Автор: dred2k
Дата сообщения: 28.09.2014 21:02
Vadim153
Как такового - нет.
Есть TcxButtonEdit (закладка Express Editors).
Сменить картинку + TOpenDialog + пару строк = и будет так же.
Автор: Vadim153
Дата сообщения: 28.09.2014 21:50
dred2k

Спасибо.
ButtonEdit видел и планировал как резервный вариант.
Вообще странно, что такая старая фича в DevExpress не реализована.
Автор: Calp
Дата сообщения: 06.10.2014 10:29
А их TcxShellComboBox не подойдет? И иконку со стрелкой можно заменить.
Автор: Shepot
Дата сообщения: 06.10.2014 12:38
Так есть же более продвинутая фишка, TdxBreadcrumbEdit.
Автор: russko
Дата сообщения: 10.10.2014 09:14
Доброго времени суток!
У cxGrid'а есть замечательная фишка, называемая FilterRow, но данная фильтрация работает только по точному совпадению. Можно конечно ставить знаки процента в начале и конце искомой строки...но пользователей очень трудно научить этому. Можно ли сделать так, чтобы фильтрация в данной строке работала сразу по частичному совпадению?
Автор: dimm78
Дата сообщения: 10.10.2014 09:56

Цитата:
russko

Я добавляю проценты автоматом на событии <View>.Filter.OnChanged


Код:
function AddPercents(ItemList: TcxFilterCriteriaItemList): string;
var
i: integer;
lItem: TcxFilterCriteriaItem;
s: string;
begin
for i := 0 to ItemList.Count - 1 do
begin
if ItemList.Items[i].IsItemList then
AddPercents(ItemList.Items[i] as TcxFilterCriteriaItemList)
else
begin
lItem := ItemList[i] as TcxFilterCriteriaItem;
if lItem.OperatorKind = foEqual then
begin
if lItem.ItemLink is TcxGridColumn then
begin
if TcxGridColumn(lItem.ItemLink).DataBinding.ValueTypeClass = TcxStringValueType then
lItem.OperatorKind := foLike;
end;
end;
if lItem.OperatorKind in [foLike, foNotLike] then
begin
s := Trim(VarToStr(lItem.Value));
if Length(s) > 0 then
begin
if s[1] <> '%' then s := '%' + s;
if s[Length(s)] <> '%' then s := s + '%';
end;
lItem.Value := s;
lItem.DisplayValue := s;
end;
end;
end;
end;
Автор: russko
Дата сообщения: 10.10.2014 10:05

Цитата:
dimm78

спасибо огромное...была такая мысль, но думал штатный механизм где-то спрятан ))
Автор: mcdie
Дата сообщения: 10.10.2014 11:11
Здравствуйте,
есть ли возможность в гриде задания группировки двух и более полей на одном уровне группировки и как это возможно сделать (без создания дополнительных объединяющих полей)?
Автор: dimm78
Дата сообщения: 10.10.2014 12:01

Цитата:
mcdie


Если имеется ввиду только то, чтобы заголовки группируемых колонок располагались на одном уровне в GroupBox, то нужно выставить

<View>.OptionsView.GroupByHeaderLayout := ghlHorizontal

Если же необходимо чтобы группировка происходила по связке двух полей, то мне видится только один вариант. Задать обработчик <View>.DataController.OnCompare и при обработке сравнения одной колонки использовать дополнительно значение другой колонки, получив таким образом кастомную сортировку первой колонки. Если по этой колонке добавить группировку, то группы будут создаваться с учетом сортировки, т.е. будут использовать значение второй колонки. Надеюсь понятно изложил))) в любом случае это изврат))) гораздо проще добавить в датасет вычисляемое поле и группировать по нему)))
Автор: svs123456789
Дата сообщения: 10.10.2014 13:00
при попытке применить встроенную фильтрацию в Tcx Grid
получаю рантайм ошибку "Filter property cannot be used for detail tables"

(и да у меня 2 датасета связанные мастр-детайл)
Автор: mcdie
Дата сообщения: 13.10.2014 15:43
dimm78
спасибо, ответ немного помог, хотя <View>.DataController.OnCompare для сортировки полей нужна, а не группировки.
Автор: dimm78
Дата сообщения: 13.10.2014 15:52
mcdie

Ну так для того чтобы сгруппировать данные датаконтроллеру нужно сначала их отсортировать. А в этом случае нам и понадобится событие <View>.DataController.OnCompare.

Вот даже пример нашел на офф. сайте
_https://www.devexpress.com/Support/Center/Question/Details/Q555818
Автор: mcdie
Дата сообщения: 14.10.2014 08:54
dimm78
да, я группировал 2 поля, сделал как надо по сортировке в <View>.DataController.OnCompare
но какая бы сортировка не была это не убирает 2й уровень группировки, а мне нужна обьединяющая.

Поэтому я создал динамически колонку в которой событием ColumnGetDataText объединил значения нескольких полей и сгруппировал но новой колонке, предварительно запомнив список старой группировки. Переключателем сделал возможность вернуться в старый режим.
Автор: Vadim153
Дата сообщения: 19.10.2014 19:54
Добрый день!

Есть у кого демо-пример от DevExpress Master-detail?
Юзаю такую связку из трех таблиц.
Во второй (дитейл) таблице выбираю одно из полей как LookupComboBox, чтобы подключить третью таблицу и из выпадающего списка выбирать значения третьего дитейла.
Беда в том, что список этих значений комбобокс показывает, но при свертывании, в ячейке пусто.
В хелпе видел картинки, там все красиво работает.
Нужен рабочий демо-пример.
Автор: Maniacosaur
Дата сообщения: 21.10.2014 11:29
Это только у меня косяк в версии 2014.1.4 с локализатором или кто-то еще сталкивался?
См. картинки. Файл локализации проверял -- там все нормально написано. Пробовал и на XE6 и на XE7.






Добавлено:
Решилось вроде. Сохранил файл локализации в юникоде и все стало нормально. Вдруг кому пригодится
Автор: russko
Дата сообщения: 22.10.2014 08:32

Цитата:

Доброго времени суток.
Образовалась проблемка - не работает скролл (прокрутка колесом мыши) абсолютно во всех гридах...голову уже сломал куда копать ( спасибо
Версия Девок - DevExpress VCL v2012 vol 1.6.


Вопрос снимаю...нашел проблему.
Автор: mcdie
Дата сообщения: 22.10.2014 16:48
russko
Цитата:
У cxGrid'а есть замечательная фишка, называемая FilterRow, но данная фильтрация работает только по точному совпадению. Можно конечно ставить знаки процента в начале и конце искомой строки...но пользователей очень трудно научить этому. Можно ли сделать так, чтобы фильтрация в данной строке работала сразу по частичному совпадению?
кстати у меня в версии 2012.1.6 строки выбирает через FilterRow как раз по частичному совпадению без какого либо кода. Только: <View>.FilterRow.ApplyChanges := fracImmediately;

Автор: ChSerg
Дата сообщения: 22.10.2014 23:42
В розыске компонент типа TdxRibbonBackstageView, только не привязанный к риббону.
Боковые закладки настраиваемые, кнопочки чтобы можно было ниже/выше закладок добавлять.
С треугольничками от поля закладки к язычку.
Если кто видел такое, киньте ссылку.
Автор: Vadim153
Дата сообщения: 23.10.2014 00:49
Как можно организовать поиск по полям cxGrid/cxDBGrid?
В EhLib, например, Ctrl+F и выпадает специальное окно поиска.
Как поиск в DevExpress организован?
Автор: mcdie
Дата сообщения: 23.10.2014 08:28
Vadim153
Есть так называемый инкрементный поиск IncSearch поиск по колонке с подсветкой по начальным символам.
<View>.OptionsBehavior.IncSearch := true;
<View>.OptionsBehavior.IncSearchItem := <Column>;

Но более удобно использовать внутреннюю фильтрацию через
<View>.FilterRow.Visible := true;
<View>.FilterRow.ApplyChanges := fracImmediately; - фильтрация применяется после ввода каждого символа.
аналогично тут показано:

Автор: russko
Дата сообщения: 23.10.2014 13:39
Доброго времени суток!
Есть ли возможность зафиксировать ширину самого cxGrid'а.
Спрашиваю потому, что в доставшейся мне программе есть косяк - при изменении размера окна самого приложения cxGrid ширину не меняет (хотя стоит alClient), а появляется бирюзовое поле (компонент TPanel)...не хорошо )

Автор: mcdie
Дата сообщения: 23.10.2014 14:23
russko
Возможно панель на которой находится cxGrid нужно поставить alClient? Более подробно можно описать Object TreeView (что на чем лежит)?
Автор: russko
Дата сообщения: 23.10.2014 15:26
mcdie
Панель, на которой находится грид, стоит alTop c Anchors влево,вверх,вправо.
Дерево также не сложное: Форма -> GroupBox -> Panel -> cxGrid. Все, кроме панели, стоит в alClient.
Причем панель меняет размеры в зависимости от окна приложения нормально. Это видно по бирюзовому цвету (цвет панели), а вот сам грид ну никак не "подтягивается" за панелью. Косяк?
Автор: mcdie
Дата сообщения: 23.10.2014 16:26
russko
В коде программы cxGrid.Align не меняется?
Кстати тоже самое происходит когда cxGrid.Anchors.akRight = false и cxGrid.Align = alCustom;
Из среды разработки всё нормально отображает?
Автор: Vadim153
Дата сообщения: 23.10.2014 19:09

Цитата:
Vadim153
Есть так называемый инкрементный поиск IncSearch поиск по колонке с подсветкой по начальным символам. <View>.OptionsBehavior.IncSearch := true;
<View>.OptionsBehavior.IncSearchItem := <Column>;
Но более удобно использовать внутреннюю фильтрацию через
<View>.FilterRow.Visible := true;
<View>.FilterRow.ApplyChanges := fracImmediately; - фильтрация применяется после ввода каждого символа.


Спасибо за подсказку!
А поиск по всем полям таблицы есть?

Автор: russko
Дата сообщения: 24.10.2014 07:07
mcdie

Цитата:
В коде программы cxGrid.Align не меняется?

Нет, нигде следов не нашел.


Цитата:
Из среды разработки всё нормально отображает?

В самой среде разработки присутствует тот же косяк, что наталкивает на мысль о проблемах в самих компонентах. Похоже придется заново полностью форму "пересобрать" потому как в других местах все работает нормально (
Автор: mcdie
Дата сообщения: 24.10.2014 08:10
Vadim153
да, по всем полям можно.

russko
Тогда, скорее всего, на форме в каком то из компонентов установлено не то свойство. Придется пересобирать или искать в файле формы в текстовом виде ошибку.
Автор: Vadim153
Дата сообщения: 24.10.2014 13:04
Назначаю одно из полей в cxGrid-е как ButtonEdit.
Мне необходима кнопка в ячейке для запуска нового окна.
В самой ячейке должны отображаться данные в денежном формате, например: 100.00р.
Решить этот вопрос, как я понимаю, можно только используя свойство EditMask.
Не могу нигде найти маску денежного формата для ButtonEdit.
Help, pls!
Автор: mcdie
Дата сообщения: 24.10.2014 13:35
Vadim153
какую версию используешь? свойство EditMask присутствует и в классе TcxButtonEditProperties.
Автор: Vadim153
Дата сообщения: 25.10.2014 09:40

Цитата:
Vadim153 какую версию используешь? свойство EditMask присутствует и в классе TcxButtonEditProperties.


DevExpress 13.1.4

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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