Форум: "Базы";
Текущий архив: 2012.02.12;
Скачать: [xml.tar.bz2];
ВнизЗначения первой и последней строк выделенного диапазона 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c