Форум: "Базы";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизTDBGrid Найти похожие ветки
← →
Vlad (2003-08-14 11:58) [40]2 Reindeer Moss Eater ©
Если прервал редактирование то Close и не будет.
Читай внимательнее.
Ладно, по-другому:
If (key=#27) and not(gdFocused in DBGrid.State) then Close
← →
Mark (2003-08-14 12:49) [41]Ты сделай, а потом говорить будешь.
Мы ещё не закрыли окно, но событие OnClose наступило. Именно там всегда и отлавливается. И ты не прерываешь редактирование таблицы - достаточно посмотреть, что она действительно будет находиться в состоянии dsEdit.
Хотел помочь, а ты, я вижу, даже не проверяешь подсказку... Ну, извини...
← →
Mark (2003-08-14 12:55) [42]Так ты заперти закрытие формы, коль не хочешь!
Там же есть
Action:=caNone
The form is not allowed to close, so nothing happens.
← →
roottim (2003-08-14 13:19) [43]вот вариант твоей задачи:
кидаешь на форму TTimer
в дизайне:
.Name = "Timer1"
.Interval = 500;
.Enabled := False;
кликаем по нему дважды и пишем обработчик
procedure TmyForm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
end;
далее у формы проперти KeyPreview = True;
и пишем обработчик на key_down для формы
procedure TMyForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_ESCAPE) then
begin
if Timer1.Enabled then
begin
Timer1.Enabled := not Timer1.Enabled;
Self.Close;
end
else
Timer1.Enabled := True;
end;
end;
вот теперь если ты нажмеш один раз... Esc то если DataSet редактирование закончится
А если ты двыжды нажмеш на Esc, или подержиш подольше, или один раз (при том что DataSet не в режиме dsEdit) формочка твоя закроется!
← →
Mike2 Kouzmine2 (2003-08-14 13:28) [44]roottim (14.08.03 13:19) [43] Только все это надо было засунуть в отдельный поток.
← →
roottim (2003-08-14 13:36) [45]2Mike2 Kouzmine2 (14.08.03 13:28) [44]
зачем ?
таимер и так работает в отдельной нитке!
← →
Алексей Петухов (2003-08-14 14:01) [46]Попробую с TTimer-ом, хотя не до коннца понял.
← →
MXA (2003-08-14 16:28) [47]Ну вы блин даете! (С)
Предлагаю свою версию:
1. У фоpмы KeyPreview ставим в true;
2. Делаем обработчик:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case key of
VK_Escape:
if not DBGrid1.EditorMode then Close;
end;
end;
← →
roottim (2003-08-14 17:03) [48]> Ну вы блин даете! (С)
моя версия универсальна для всех контролов формы... это единственный "+"
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.009 c