Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Форма не уничтожается Thisform.Release не срабатывает / 9 сообщений из 9, страница 1 из 1
13.10.2004, 12:18
    #32735895
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
в форме в методе Инит написано такое

SELECT OTHERPAY
SET DELETED ON
SET FILTER TO ab_code=abonents.ab_code
COUNT TO z
IF z=0
=MESSAGEBOX("Записей нет",0)
SET FILTER TO
Thisform.Release
ELSE
GO top
ENDIF

но при исполнении я получаю месагу что записей нет и после этого получаю форму, пустую, без записей... а Thisform.Release не работает
кроме того, если записи есть, то после в гриде я получаю одну и ту же запись очень много раз подряд
...
Рейтинг: 0 / 0
13.10.2004, 12:28
    #32735950
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
CTAC-KOв форме в методе Инит написано такое

SELECT OTHERPAY
SET DELETED ON
SET FILTER TO ab_code=abonents.ab_code
COUNT TO z
IF z=0
=MESSAGEBOX("Записей нет",0)
SET FILTER TO
Thisform.Release
ELSE
GO top
ENDIF

но при исполнении я получаю месагу что записей нет и после этого получаю форму, пустую, без записей... а Thisform.Release не работает
кроме того, если записи есть, то после в гриде я получаю одну и ту же запись очень много раз подряд

Зачем это делать в Init формы? Может быть проделать все эти манипуляции до попытки загрузки формы: в вызывающей программе/родительской форме?
Примерно так:
* В родительской форме при анализе ввода пользователя/ в вызывающей программе
* Считается, что дочерняя форма еще не создана/нет ее на экране
SELECT OTHERPAY
SET DELETED ON
SET FILTER TO ab_code=abonents.ab_code
COUNT TO z
IF z=0
=MESSAGEBOX("Sorry!!!"+chr(13)+"Записей нет!",0)
SET FILTER TO
ELSE
GO top
do form form1
ENDIF

* В методе Unload вызваемой (дочерней) формы
Thisform.Release
...
Рейтинг: 0 / 0
13.10.2004, 12:39
    #32735989
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
Если в методе INIT или LOAD формы дать команду

RETURN .F.

то загрузки формы не произойдет
...
Рейтинг: 0 / 0
13.10.2004, 12:58
    #32736058
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
Во!
Ретурн Фальш работает, хотя это уже как бы через жэ

а иначе не хочет, видать из-за того, что форма еще как-бы не существует, чтоли. Если я вписывал ту прогу в Активацию, то форма релизилась, но это происходило уже после ее появления.
...
Рейтинг: 0 / 0
13.10.2004, 13:01
    #32736069
AlikWishin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
Попробуй перекинуть в Show
...
Рейтинг: 0 / 0
14.10.2004, 02:42
    #32737330
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
2 CTAC-KO

Через Жэ - это писать в Init Thisform.Release() А RETURN .F. правильный,
красивый и документированный способ. Кроме того COUNT TO имеет опцию FOR,
так что и SET FILTER для этого - это тоже из разряда извращений :(
И вообще SET FILTER для целей показа данных (особенно в гриде) есть
нехорошо.

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
14.10.2004, 11:05
    #32737758
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
А по-Вашему выходит, что из базы, где лежит куча записей, относящихся по коду к разным абонентам, мне не фильтруя по коду нужно показывать записи, относящиеся к данному абоненту, а как-нить по-другому? Например, создать ескуел-запрос, там, или все скопировать по условию в отдельную базу, и ее гридом показывать? А зачем такие сложности? Отфильтровал, подсчитал сколько, если 1 или больше - то в грид, а там по фильтру покажет только то, что надо. Или надо сначала, подсчитать по count for, а уже тогда если больше=1, то ставить фильтр?
Может Return .f. это и документированный способ (хотя в хелпах я по этому вопросу ничего не нашел в отношении к форме, ни в пропертях, ни в методах, ни в евентсах), но ежели вижуал фокс это система событий/методов над объектами, то разве Return .f. - это метод? Это скорее бэкдор, аварийный выход, типа exit для loop вроде for/endfor
...
Рейтинг: 0 / 0
14.10.2004, 11:16
    #32737787
AlikWishin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
2 СТАС-КО

Расмотри такой вариант:

Если у тебя в твоей базе нет явных связей их можно создать с помощью SET RELATION и проверять релятивные базы по полю с помощью команды EMPTY()

Размести на форме список твоих плательшиков хотябы в листбоксе или выбырай из справочника и помещай в текстбокс, а твой грид ниже. А через InteractiveChange обновляй свой грид.
...
Рейтинг: 0 / 0
15.10.2004, 04:00
    #32739519
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма не уничтожается Thisform.Release не срабатывает
2 CTAC-KO

Да, я предпочитаю работать с представлениями и тому есть масса причин. А
сочетание фильтра и грида а также релейшена и грида - это вообще
отвратительное сочетание.
Насчёт предотвращения создания формы - из хелпа по Init.
To prevent a control from being created, return false (.F.) from the
Init event. The Destroy event will not be triggered.
Тебе надо чтобы форма создалась а потом закрылась (моргнув естественно на
экране), или чтобы она НЕ создалась? О красоте той или иной конструкции
спорить глупо - она есть и всё тут.

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Форма не уничтожается Thisform.Release не срабатывает / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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