Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.12;
Скачать: CL | DM;

Вниз

Значения первой и последней строк выделенного диапазона DBGridEh   Найти похожие ветки 

 
Lyudik   (2010-04-19 17:49) [0]

Доброго времени суток!
У меня такая проблема возникла:
В DBGridEh выделяю несколько строк (допустим 10) и мне надо получить данные, содержащиеся в первой и последней строках определенного столбца.
Делала так:
....
query.Bookmark:=dbgEhTable.Selectedrows.Items[0];
Data1:= query.fieldbyname("FieldName").Value;
   query.Bookmark:=dbgEhTable.Selectedrows.Items[dbgEhTable.SelectedRows.Count-1];
Data2:= query.fieldbyname("FieldName").Value;
...
Но у меня возникает вот какая проблема: в переменные передаются значение столбца второй строки и значение столбца строки, следующей за последней выделенной строкой.
В случае, если я делаю так
....
query.Bookmark:=dbgEhTable.Selectedrows.Items[-1];
Data1:= query.fieldbyname("FieldName").Value;
   query.Bookmark:=dbgEhTable.Selectedrows.Items[dbgEhTable.SelectedRows.Count-2];
Data2:= query.fieldbyname("FieldName").Value;
...
то у меня выдается сообщение List index out of bounds (-1).
Подскажите, как решить проблему ... :(
MultiSelect:=true;


 
sniknik ©   (2010-04-19 19:30) [1]

первый вариант правильный... почему работает не так как тобой ожидается... х.з., трассировать нужно, сравнивать значения.
попробовать например выделить 10, а взять 2 значения  Items[0]; и Items[1]; посмотреть и убедится, что все правильно, потом вместо 1 поставить 9 и опять убедиться... заменить на переменную куда предварительно скопировать значение Count-1, посмотреть, что это за значение, сравнить с цифрой 9...
блин, обычная отладка.


 
Lyudik   (2010-04-20 09:55) [2]


> попробовать например выделить 10, а взять 2 значения  Items[0];
>  и Items[1];

передались в переменные значения второй и третьей строки...

> вместо 1 поставить 9 и опять убедиться...

передались в переменные значения 2 и 11 строки...

> заменить на переменную
> куда предварительно скопировать значение Count-1, посмотреть,
> что это за значение, сравнить с цифрой 9...

результат 11 строки...


 
sniknik ©   (2010-04-20 10:46) [3]

т.е. Count у тебя = 12... почему тогда уверяешь, что выделено 10?


 
sniknik ©   (2010-04-20 10:50) [4]

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


 
Lyudik   (2010-04-20 11:55) [5]

нашла другой способ, который мне подходит

//делаем активной колонку, данные которой нам необходимы
dbgEhTable.FieldColumns["field_name"].Field.FocusControl;

GotoBookmark(Pointer(dbgEhTable.SelectedRows.Items[0]));
Data1:= dbgEhTable.SelectedField.Text;

GotoBookmark(Pointer(dbgEhTable.SelectedRows.Items[bgEhTable.SelectedRows.Count-1]));
Data2:= dbgEhTable.SelectedField.Text;

//этот способ подходит, если строки выделены подряд
//dbgEhTable.SelectedRows.Items[0] -первая строка в выделенном списке
//dbgEhTable.SelectedRows.Items[bgEhTable.SelectedRows.Count-1] -последняя строка в выделенном списке


 
sniknik ©   (2010-04-20 13:16) [6]

> нашла другой способ, который мне подходит
> GotoBookmark(Pointer(dbgEhTable.SelectedRows.Items[0]));
это тоже самое что написанное в 0 присвоение Bookmark, вот посмотри код установки метода Bookmark (SetBookmarkStr) и найди 10 отличий...



Страницы: 1 вся ветка

Текущий архив: 2012.02.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1320134437
Dennis I. Komarov
2011-11-01 11:00
2012.02.12
LogonUser


15-1319142602
Юрий
2011-10-21 00:30
2012.02.12
С днем рождения ! 21 октября 2011 пятница


15-1319617616
oldman
2011-10-26 12:26
2012.02.12
А вы когда картошку жарите-варите, вы ее чистите?


2-1320226118
igorium
2011-11-02 12:28
2012.02.12
Как встроить свой шрифт в программу?


3-1271682009
Виктор
2010-04-19 17:00
2012.02.12
Fast Reports 4.6