Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.004 c
15-1319279141
Kerk
2011-10-22 14:25
2012.02.12
Интересует возможность...


15-1319315405
Юрий
2011-10-23 00:30
2012.02.12
С днем рождения ! 23 октября 2011 воскресенье


2-1320134437
Dennis I. Komarov
2011-11-01 11:00
2012.02.12
LogonUser


6-1250609834
raslmc
2009-08-18 19:37
2012.02.12
Проблема с WebModule1


15-1319659770
Kerk
2011-10-27 00:09
2012.02.12
Отчет о работе сервисов Google





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский