powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ctrl-end/home в гриде при фильтре дает глюк
14 сообщений из 14, страница 1 из 1
ctrl-end/home в гриде при фильтре дает глюк
    #33021291
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если фильтрануть базу от которой грид - на экране все нормально и тд
но как только нажмешь ctrl-end или ctrl-home сразу вылазеет окошко с сообщением "THISFORM can only be used within a method"
с кнопками ОК/Help или полным набором кнопок, где помогает или ОК или Cancel. При этом фильтр снимается и курсор попадает туда, куда просили, т.е. в конец или в начало.

Что это за грабли такие - кто знает?

И как фильтровать данные в гриде, если я неправильно действую, накладывая фильр на базу грида.
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33021962
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"THISFORM can only be used within a method"


Он же тебе ясно и однозначно сообщает, что дело не в твоих фильтрах и не в гриде, а в месте программы, исползующем ThisForm. Ты, видимо, вызываешь какую-то функцию, не являющуюся методом этой формы, но используешь там ThisForm.
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33022611
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov "THISFORM can only be used within a method"


Он же тебе ясно и однозначно сообщает, что дело не в твоих фильтрах и не в гриде, а в месте программы, исползующем ThisForm. Ты, видимо, вызываешь какую-то функцию, не являющуюся методом этой формы, но используешь там ThisForm.

Ха! В том то все и дело ЧТО НЕТ НИКАКИХ ФУНКЦИЙ!!!!!!! Я ничего на эти сочетания клавиш не прописывал, и ТРАСЕ мне тоже абсолютно ничего не дает. Просто при нажатии ctrl-end или ctrl-home по ТРАСЕ видно, что прога попадает в KeyPress, там у меня отлавливание в DO CASE 13, 27 и -6, тоесть ентера, ескейпа или Ф7, видно, что ни одно условие не .T., OVERWISE нет, и по звершению отработки этого события, тоесть KeyPress, мне и вылазит ошибка!!! Получается что нет по дороге ни одной строчки, ни одного слова в программе, связанной с THISFORM. вот если б прокатило хоть одно из трех условий, то вопросов нет, там есть, но не прокатывает же, по ТРАСЕ явно это видно. И вообще, если у меня именно в проге глюк, то почему БЕЗ ФИЛЬТРА ОШИБКИ НЕТ? А только дам фильтр - сразу же по нажатии ctrl-end или ctrl-home. Фильтр снимаю - все ОК, ставлю - глюк!
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33022642
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведи код, как именно устанавливаешь фильтр.
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33023856
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не могу запостить сообщение больше чем 67 символов ПОЧЕМУ????
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33024113
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поскольку я дома, кода привести не могу, но распишу все так
значит на форме лежит грид и снизу еще пару объектов, как то
txtFilterString - сюда юзьверь вводит значение для фильтра
cmbFilterType - в комбо выбирается условие, типа =, >, < и тп
btnSetFilter - установка фильтра
btnClearFilter - снятие фильтра
на кнопку btnSetFilter прописано
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
do case
    case thisform.cmbFilterType.value= 1 
         SET FILTER TO PayCateg=thisform.txtFilterString.value
    case thisform.cmbFilterType.value= 2 
         SET FILTER TO PayCateg=>thisform.txtFilterString.value
    case thisform.cmbFilterType.value= 1 
         SET FILTER TO PayCateg<=thisform.txtFilterString.value 
endcase
thisform.refresh
на кнопку btnClearFilter прописано
Код: plaintext
1.
SET FILTER TO
thisform.refresh
где-то у формы прописан начальный фильтр (то ли на LOAD то ли на INIT)
SET FILTER TO PayCateg>1 и при этом он работает и глюка не возникает. но как только выставлю юзерский фильтр так по ctrl-end или ctrl-home глючит. Можно установить юзерский фильтр, спокойно подвигаться по гриду PgUP/PgDown или "курсорными стрелочками", короче делать что угодно, вызывать подчиненную форму и тд и тп, главное не жать на "вуду-клавиши", затем снять фильтр (btnClearFilter) - глюка при нажатии "вуду-клавиш" не будет.

я так думаю, что приведенный код ни фига не поможет, Вам бы надо всю форму с базами заслать - тогда другое дело

Да, у грида есть на KeyPress прога
там Do case и 3 case, для значений 13 (Ентер), 27 (искейп) и -6(F7)
на первый случай(13) жмется кнопка, вызывающая подчиненную форму (thisform.btnEdit.Click), по 27 форма уходит в релиз (thisform.release), ну и по ф7 там у меня thisform.txtSearchString.SetFocus (для поиска)
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33024470
kms_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi, СТАС-КО!

Честно говоря, не совсем представляю почему, может не все описано, но возникает такое ощущение, что в какой-то момент твоя форма теряет фокус, может запускается из нее какая-то прога и там узается таблицка у которой в фильтре прописано Set Filter To ThisForm....., а вот это уже получается, что ThisForm используется за пределами формы.
Короче, попробуй сделать так, по идее должно получится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
do case
    case thisform.cmbFilterType.value= 1 
         cMyFilter="PayCateg="+AllTrim(thisform.txtFilterString.value)
    case thisform.cmbFilterType.value= 2 
         cMyFilter="PayCateg>="+AllTrim(thisform.txtFilterString.value)
    case thisform.cmbFilterType.value= 1 
         cMyFilter="PayCateg<="+AllTrim(thisform.txtFilterString.value)
endcase
Set Filter To (cMyFilter)
thisform.refresh
Правда это если thisform.txtFilterString.value текстовая переменная (как я понял исходя из txt в названии), если же нет, соответственно, пользуй Str()
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33024766
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Все правильно. В сообщении об ошибке все сказано!

ThisForm можно использовать только внутри методов формы . А когда ты устанавлвиаешь фильтр с использованием ThisForm , то происходит примерно следующее:

Внутри метода, где осущетсвляется эта установка - все корректно и ошибок не вызывает.

Когда метод завершается и ты пытаешся перейти на любую запись таблицы, на которую наложен фильтр, то FoxPro пытается вычислить значение этого фильтра. В данном случае, предпринимается попытка определить значение thisform.txtFilterString.value, но уже вне метода формы! Именно это и вызывает сообщение об ошибке.

Выходов несколько, но kms_ предложил самый корректный в данном случае - использовать макроподстановку.

Если версия VFP6 и выше, то можно так:

Код: plaintext
1.
2.
LOCAL lcMyFilter
lcMyFilter="PayCateg="+TRANSFORM(thisform.txtFilterString.value)
SET FILTER TO (m.lcMyFilter)
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33026194
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, действительно макро помогло!!! и я приммерно так и понял глюк, а что значит синтаксис m. lcMyFilter?
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33026207
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я понимаю Alias.Field, а m.Variable что значит - не понимаю
СПАСИБО ЗА ПОМОЩЬ!!!
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33026235
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ - при попытке перейти на любую запись - ошибка,
а работала любая навигация, только не "вуду"!
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33026243
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имею в виду PgUP, PgDN, UpArrow, DownArrow, других не знаю
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33026493
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOчто значит синтаксис m. lcMyFilter?
Что означает префикс (буква) "m." перед именем

CTAC-KO2ВладимирМ - при попытке перейти на любую запись - ошибка, а работала любая навигация, только не "вуду"!
Это, скорее, недоразумение. В смысле, что навигация работала. В общем случае - не должна.
...
Рейтинг: 0 / 0
ctrl-end/home в гриде при фильтре дает глюк
    #33029478
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо! с м. разобрался, эта фича может стать и обязательной когда-нить... а мож и нет
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ctrl-end/home в гриде при фильтре дает глюк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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