Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отработать поьерю фокуса DBGridEh [D6, Win2k]


AleKo ©   (2004-06-16 02:05:00) 

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


Knapweed   (2004-06-16 03:53:00) [1]

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


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

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


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

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


Knapweed   (2004-06-16 03:29:00) [4]

>[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:00) [5]

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


Knapweed   (2004-06-16 03:21:00) [6]

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


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

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


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

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


Knapweed   (2004-06-16 03:13:00) [9]

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

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


Knapweed   (2004-06-16 03:11:00) [10]

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

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


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

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

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


GanibalLector   (2004-06-16 02:14:00) [12]

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


GuAV   (2004-06-16 02:10:00) [13]

в OnExit

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо