prand1
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Знающие люди, объясните вопрос по cxGrid! Вот есть Record и Row параметры Index и RecordIndex. Как я понимаю: Index - это порядковый номер строки в гриде на экране в данный момент и меняется при скроллировании, сортировке и пр. визуальных манипуляций. RecordIndex - это индекс записи в датасете и он не зависит от визуальных манипуляций в гриде. В собитии onCellClick ACellViewInfo: TcxGridTableDataCellViewInfo, функция Index := ACellViewInfo.RecordViewInfo.Index возвращает номер строки из грида т.е первая видимая это 0 (в датасете она может быть любой), если грид сортирован или прокручен вниз, то функция Sender.DataController.Values[Index, MyField.Index] вернет значение не из записи на которой кликнули. Это согласуется с моим представлением о Index и RecordIndex. Но вот смотрю пример из хелпа "Example: Changing Selected Records in Provider and Unbound Modes" проход по всем выделенным записям: var I: Integer; ARowIndex: Integer; ARowInfo: TcxRowInfo; begin with tvOrders.DataController do for I := 0 to GetSelectedCount - 1 do begin ARowIndex := GetSelectedRowIndex(I); ARowInfo := GetRowInfo(ARowIndex); Values[ARowInfo.RecordIndex, tvOrdersSaleDate.Index] := Now(); и если в Values ARowInfo.RecordIndex заменить ARowIndex т.е Values[ARowIndex, tvOrdersSaleDate.Index] := Now(), то результат будет верным независимо от сортировок и скроллинга и это не согласуется с моим представлением о Index и RecordIndex т.к результаты должны быть разными. Внесите ясность. Спасибо за внимание. |