2013-04-01 5 views
0

У меня есть три DBGrids и три таблицы, а два из них связаны с основными полями и работают как ожидалось. Когда пользователь нажимает на grid-1, он показывает три элемента в grid-2.Мне нужен DBGrid OnAfterCellClick

Когда пользователь нажимает на сетке-2, я хочу использовать Locate, чтобы выбрать строку в сетке-3

Проблема в том, что событие сетки-2 OnCellClick обжигают до того, как данные изменились в соответствующей строке , например

Grid-2 
Flowers <-- this has focus and Dirt has focus in grid-3 
Weeds  
Trees <-- then I click here 

Grid-3 
Dirt 
Water 
Gum  <-- and using Locate in the grid-2 OnCellClick I 
      want it to show Gum but grid two is still 
      internally on Flowers and stays on Dirt 

Кажется, что сетка не изменяется до строки после события OnCellClick.

Мне нужно событие AfterCellClick.

Может кто-то пролить свет на то, как это сделать?

Благодаря

ответ

5

Вы не должны использовать OnCellClick. Вместо этого используйте TDataSet.OnAfterScroll. Он вызывается автоматически, когда указатель записи (строки) перемещается после выполнения движения. Это означает, что при нажатии на сетку, прикрепленную ко второй таблице, и указатель записи перемещается от Flowers до Trees, событие второй таблицы OnAfterScroll будет запущено после изменения строки, и в этом случае обработчик вы можете сделать соответствующий Locate в третьей таблице.

+0

DUH! Спасибо, Кен. Я становлюсь слишком старым. :) – user2175495