powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / "Текущее значение" неактивного Грида (VFP6.0sp5)
3 сообщений из 3, страница 1 из 1
"Текущее значение" неактивного Грида (VFP6.0sp5)
    #32253242
EsKor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Известно, что если Grid не имеет фокуса, то его Value неопределено (вроде как =0), наверно это правильно.
Тогда каким наилучшим способом взять значение выбранное пользователем на каком-то предыдущем этапе работы?

Конкретно:
Есть штук пять Гридов, связанных со своми таблицами. Пользователь делает выбор в каждой и, затем в текстовом поле вводит, скажем, вес. По вводу веса все эти данные заносятся в таблицу.
Можно, конечно, значения брать не из Грида, а из таблиц, но однажды, правда при отладке, был "побочный эффект", когда текущая запись одной из этих таблиц "уплыла". Т.е. в Гриде подсвечивалась одна запись (Dynamic Color), а реально в таблице в какой-то момент текущей стала другая. Т.е. исходя из "кабы чего не вышло" хотелось бы брать значение прямо из Грида, т.е. точно то которое указал пользователь. Пока только есть мысль использовать глобальный массив и в него заносить выбранные значения. Может есть более элегантное решение?
...
Рейтинг: 0 / 0
"Текущее значение" неактивного Грида (VFP6.0sp5)
    #32253267
Aijik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. в Гриде подсвечивалась одна запись (Dynamic Color), а реально в таблице в какой-то момент текущей стала другая

Вполне нормальная ситуация. Вы же вспомните, DynamicBackColor перерисовывается только тогда, когда изменяется не RECNO() записи, а переменная по которой он определяет, что подсвечивать!!!
Для классической схемы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
В Init-event объекта Grid запишите 
This.tag = STR(RECNO()) 
THIS.setall( "Dynamicbackcolor" , ; 
 "IIF(str(RECNO())==This.tag,RGB(192 , 192 , 192 ), ; 
RGB( 255 , 255 , 255 ))", "Column" ) 

В AfterRowColChange-event объекта Grid запишите 
LPARAMETERS nColIndex 

This.tag = STR(RECNO()) 
THIS.Refresh() 

(с) Решения Фоксклуба


Подсветка изменяется только при изменении Grid.tag в AfterRowColChange - поэтому подсветка по Dynamicbackcolor совсем не обязательно соотвествует реально текущей записи! Указатель сместился по каким-то причинам, а AfterRowColChange не отреботал - вот вам и несоотвествие между реальным RECNO() и подсвеченной в гриде строкой!

Относительно передачи значения. У меня в глобальном объекте приложения есть свойство-массив, которое и используется как буфер для передачи значений в подобных случаях
...
Рейтинг: 0 / 0
"Текущее значение" неактивного Грида (VFP6.0sp5)
    #32254007
EsKor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Aijik
Спасибо!
Видимо я не совсем внятно задал вопрос. То что "подсветка по Dynamicbackcolor совсем не обязательно соотвествует реально текущей записи" - это мне известно. Дело в том, что по замыслу казалось было сделано все для того что-бы подсветка как раз всегда и соответствовала ... Но оказалось, что не все. Кое-что оказалось не учтеным, что я и назвал побочным эффектом. И первое, что и пришло на ум использовать какой-нибудь глобальный массив. Кстати, спасибо, что напомнили о возможности использования для этого дополнительного свойства. Но мне всегда изначально не нравится по IMHO неоправданное использование чего-нибудь вспомогательного, когда существует первоисточник, поэтому и появился вопрос о возможности другого подхода.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / "Текущее значение" неактивного Грида (VFP6.0sp5)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]