Форум: "Базы";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
ВнизВыход из формы по Default-кнопке и сохранене данных.. Найти похожие ветки
← →
KSergey (2003-07-28 17:48) [0]На форме несколько DBEdit и 2 кнопки, одна из них c
Default = TRUE
ModarResult = mrOk
Стоя в одном из DBEdit исправляем поле, жмем Enter (не покидая пооле). Срабатывает кнопка с Default = TRUE, форма как положено закрывается, но новое значние в поле не переностися! Если предварительно из исправленного поля выйти (Tab или, например, мышью нажать на кнопку) - все нормально.
Причем проблема явно не в коде, вызывающем Post для DataSet"а. Просто нет явного выхода из поля - изменения не фиксируются...
Это лечится? Как?
← →
KDS (2003-07-28 17:55) [1]procedure TfmClients.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if Table1.State=dsEdit then Table1.Post;
// можно конечно и вопрос задать хотите ли сохранить..
end;
← →
dma (2003-07-28 23:29) [2]А мне больше нравиться в самой форме на кнопку закрытия вешать:
with Table1 do if Modified then Post else Cancel;
Close;
Удобно, т.к. потом Table1 поменял на MainTable и т. п., а код можно один в один повторить. Тупо, но быстро.
← →
KSergey (2003-07-29 08:25) [3]Да Post проходит точно, вот в чем вся штука.
Наверное зря сразу не расписал как именно делаю, может кто что подскажет:
Обработчик кнопки "редактировать" в форме с гридом (т.е. создание формы редактирования записи):
procedure TUserListFram.DoEditForm;
begin
with TUserParamForm.Create (Owner) do // форма с набором DBEdit
try
dsEdit.DataSet := adqrList; // dsEdit - DataSource, расположенный на форме редактирования
// adqrList - DataSet с выборкой
dsEdit.DataSet.DisableControls; // сам не знаю надо ли ;)
try
if ShowModal = mrOk then // отобразить форму редактирования записи
adqrList.Post // если нажали Ok - сохранить
else
adqrList.Cancel; // иначе - отмена
finally
dsEdit.DataSet.EnableControls;
end;
finally
( DataSet к DataSource на создаваемой форме я, как видите, привязываю)Да Post проходит точно, вот в чем вся штука.
Наверное зря сразу не расписал как именно делаю, может кто что подскажет:
Обработчик кнопки "редактировать" в форме с гридом (т.е. создание формы редактирования записи):
procedure TUserListFram.DoEditForm;
begin
with TUserParamForm.Create (Owner) do // форма с набором DBEdit
try
dsEdit.DataSet := adqrList; // dsEdit - DataSource, расположенный на форме редактирования
// adqrList - DataSet с выборкой
dsEdit.DataSet.DisableControls; // сам не знаю надо ли ;)
try
if ShowModal = mrOk then // отобразить форму редактирования записи
adqrList.Post // если нажали Ok - сохранить
else
adqrList.Cancel; // иначе - отмена
finally
dsEdit.DataSet.EnableControls;
end;
finally
Free;
end;
end;
Ну внутренность TUserParamForm я уже расписал: просто набор TDBEdit. Но на ней расположен и свой DataSource, к которому эти DBEdit привязаны. Может в этом нюанс? (DataSet к DataSource на создаваемой форме я, как видите, привязываю)
← →
KSergey (2003-07-29 08:27) [4]Да, забыл написать: до входа в эту ф-цию (DoEditForm) adqrList уже в режиме Edit (это делается во внешней по отношению к данной функции)
← →
stud (2003-07-29 09:22) [5]просто после нажатия enter нужно фокус передать другому компоненту - не важно какому. тоже кстати происходит при использовании speedbutton. достаточно фокус с едита перенести на другой компонент
← →
KSergey (2003-07-29 09:26) [6]stud © (29.07.03 09:22)
Это мысль, сам не допер. Надо попробовать.
PS. Мне бы очень не хотелось критиковать дельфи, все в ней очень продумано. Н овот такие вот моменты личн меня очень удивляют: вроде делай раз, делай два - и все работает. Однако на поверку нифига такого не выходит, постоянно вылазят всякие нюансы, с которыми приходится бороться. Обидно это, я бы так сказал...
← →
stud (2003-07-29 09:30) [7]все у ней хорошо (у delphi) только руками писать нужно)))
аообще мне кажется что кнопки со стандартными модальными значениями не стоит использовать на формах где нужно редактировать данные. при просмотре это удобно
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c