Главная страница
    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.003 c
2-1320603084
Vitart
2011-11-06 21:11
2012.02.12
Интеграл


2-1319873798
de_guta
2011-10-29 11:36
2012.02.12
Проблема с потоком


2-1320656448
Terrmit
2011-11-07 12:00
2012.02.12
Программное открытие окна PopupEdit


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


15-1319117012
Вадим
2011-10-20 17:23
2012.02.12
Глюки Delphi 7 и Windows 7 64





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский