powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGrid + cxmemTable + datasource + TcxGridDBTableView
21 сообщений из 21, страница 1 из 1
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998011
Jonnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу при редактировании грида в определенных колонках записать в грид в другую колонку данные.

Есть событие при редактировании данных и в нем это можно это сделать.

Код: pascal
1.
2.
3.
4.
5.
6.
procedure GridDBTableViewEditChanged(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin


end;



Но хотелось бы другое событие, потому как это срабатывает при каждом нажатии клавиши, а лучше то, которое после валидации данных происходит. т.е. закончено редактирование.

В общем хочу, что бы при редактировании колонок с именами FieldName "Address", "NameUser", "Company" я мог записать в колонку "Infouser" мог записать текстовую информацию и она сохранилась в MemData и отобразилась в Grid.

Не знаю как в текущей записи изменить данные в гриде или MemData
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998013
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А причем тут грид? OnBeforePost
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998307
Jonnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger
А причем тут грид? OnBeforePost


А при чем тут OnBeforePost. Возникает только когда добавляется новая строка.

А мне надо при редактировании конкретной колонки причем при редактировании именно пользователем менять значение другой колонки. OnAfterEdit то же не подходит. Возникает только при начале редактировании записи и при редактировании другой колонки этой же записи уже не работает. Хотя это и логично.
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998315
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998322
Jonnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr


О спасибо. Понял теперь как поля присваивать. Часть задачи решено.

Теперь бы узнать в какой колонке это произошло.

И еще вот проблема Post возникает при переключении на другую запись. А если пользователь перейдет на соседнию колонку этой же записи, то это событие не произойдет. Edti так же работает. Поэтому и смотрел в сторону грида, там есть больше событий и какое-то должно подойти.

В других компонентах я использовал событие onValidate оно возникало, если пользователь отредактировал данные и закончил их редактировании к конкретной колонке.
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998336
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik

И еще вот проблема Post возникает при переключении на другую запись. А если пользователь перейдет на соседнию колонку этой же записи, то это событие не произойдет.

Переход на другую колонку не есть окончание редактирования.
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998342
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты
1. View.OnEditValueChanged
2. в View.OnFocusedItemChanged проверять состояние Датасета
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998372
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik
еще вот проблема Post возникает при переключении на другую запись. А если пользователь перейдет на соседнию колонку этой же записи, то это событие не произойдет
если нужно вмешиваться до завершения редактирования записи то цепляться в tdatasource.ondatachange. в визуальщине при этом включить immediatepost
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998384
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik
В общем хочу, что бы при редактировании колонок с именами FieldName "Address", "NameUser", "Company" я мог записать в колонку "Infouser" мог записать текстовую информацию

В смысле, нужен просто-напросто Calculated field?
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998424
Jonnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начнем с начала.

Я нахожусь в гриде. Меняю значение какого-то поля. Если имя поля "User", а не любое другое, то я хочу в этой же записи в поле "AddInfo" добавить служебную информацию, просто какой-то текст. Вот и все.
И это должно произойти когда я после редактирования перешел в другую ячейку грида или фокус с грида ушел. Т.е. тогда когда я завершил редактирование ячейки. Не в момент начала, не во время, а именно в конце редактирования.

Это не поле Calculated field.

События Post, Edit не подходят потому как если ты остался в этой же записи, то ничего не произходит при повторных изменениях данных. EditChanged срабатывает при вводе любого символа, а это вызов процедуры ненужное количество раз.
tdatasource.ondatachange возникае при добавлении новый записи, при попытке редактировать, при самом редактировании.
А это потребует добавления всяких проверок, что бы по 100 раз не возникали не нужные события.
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998566
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik
EditChanged срабатывает при вводе любого символа.

OnEditValueChanged
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998576
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik
Если имя поля "User", а не любое другое, то я хочу в этой же записи в поле "AddInfo" добавить служебную информацию, просто какой-то текст. Вот и все.

Jonnik
Это не поле Calculated field.
Да, это странная архитектура. Зачем хранить эту информацию в этой же записи, если её всегда можно вычислить?
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998600
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik
tdatasource.ondatachange возникае при добавлении новый записи, при попытке редактировать, при самом редактировании.
А это потребует добавления всяких проверок, что бы по 100 раз не возникали не нужные события
ну если так не сгущать то там все проще, а более универсального варианта и нет
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998615
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik
я хочу в этой же записи в поле "AddInfo" добавить служебную информацию, просто какой-то текст. Вот и все.

Именно добавить? То есть что-то типа лога, если десять раз поменять значение Вася -> Петя -> Вася -> Петя, то ляжет десять добавлений? Обычно такое делают на стороне сервера, в крайнем случае при сохранении (потому что не нужны промежуточные колебания - что было пока пользователь редактировал). Если нужны... тогда, пожалуй, действительно нужно садиться на события смены фокуса, а на событиях типа Changed копить информацию для них.
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998671
Jonnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr
Jonnik
EditChanged срабатывает при вводе любого символа.

OnEditValueChanged



Идеально подходит. Срабатывает именно тогда когда надо.

Теперь как в этой функции узнать, что я сейчас отредактировал поле именно с именем "User" и если да, то как в поле "AddInfo" этой же записи добавить информацию к примеру текущее время (что бы понятнее было всем)

Код: pascal
1.
2.
3.
4.
5.
procedure GridDBTableViewEditValueChanged(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
 
end;
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998676
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik

Теперь как в этой функции узнать, что я сейчас отредактировал поле именно с именем "User" и если да, то как в поле "AddInfo" этой же записи добавить информацию к примеру текущее время (что бы понятнее было всем)

Код: pascal
1.
2.
3.
4.
5.
procedure GridDBTableViewEditValueChanged(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
 
end;

...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998726
Jonnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr
Jonnik

Теперь как в этой функции узнать, что я сейчас отредактировал поле именно с именем "User" и если да, то как в поле "AddInfo" этой же записи добавить информацию к примеру текущее время (что бы понятнее было всем)

Код: pascal
1.
2.
3.
4.
5.
procedure GridDBTableViewEditValueChanged(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
 
end;



Первое
По AItem можно узнать, только Caption колонки, а мне надо FieldName колонки. В DataBinding там почему-то нет этого свойства.

Второе.
AItem это колонка текущая, а мне надо записать данные в другую колонку этой же записи. Не знаю как от сюда это сделать.

Строго не судите, а только недавно начал изучать Dev. Много не понятно.

.
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998752
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По AItem можно узнать, только Caption колонки, а мне надо FieldName колонки. В DataBinding там почему-то нет этого свойства.
Код: pascal
1.
2.
3.
4.
procedure GridDBTableViewEditChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
  ShowMessage(AItem.ClassName);
end;



В общем случае
Код: pascal
1.
2.
3.
4.
procedure GridDBTableViewEditChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
  if AItem = MyColumn then MyDataset['MyField'] := 'нужное значение'
end;
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998766
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
(AItem as TcxGridDBColumn).DataBinding.FieldName
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39998833
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonnik
В DataBinding там почему-то нет этого свойства
закастить к TcxGridItemDBDataBinding надо
Jonnik
недавно начал изучать Dev
но лучше по максимуму работать на уровне датасета/датасорса чтоб минимизировать завязку на конкретные дб-аварные компоненты
...
Рейтинг: 0 / 0
cxGrid + cxmemTable + datasource + TcxGridDBTableView
    #39999176
Jonnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. Получилось, то что хотел.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGrid + cxmemTable + datasource + TcxGridDBTableView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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