Страница 1 из 1

CellToGridZone - в двух словах

СообщениеДобавлено: 12.03.2014 13:58:31
midisa
Алексей, можете в двух словах сказать, что эта инструкция делает?

Мне нужно чтобы позиция грида сохранялась после обновления данных в гриде.

При изменении данных в гриде я использую это:

Код: Выделить всё
   var i_pos : integer;
   begin
   // изменяю данные
   i_pos := ZQuery1.RecNo;
   // здесь открываю данные снова
   ZQuery1.RecNo := i_pos;


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

чтобы если обновил данные в гриде и скролинг стоял на месте.

Заранее спасибо за консультацию.

Re: CellToGridZone - в двух словах

СообщениеДобавлено: 12.03.2014 15:11:12
alexs
Это достаточно сложный вопрос. Мне пришлось делать "грязный хак" для расчёта итогов. Вся проблема в том, что после изменения позиции в наборе данных датасет посылает событие, а грид по этому событию проводит центровку данных.
Мне пришлось после перед началом перемещений запомнать позицию в списке буферов датасета, а после - пытаться востановить эту позицию.
Посмотри код метода TRxDBGrid.CalcStatTotals;

Re: CellToGridZone - в двух словах

СообщениеДобавлено: 13.03.2014 10:27:32
midisa
А в паскале нельзя напрямую работать с полосой прокрутки? Получить значение или установить значение ... Полоса прокрутки должна идти как отдельный элемент управления, хотя я могу ошибаться т.к. мои знания ограничены только Windows API и MFC (при чем только шестой версии).

Добавлено спустя 19 минут 36 секунд:
alexs писал(а):Посмотри код метода TRxDBGrid.CalcStatTotals;


Если этот способ восстановления позиции корректно работает, то наверное нужно сделать две функции, сохранения позиции и восстановления.
Хотя я бы лично не стал полагаться на соединение базы данных ... но если альтернативы нет то конечно ...