Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > как переместить курсор DBGrid1 / Table1


Автор: 1900s 27.5.2008, 19:16
Добрый день, подскажите кто знает:
у меня есть DBGrid1 в него втянуты все данные с Table1 (из БД через BDE)
есть так же массив Ans[i] в котором хранятся путь перехода
К примеру: 1 -> 2 -> 4 -> 3 -> 5 -> 1
Переходы по DBGrid1 / Table1
строка № 1 столбец №2
строка № 2 столбец №4
строка № 4 столбец №3
строка № 3 столбец №5
строка № 5 столбец №1
необходимо записать значение DBGrid1 / Table1 в переменную.

как это сделать?

Автор: Rodman 27.5.2008, 21:13
юзай  - NEXT. PREV, FIRST, LAST

Автор: 1900s 27.5.2008, 22:35
есть ли пример как перейти в нужную ячейку? (например: как перейти во 2ю строку, 3й столбец)

Автор: Lunatikus 28.5.2008, 12:17
есть такой метод moveby(i),где i-число позиций,на которое надо сдвинуться.Если отрицательное-вверх.положительное-вниз по списку.
В текущий момент времение тебе известно свойство recno-число,отражающее текущую позицию(0-ая,7-ая и т.д.).
Из своего массива ты знаешь,куда тебе надо(ansi[7]:=5 например)
Тогда,чтобы сдвинуться на следующий уровень по массиву ansi,надо выполнить
query.moveby(ansi[7]-query.recno)

Автор: Vas 28.5.2008, 12:35
DBGrid здесь ни при чем он тока отображает данные, так что работать придется с dataset читай пост Lunatikus'a половина решения проблемы, а потом когда спозиционируешь курсор на нужной записи бери данные по номеру столбца
Код

for i:=1 to High(array) do
begin
DataSet.First;  //становимся на первую запись
DataSet.MoveBy(Array[i,1]-1); //сдвигаем на позицию из массива -1 стоим на первой строке двигаем на ноль, стоим на первой строке перейти на 2 двигаем на 1
str:=DataSet.Fields[Array[i,2]].AsString; //берем данные столбца
end;


P.S. код не проверял, и по работе MoveBy на память не помню может даже не придется вычитать 1. Оптимизировать код не только можно, но и нужно, надо как минимум сделать так чтобы не перепрыгивать в начало (но это уже сам).

Автор: 1900s 28.5.2008, 16:48
Спасибо Vas, все работает!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)