Как нарисовать стрелки, чтобы показать связанные данные между записями в двух TcxGrid?

У меня есть две сетки (TcxGrid) в моем приложении, каждая в стороне от формы. Обе сетки показывают связанные данные, хотя их можно прокручивать вертикально по отдельности. Я хочу нарисовать стрелки на средней панели, показывая линию другой сетки, с которой связана запись, как в этом примере:

GridA   GridB
+---+   +---+
| a |---| a |
| b |   | i |
| c |\  | h |
| d | \ | g |
| e |  \| h |
| f |   | b |
+---+   +---+

Процесс розыгрыша прост. Моя проблема с определением позиций записи. Как узнать, каково вертикальное положение каждой строки / записи сетки, учитывая, что в обеих сетках может быть группировка?

Заранее спасибо.

1 ответ

Решение

Я обнаружил, что вертикальное положение записи сетки может быть получено следующим образом:

Вид сетки имеет свойство ViewData.Rows, Rows является массивом, и каждый его элемент имеет RecordIndex имущество. Таким образом, вы можете перебирать Rows массив и проверить, если его RecordIndex это то, что вы находите и, если это правда, получить собственность ViewInfo.ClientBounds.Top,

Пример:

for i := 0 to gdMovimentoTV.ViewData.RowCount - 1 do 
  if gdMovimentoTV.ViewData.Rows[i].RecordIndex = iSomeRecordIndex then begin
    if Assigned(gdMovimentoTV.ViewData.Rows[i].ViewInfo) then begin
      Result := gdMovimentoTV.ViewData.Rows[i].ViewInfo.ClientBounds.Top;
      Break;
    end;
Другие вопросы по тегам