Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 10:14   #1
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию Одновременная прокрутка таблиц

Здравствуйте, подскажите пожалуйста как можно реализовать одновременную прокрутку нескольких DBGridEh???
User_IR_An вне форума Ответить с цитированием
Старый 05.06.2014, 10:53   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

как всегда "ловить" сообщение(событие) о перемещении в одном наборе данных и прокручивать другой набор данных до нужной позиции.
OnAfterScroll для одного TDataSet (который крутим) и Locate на другом TDataSet(который должен крутиться "синхронно").
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.06.2014, 11:35   #3
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
как всегда "ловить" сообщение(событие) о перемещении в одном наборе данных и прокручивать другой набор данных до нужной позиции.
OnAfterScroll для одного TDataSet (который крутим) и Locate на другом TDataSet(который должен крутиться "синхронно").
Извините, а можно по подробнее, объяснить как отлавливать событие.
User_IR_An вне форума Ответить с цитированием
Старый 05.06.2014, 12:23   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

"ловить сообщение" ==написать процедуру(метод) и назначить ее как обработчик для соответствующего события (event).

1. В Delphi выбираем форму на которой все это расположено (наши таблицы(Grid) и наборы данных(DataSet) "привязанные" к ним.

2. находим DataSet для которого хотим "ловить событие"
3. нажимаем F11 (для перехода в ObjectInspector [Инспектор Объектов]).

4.Далее работаем с окном ObjectInspector.
4.1. в выпадающем списке объектов(combobox) проверяем что у нас выбран правильный объект(Dataset). Если нет, то устанавливаем.

4.2. выбираем вкладку Events (события)
4.3. находим интересующее нас событие. (AfterScroll)
4.4. DblClick на пустом поле напротив нужного события.

5. теперь мы готовы "ловить событие" получать сообщение(Event).
осталось только написать что будем делать в случае прихода (наступления) данного сообщения.
писать надо внутри той процедуры(метода) который мы получили по DblClick из п.4.4.

А писать мы будем что?
Правильно мы будем искать(Locate) нужную нам запись в другом DataSet.
Изображения
Тип файла: jpg 11.JPG (40.3 Кб, 119 просмотров)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.06.2014 в 12:26.
evg_m вне форума Ответить с цитированием
Старый 05.06.2014, 12:40   #5
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
"ловить сообщение" ==написать процедуру(метод) и назначить ее как обработчик для соответствующего события (event).

1. В Delphi выбираем форму на которой все это расположено (наши таблицы(Grid) и наборы данных(DataSet) "привязанные" к ним.

2. находим DataSet для которого хотим "ловить событие"
3. нажимаем F11 (для перехода в ObjectInspector [Инспектор Объектов]).

4.Далее работаем с окном ObjectInspector.
4.1. в выпадающем списке объектов(combobox) проверяем что у нас выбран правильный объект(Dataset). Если нет, то устанавливаем.

4.2. выбираем вкладку Events (события)
4.3. находим интересующее нас событие. (AfterScroll)
4.4. DblClick на пустом поле напротив нужного события.

5. теперь мы готовы "ловить событие" получать сообщение(Event).
осталось только написать что будем делать в случае прихода (наступления) данного сообщения.
писать надо внутри той процедуры(метода) который мы получили по DblClick из п.4.4.

А писать мы будем что?
Правильно мы будем искать(Locate) нужную нам запись в другом DataSet.
Я наверно не правильно сформулировала вопрос, я все понимаю как создать процедуру.
Вот для adoquery (который поключен к dbgrid, который нужно прокручивать) на событие AfterScroll пишу( как поняла из ваших слов) :
Цитата:
AQ_Var_cikl_p.DataSource.DataSet.Lo cate(???)
И вот не понимаю что написать в Locate
User_IR_An вне форума Ответить с цитированием
Старый 05.06.2014, 13:11   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в Locate нужно написать условие, по которому происходит позиционирование в связанном гриде. У Вас же гриды как-то связаны?!

в худшем случае, когда основной грид и зависимый никак не связаны, тогда делайте перемещение по номеру записи... (какой номер записи текущий в главном гриде, такой же номер записи делайте активным и в связанном гриде...)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одновременная реакция aleksskay Общие вопросы Delphi 8 15.04.2014 21:41
Одновременная трансляция Green4el Свободное общение 0 25.02.2013 15:33
одновременная работа с двумя DBGrid Vashkin БД в Delphi 5 16.12.2011 13:09
Одновременная работа с окнами Bezsmertniy Помощь студентам 0 04.11.2010 11:25
одновременная печать формы и Webbrowser tigr1991 Общие вопросы Delphi 5 01.10.2008 14:43