Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переход по DBGrid клавишами вниз-вверх 
:(
    Опции темы
nicka
  Дата 11.5.2004, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Работаю в Delphi7,

на форме у меня стоит DBGrid, я хочу чтобы при переходе по его записям клавишами UP-DOWN
выполнялась какая-нибудь процедура, к сожалению, событие CellClick DBGrid-а не реагирует на эти кнопки, как же мне это организовать.

при переходе по его записям клавишами UP-DOWN - меняються только значения полей DBlabel,
которые я сажаю на форму, но мне нужно еще и выполнение процедуры,

Вообще-то помимо клавиш UP-DOWN, также удобно было бы пользоваться для тех же целей Enter-ом,

одним словом , думаю проблема ясна.... прошу предложения, по-моему вполне нужная вещь при работе с данными.

А то постоянно кликать мышью по записям, чтобы присходили желаемые мной расчеты над текущей записью - слишком неудобно!! smile.gif

PM MAIL   Вверх
Vit
Дата 11.5.2004, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Событие от TTable или TQuery - не знаю что там у тебя к гриду прикручено, AfterScroll, BeforeScroll


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 11.5.2004, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Глобальный перехват нажатия клавиш в приложении biggrin.gif biggrin.gif biggrin.gif
Типа хук ставить можно, но можно и проще: начинай просмотр событий с OnKeyDown... biggrin.gif

Удалено модератором

Это сообщение отредактировал(а) Vit - 12.5.2004, 15:49
PM   Вверх
Akella
Дата 12.5.2004, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Относительно AfterScroll & BeforScroll - я не раз натыкался на грабли. Я не помню точно, что я делал в событии AfterScroll, но мне пришлось переносить процедуру в события AfterPost, AfterDelete, по моему мне нужно было пробегаться по записям в таблице для подсчета общей суммы. А можно использовать еще один компонент, подключенный к той же таблице и обновлять его.
PM MAIL   Вверх
nicka
Дата 12.5.2004, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Цитата
Событие от TTable или TQuery - не знаю что там у тебя к гриду прикручено, AfterScroll, BeforeScroll
- и после этого при нажатии клавиши UP-DOWN или Enter будет выполняться посаженная туда моя процедурка?

Странно, что события AfterScroll, BeforeScroll у TTable или TQuery , а не у грида...


Цитата
но мне пришлось переносить процедуру в события AfterPost, AfterDelete, по моему мне нужно было пробегаться по записям в таблице для подсчета общей суммы
эти события у меня вообще не используються, я не редактирую записи через грид

Цитата
А можно использовать еще один компонент, подключенный к той же таблице и обновлять его.
- не поняла, нельзя ли по-подробнее, я медленно соображаю.
Какая разница, ну добавлю еще один грид - причем тут реакция на UP-DOWN или Enter ?

Цитата
начинай просмотр событий с OnKeyDown...
- об этом я думала,
я не нашла какой код key у клавиш UP-DOWN? А вот с Enter - это не пойдет, потому что пока надо заставить грид при нажатии Enter переходить на следующую запись, хотя наверно е это не сложно, используя .next???

Цитата
Зы... мог и не понять вопросик, простите (особенно Pegas) 
- по-моему все ясно написано, куда уж яснее? smile.gif

PM MAIL   Вверх
gray_k
Дата 12.5.2004, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: 3
Всего: 22



Кода клавишь есть: VK_UP, VK_DOWN. Смотри в хелпе "Virtual key codes";
Цитата
- и после этого при нажатии клавиши UP-DOWN или Enter будет выполняться посаженная туда моя процедурка?

При навигации в гриде у тебя происходит смена текущей позиции в НД, с которым этот грид связан. Кстати можно ещё использовать событие OnDataChange у компонента TDataSource, который связан с гридом.
Цитата
А вот с Enter - это не пойдет

В событии OnKeyDown грида пишешь:
Код

if Key = VK_RETURN then
 DBGrid1->DataSource->DataSet->Next;

При нажатии ENTER будет осуществлятся переход к следующей строке.


--------------------
С уважением.
Gray.
PM MAIL   Вверх
Pakshin A. S.
Дата 12.5.2004, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Удалено модератором

Это сообщение отредактировал(а) Vit - 12.5.2004, 15:49
PM   Вверх
nicka
Дата 12.5.2004, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Цитата
Кода клавишь есть: VK_UP, VK_DOWN. Смотри в хелпе "Virtual key codes";
- я искала, не нашла... sad.gif

Цитата
Pegas Огромное спасибо за унижение, может ещё раз сделаешь? а? 
че то я не въезжаю - о чем это вы? wink.gif

PM MAIL   Вверх
x77
Дата 12.5.2004, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Удалено модератором

самый нормальный вариант для отработки смены записи - это Table1.OnAfterScroll; (см ответ Vit'а).

Это сообщение отредактировал(а) Vit - 12.5.2004, 15:49


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Maverick
Дата 12.5.2004, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Вариант Vit, конечно, самый первый и правильный....

Удалено модератором

Это сообщение отредактировал(а) Vit - 12.5.2004, 15:48


--------------------
smile
PM ICQ GTalk   Вверх
Vit
Дата 12.5.2004, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата
Цитата
Событие от TTable или TQuery - не знаю что там у тебя к гриду прикручено, AfterScroll, BeforeScroll

- и после этого при нажатии клавиши UP-DOWN или Enter будет выполняться посаженная туда моя процедурка?

Странно, что события AfterScroll, BeforeScroll у TTable или TQuery , а не у грида...



AfterScroll, BeforeScroll будут вызываться при любом переходе с одной строки грида на другую, не важно какими клавишами, мышаком или ещё чем это сделано.



Модератор: прекратите разборки и флуд! для этого есть специальный раздел, действия модераторов обсуждаются там же.

Это сообщение отредактировал(а) Vit - 12.5.2004, 15:51


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 12.5.2004, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Удалено модератором

Это сообщение отредактировал(а) Pegas - 13.5.2004, 01:02
PM   Вверх
gray_k
Дата 13.5.2004, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: 3
Всего: 22



Цитата
- я искала, не нашла...

В хелпе на вкладке "Поиск" набираешь VK_UP и .....


--------------------
С уважением.
Gray.
PM MAIL   Вверх
Akella
Дата 13.5.2004, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



в редакторе свойств перейди на закладку событий и щелкни один раз на событии OnKeyDown и нажми F1
PM MAIL   Вверх
nicka
Дата 13.5.2004, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Цитата
Событие от TTable или TQuery - не знаю что там у тебя к гриду прикручено, AfterScroll, BeforeScroll

- к сожалению не выходит. Во-первых AfterScroll - точно так же, как и с ONCellClick у грида реагирует
только на щелкание мышью по записям, а на клавиши UP-DOWN - 0 книмания. А во вторых, почему то
вообще никак не риагирует при выбирании последней записи в гриде.
А BeforeScroll - вообще никак не реагирует.

Цитата
Кстати можно ещё использовать событие OnDataChange у компонента TDataSource, который связан с гридом.
Тут аналагично с использованием прикручено, реагирует только при клике мышь на запись, а на кнопки UP-DOWN
не реагирует.

Смотри в хелпе "Virtual key codes";
Да, посмотрела, все увидела только проблема такая, что код следующий твой
Код
if Key = VK_RETURN then

не работает , говорит Incompetible types, тогда ставлю VK_RETURN в кавычки,
но в этом случае реакции никакой. В чем тут дело?

Так, что пока проблема никак не решена...

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0630 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.