Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.009 c
3-68211
Fiend
2003-07-28 11:21
2003.08.21
select from Table and Procedure


14-68533
Silentor
2003-08-04 17:50
2003.08.21
Как получить доступ к портам компьютера под Win32?


3-68189
Iry
2003-07-28 17:14
2003.08.21
FastReport TfrChartView


7-68564
sergwolf
2003-06-06 20:17
2003.08.21
Как считать с COM порта информацию?


14-68468
wnew
2003-08-06 14:00
2003.08.21
Посмотрите фотографию.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский