:: Visual Foxpro, Foxpro for DOS
Невидимые объекты иногда не так уж и невидимы
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Всем здравствуйте
За много лет создал не один десяток приложений.
Но в двух из них необъяснимое для меня "чудо":
Некоторые объекты Text, у которых в дизайнере установлено Visible=.f. при запуске и открытии этой формы все-равно видны, точнее видны белые прямоугольники на их месте.
[attachment 29773 ]
и
[attachment 29774 ]
причем 999... - это InputMask (хотя это свойство тоже установлено и у полей в первом примере.
При последующем изменении Visible на .t. и обратно "прямоугольники" "пропадают"
Другие объекты рядом "нормально" невидимы
Магия?



Исправлено 1 раз(а). Последнее : Sandwich, 29.07.18 00:31
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Поскольку это "чудо" легко создать, то оценить без кода, рукотворное ли оно (ваша ошибка), или нет, по скрину могут лишь экстрасенсы.
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Я бы привел код сразу, если бы было что показать. На форме есть две кнопки в событиях Click() одной из стоит
thisform.text43.Visible=.t.
, а другой
thisform.text43.Visible=.f.
Больше ничего.
Пробовал следующее:
менял Enabled , BackColor, DisabledBackColor во всех возможных сочетаниях - результат один, как на скрине
Более того: я не представляю как рукотворно заставить отображаться "место" от невидимого объекта
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Sandwich
Более того: я не представляю как рукотворно заставить отображаться "место" от невидимого объекта

Нам же отсюда не видно, что заставляет отображаться это "место".
Вы считаете, что это делает сам невидимый объект, а я могу предположить, что это другой объект или даже просто некоторый код.

Бывает же так, что после отладки остается некий "забытый мусор", иногда срабатывающий.
То же можно сказать и о ваших классах, на которых основаны объекты. Кто знает, насколько хитрый там код и к каким "глюкам" он может иногда приводить?

Что-то определенное (без гадания) может сказать только тот, кто уже сталкивался с подобным.
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Sandwich
Более того: я не представляю как рукотворно заставить отображаться "место" от невидимого объекта
Тогда пойти от обратного - убирать из этой формы поочерёдно всё до исчезновения глюка. А если он останется в самом предельно урезанном виде (когда на форме уже ничего кроме этих текстбоксов не будет, да и источников данных тоже не будет) - в архив форму, сопутствующие классы и сюда.
P.S. Вообще фокс достаточно чувствителен к глюкам видеокарты - т.е. теоретически это может быть вина конкретного драйвера видео - т.е. обновить его всяко стоит...


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 29.07.18 16:05
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Igor Korolyov
Sandwich
Более того: я не представляю как рукотворно заставить отображаться "место" от невидимого объекта
Тогда пойти от обратного - убирать из этой формы поочерёдно всё до исчезновения глюка. А если он останется в самом предельно урезанном виде (когда на форме уже ничего кроме этих текстбоксов не будет, да и источников данных тоже не будет) - в архив форму, сопутствующие классы и сюда.
P.S. Вообще фокс достаточно чувствителен к глюкам видеокарты - т.е. теоретически это может быть вина конкретного драйвера видео - т.е. обновить его всяко стоит...

Спасибо, попробую.
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Метод поочередного удаления привел к следующему:
На форме остались только эти текстбоксы и один listbox
Все методы формы пустые, кроме Init. В нем написано
thisform.list1.Click
в методе list1.Click стоит
thisform.refresh
если:
1. убираю thisform.refresh - текстбоксы не видимы
2. очищаю у них (или одного из них) inputmask - те текстбоксы, у которых очистил свойство не видимы в не зависимости от того был thisform.refresh или нет.
3. создаю новую "чистую" форму и повторяю все объекты - все работает корректно
4. копирую эти текстбоксы из "старой" формы в новую - опять "чудо"
5. добавляю в старую новые текстбоксы - они работают корректно
Текстбоксы стандартные
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Тогда положите файлы двух вариантов этой формы - с глюком и без - я сравню их на уровне таблиц форм.
Ну, или сделайте это самостоятельно.
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Дело видимо не в самих формах:
Открыл Фокс и сразу запустил новую форму, в которой
Sandwich
4. копирую эти текстбоксы из "старой" формы в новую - опять "чудо"
А "глюка" то и нет.
Запустил приложение, вышел из него - глюк появился в этой новой форме
Значит причина не в самой форме и её объектах.
Ratings: 0 negative/0 positive
Re: Невидимые объекты иногда не так уж и невидимы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Не советую из Init вызывать рефреши и манипулировать фокусом ввода. Форма к тому моменту ещё не видима, а некоторые команды - в частности SetFocus приводят к преждевременному показу этой самой формы. В результате, к примеру, ломается модальность да и так всякие "странности" могут происходить.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Невидимые объекты иногда не так уж и невидимы
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Igor Korolyov
Не советую из Init вызывать рефреши и манипулировать фокусом ввода. Форма к тому моменту ещё не видима, а некоторые команды - в частности SetFocus приводят к преждевременному показу этой самой формы. В результате, к примеру, ломается модальность да и так всякие "странности" могут происходить.
Убрал из Init клик по ListBox и просто продублировал код из ListBox.click в конец Init.
Все стало красиво!
НО! реальный клик по этому ListBox снова отобразил эти "места".
Я решил не мучить ни себя, ни почтенных форумчан и забил большой корявый костыль - нарисовал прямоугольник в цвет формы поверх, точнее даже под этими полями.
Помогло!
Даже программно скрывать его не понадобилось.
Не охота тратить время.
Всем спасибо!
Причем достаточно было "перекрыть" эти поля частично, а не полностью
[attachment 29776 ]



Исправлено 1 раз(а). Последнее : Sandwich, 29.07.18 19:49
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика