Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 23 апр 2024, 06:15

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 05 мар 2021, 20:52 
Не в сети

Зарегистрирован: 27 янв 2021, 09:01
Сообщений: 34
Редактирую записи в DBGridEh
В футере итоговая информация: количество записей и сумма по полю "Сумма", считается автоматом (SumList.Active = True)
Но при этом в футер не попадает информация по последней отредактированной строке, чтобы футер пересчитался нужно добавить следующую запись или перейти на предыдущую

Как можно пересчитать футер, не используя DBGridEh.SumList.RecalcAll ?


Вложения:
Grid.jpg
Grid.jpg [ 37.66 KiB | Просмотров: 740 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 мар 2021, 13:29 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Грид не содержит данные.
Для пересчета значений записей необходимо обращаться к DataSet'у.
Но возможность такого пересчета зависит от типа DataSet'а.
Необходимо чтобы DataSet имел возможность получить значение определенной записи без перемещения по записям.

В вашем случае возможно проще будет заканчивать режим редактирования записи сразу после закрытия текстового редактора ячейки.
Для этого необходимо написать обработчик события TColumnEh.OnUpdateData примерно следующим образом

Код:
procedure TForm1.DBGridEh1Columns3UpdateData(Sender: TObject; var Text: string;
  var Value: Variant; var UseText, Handled: Boolean);
begin
  MemTableEh1.Edit;
  (Sender as TColumnEh).Field.Text := Text;
  MemTableEh1.Post;
  Handled := True;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 мар 2021, 18:24 
Не в сети

Зарегистрирован: 27 янв 2021, 09:01
Сообщений: 34
Да, работает

Единственное,
1) для lookup-поля код присвоения значения будет такой:
Код:
(Sender as TColumnEh).Field.AsInteger := Value;

2) для числового значения с плавающей точкой код будет такой:
Код:
(Sender as TColumnEh).Field.AsFloat := StrToFloat(Text);


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB