Delphi7:потеря данных в гриде при деактивации форм
Есть ошибка в Delphi 7, с которой у меня не получается разобраться. Нужна помощь в исправлении ошибки, скорее всего - исправление бага в исходниках DBGrid.
Работа оценена предположительно в 1000р., оплата через вебмани.
------------------------------------------------
Есть Delphi 7 + MS SQL Server Express, в базе табличка с двумя полями - int Identity и varchar.
Есть грид в форме, TDBGrid-TDataSource-TADOQuery-TADOconnection. Мы используем ехлибовский грид, но в стандартном проблема тоже воспроизводится.
На FormDeactivate повешено
with query do if (State=dsEdit) or (State=dsInsert) then Post;
цель - при выходе из формы должно происходить сохранение данных. Но вот беда - если у грида align=alNone, post происходит и данные сохраняются. А если у грида align=alBottom, то пост происходит, но введенные в поле данные теряются.
Я пробовал упростить задачу: убрал все попытки сохранения.
Изменяю значение в гриде, перехожу к другой форме, потом возвращаюсь. Если у грида align=alNone, то вижу в ячейке то значение, которое ввел перед переходом, и могу продолжить его редактировать. Если у грида align=alBottom, то значение теряется. Если у грида align=alNone, то значение DBGrid1.InplaceEditor.text в FormDeactivate правильное, то которое я вводил. Если align=alBottom, то введенный мной текст в момент FormDeactivate уже утерян.
------------------------------------------------
Тестовый проект прилагается.
------------------------------------------------
Проверил предложение Дмитрия Беляева - не помогло. Если включен хотя бы один из якорей akRight или akBottom, данные при переходе к другой форме также теряются. Можно повесить событие на ресайз, и изменять размер грида в этом событии - если не получится разобраться с ошибкой, так и сделаем.