Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

Отработать поьерю фокуса DBGridEh   Найти похожие ветки 

 
AleKo   (2004-06-16 02:05) [0]

Добрый день господа.
На форме имеется DBGridEh и другие компоненты. Как сделать что во время редактирования данных в Grid (изменение, вставка) до подтверждения ввода данных или отмене при потере фокуса Grid выдавалось сообщение пользователю что есть не сохраненные данные и фокус возвращался в Grid.


 
GuAV ©   (2004-06-16 02:10) [1]

в OnExit

procedure TForm1.StringGrid1Exit(Sender: TObject);
begin
 if {условие} then
 begin
   ShowMessage("куды полез?");
   TWinControl(Sender).SetFocus;
 end;
end;
зы: извини, TDBGridEh у меня нет...


 
GanibalLector ©   (2004-06-16 02:14) [2]

2 AleKo  
Что-то глючит у меня этот  DBGridEh.Я б тебе посоветовал использовать другой.


 
AleKo   (2004-06-16 03:00) [3]

Так это работает.

Теперь дополнительный вопрос.
При всем перечисленном выше необходим доступ к DBNavigator,
чтобы пользователь мог среагировать на сообщение о сохранении данных.


 
Knapweed ©   (2004-06-16 03:11) [4]

Вместо ShowMessage("куды полез?"), пиши

if MessageDlg("Сохранить изменения - "Yes", Отменить - "No"", mtConfirmation, 0) = mrYes then ... post else ...cancel.


 
Knapweed ©   (2004-06-16 03:13) [5]

Sorry ... Правильно будет

if MessageDlg("Сохранить изменения - "Yes", Отменить - "No"", mtConfirmation, [mbYes, mbNo] 0) = mrYes then ... post else ...cancel.


 
AleKo   (2004-06-16 03:18) [6]

Предлагаемое решение работает но есть нюансы.
При возвращении фокуса Grid все остальные элементы на форме перестают подсвечиваться, в частности DBNavigator.
Может есть более гибкое решение вопроса.


 
AleKo   (2004-06-16 03:20) [7]

Knapweed спасибо за совет, это нюансы.
Вы забыли добавить "Продолжить редактирование".


 
Knapweed ©   (2004-06-16 03:21) [8]

Что значит "перестают подсвечиваться"?


 
Knapweed ©   (2004-06-16 03:29) [9]

>[7]

x := MessageDlg("Сохранить изменения - "Yes", Отменить - "No", Продолжить редактирование - "Cancel"", mtConfirmation, [mbYes, mbNo, mbCancel] 0);
if x = mrYes then ... post;
if x = mrNo then ...cancel;
if x = mrCancel then Abort;


 
AleKo   (2004-06-16 03:29) [10]

При перемещении указателя мышки на кнопку навигатора он реагировал изменнением фомы посвечивался, теперь этого не происходит. И после восстановления фокуса в Grid воспользоваться навигатором становится невозможным, а это нелогично поскольку он и предназначен для сохранения данных.


 
Knapweed ©   (2004-06-16 03:34) [11]

Тогда помести Grid и Navigator в одной панели(Panel) и обрабатывай TPanelOnExit.


 
AleKo   (2004-06-16 03:39) [12]

Мне кажется это окольные пути. Ситуация которую я описал довольно распрастраненная и решение лежит на поверхности.


 
Knapweed ©   (2004-06-16 03:53) [13]

Ну тогда приятных поисков... :)



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1087523902
Артем К.
2004-06-18 05:58
2004.07.04
Есть ли в Delphi функция, которая число 10000 преобразует к виду


14-1087197245
Baks
2004-06-14 11:14
2004.07.04
интересный ролик в формате Mpeg


1-1087525442
Гена
2004-06-18 06:24
2004.07.04
Как экстрактить иконку из exe?


14-1087299782
NeyroSpace
2004-06-15 15:43
2004.07.04
Мелодии для мобильных телефонов


6-1083986699
magician
2004-05-08 07:24
2004.07.04
Как удаленно перезагрузить компьютер