powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress обработать DisplayText в комбиках грида
9 сообщений из 9, страница 1 из 1
DevExpress обработать DisplayText в комбиках грида
    #39525650
Всем привет!

Такой вопрос по DevExpress.

Есть грид, где в properties привязаны комбики со своими запросами, которые возвращают код и наименование.
Есть необходимость использовать маску кода (00.00), тогда как запрос даёт (0000), но куда её прикрутить никак не дойду!

Где у комбика этого можно DisplayText менять?

На фильтрах делаю так:
Код: pascal
1.
2.
3.
4.
5.
procedure TFEOMainForm.ColumnKFSRGetFilterDisplayText(Sender: TcxCustomGridTableItem; const AValue: Variant; var ADisplayText: string);
begin
  if (pos('(', ADisplayText) = 0) then
    ADisplayText := FormatKFSR(ADisplayText);
end;



Скрин, если непонятно излагаю мысли:
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525689
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Что мешает сразу написать запрос с нужным выводом?
2. Какой формат поля?
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525695
wadman,
1. Во-первых, запросы стандартные, если менять, то где-то поломает.
Во-вторых, это просто случай простой, точка всегда третий символ, а есть коды где по 7 этих точек в зависимости от заполнения и
обрабатывать их на базе средствами sql калично и долго.
В-третьих, уже все обработчики готовы в Delphi.

2. Строка (текст).
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525702
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точку можно подставлять:
1. Самое простое -- сделать AutoCalc поле в датасете, куда на OnCalc пишется в нужном формате и именно оно выводится в гриде;
2. На DisplayData (или типа того события) плюс FilterData колонок править текст вставлять эту точку.
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525723
JaDi,
1. Спасибо, понятно, просто у меня в датасетах нет филдов, DevExpress и так их цепляет. И вообще, мне кажется, на OnCalc часто подвисает, хотя может я не прав.

2. Не совсем понятно. У столбца есть OnGetDataText, который НЕ срабатывает при открытии комбика.
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525739
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хозяин русского леса,

OnGetDataText -- "прямой" доступ к данным. После изменения в этом событии поменяются данные и во всех остальных (в т.ч. в фильтре).

OnGetDisplayText -- меняется только текст для отрисовки в гриде. Реальные данные остаются не тронутыми, в т.ч. в фильтре. Для изменения отображения в фильтре надо вызвать отдельное соьытие OnGetFilterText (или т.п.).

Под фильтром я имею ввиду выпадающий список значений с галочками при клике на угол заголовка. С полем встроенного инкрементального поиска я не работал -- может там что-то особенное с ним есть.
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525820
JaDi,
рассказываю как получается на DevExpress 16.1:

OnGetDataText я вставил код:

Код: pascal
1.
2.
3.
4.
5.
procedure TFEOMainForm.cxGrid4DBTableView1ID_KFSRGetDataText(
  Sender: TcxCustomGridTableItem; ARecordIndex: Integer; var AText: string);
begin
  AText := FormatKFSR(AText);
end;



Остальное закомментил:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TFEOMainForm.cxGrid4DBTableView1ID_KFSRGetDisplayText(
  Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
  var AText: string);
begin
  //AText := FormatKFSR(AText)
end;
//-------------------------------------------------------------------------------------------------
procedure TFEOMainForm.ColumnKFSRGetFilterDisplayText(Sender: TcxCustomGridTableItem; const AValue: Variant; var ADisplayText: string);
begin
  if (pos('(', ADisplayText) = 0) then
    //ADisplayText := FormatKFSR(ADisplayText);
end;



На выходе фильтра выводятся корректно, а ячейки грида, включая выпадающие списки, - нет.
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525850
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хозяин русского леса,

Очень странно... возможно, глючная версия девок или все же какой-то еще код стоит? На 14 версии всё ок -- везде отображается измененный в GetData текст, кроме самого процесса редактирования:
Код: pascal
1.
2.
3.
4.
5.
procedure TForm100.cxGrid1DBTableView1nameGetDataText(Sender: TcxCustomGridTableItem; ARecordIndex: Integer;
  var AText: string);
begin
  AText := AText + ' plus text';
end;
...
Рейтинг: 0 / 0
DevExpress обработать DisplayText в комбиках грида
    #39525862
JaDi,
да, странно, возможно в версии 16.1 что-то поменяли.

Но я уже кое-как разобрался и сделал так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
//ячейки грида
procedure TFEOMainForm.cxGrid4DBTableView1ID_KFSRGetDisplayText(
  Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
  var AText: string);
begin
  AText := FormatKFSR(AText)
end;
----------------------------------------------------------------------------------
//выпадающий список фильтра
procedure TFEOMainForm.ColumnKFSRGetFilterDisplayText(Sender: TcxCustomGridTableItem; const AValue: Variant; var ADisplayText: string);
begin
  if (pos('(', ADisplayText) = 0) then
    ADisplayText := FormatKFSR(ADisplayText);
end;
----------------------------------------------------------------------------------
//выпадающий список комбика
procedure TFEOMainForm.cxGrid4DBTableView1ID_KFSRPropertiesPopup(
  Sender: TObject);
var
  s: TcxLookupComboBox;
  i : Integer;
begin
  s := Sender as TcxLookupComboBox;
  s.Properties.DataController.BeginUpdate;
  For i := 0 to s.Properties.DataController.RowCount - 1 do
    s.Properties.DataController.Values[i, 0] := FormatKFSR(s.Properties.DataController.Values[i, 0]);
  s.Properties.DataController.EndUpdate;
end;



Как-то так всё работает и при этом в датасете неформатированные данные без точки.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress обработать DisplayText в комбиках грида
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]