:: Архив конференции по VFP до 2005 года
Re: BufferMode - какую выбрать?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, IgorDokukin!

Вроде Владимир писал в своих статьях про это...
Во-первых форма должна быть модальной.

1) Если значение одно, форма это scx и вызывается по
DO FORM ...
- то выбранное значение запоминается в свойство формы, и в её UNLOAD пишется RETURN This.свойство_с_возвращаемым_значением - соответственно к DO FORM дописывается
... TO luRetValue
и в данной переменной оно и будет.

2) Если форма это класс, или scx-форма вызывается как
DO FORM ... NAME loFormRef NOSHOW
То выбор опять-же запоминается в свойстве формы (хотя можно оставить и в свойстве какого-либо объекта)
НО форма принудительно "оставляется в живых" - т.е. в QueryUnload пишем
NODEFAULT
This.Hide()
ну и там где раньше писали ThisForm.Release() тоже пишем ThisForm.Hide()
Соответственно в точке вызова код выглядит как:
loFormRef = CREATEOBEJCT("MyForm")
* или DO FORM ... NAME loFormRef NOSHOW
loFormRef.Show(1) && показываем форму модально
* тут можно обратится к loFormRef.свойство_с_возвращаемым_значением
* или например к loFormRef.какой_то_текстбокс.Value
* ну и когда всё что надо мы от формы уже получили, её тихо мирно прикроем:
loFormRef.Release()

3) Мне нравится иной способ - с интерфейсным объектом (или с объектом-параметром) приведу лишь код, думаю идея из него будет понятна:
* В точке вызова
LOCAL loParameter
loParameter = CreateObject("Custom")
loParameter.AddProperty("nMyProp1", 123)
loParameter.AddProperty("nMyProp2", 456)
loParameter.AddProperty("cMyProp3", "Hello!")
loParameter.AddProperty("nRecNo", RECNO("SomeAlias"))
* тут вызываем форму ЛЮБЫМ способом, и передаём ей loParameter как параметр.
* по закрытии формы имеем в loParameter то что та форма захотела нам вернуть.
* В Init вызываемой формы:
LPARAMETERS toParamObject
* сохраним ссылку, чтоб и из других методов формы к объекту можно было обращаться
This.AddProperty("oParameter", m.toParamObject)
* В любом месте вызванной формы можно обратится к ThisForm.oParameter.nMyProp1 и т.п.
* также можно через AddProperty() добавить ещё свойств объекту-посреднику.
* В общем в эти свойства и пихаем всё что нужно вернуть

Цитата:
Какие средства в Visual Fox 8 гарантируют сохранность данных в таблицах
Нет таких средств. Если питание (или сеть в случае network-хранения таблиц) рубанут как раз в тот момент когда фокс (точнее ОС из своего файлового кэша) производит физическую запись в таблицу, то есть достаточно большой шанс получить повреждение данных. Обычно стараются (с очень разным успехом) минимизировать время этой самой "записи" - для чего в частности используют и буферизацию с транзакциями, и FLUSH FORCE (режим FORCE добавлен в VFP9) - это конечно снижает вероятность сбоя (т.к. уменьшается время в течении которого производится модификация файла - не "сначала поле А, через минуту поле Б, потом ещё поле С" - а "сразу всё из буфера"). но 100% гарантии это конечно не даёт. Надо UPS-ы ставить, сети качественные плести...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: BufferMode - какую выбрать?
IgorDokukin
Автор

Сообщений: 21
Дата регистрации: 21.02.2005
Понял.
Использовал самый простой DO FORM MYFORM ... TO ThisForm..Value
Все работает.
Правда до уровня передачи объекта как параметра еще не дошел, но способ оч.интересный.
Спасибо.

> Надо UPS-ы ставить, сети качественные плести..
UPSы конечно есть - только и пользователей "грамотных" хватает - вырубают питание до выхода из программы
частенько ("люблю таких девочек "). Дошел до того ,что базы открываю только перед самой записью и после сразу отключаю, но это муторно поэтому и вспрашивал (т.к. с буферами ранее не работал).
Ratings: 0 negative/0 positive
Re: BufferMode - какую выбрать?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, IgorDokukin!

Цитата:
UPSы конечно есть - только и пользователей "грамотных" хватает
Пользователей надо учить, потом воспитывать, если не поможет - наказывать. А программными средствами бороться с организационными проблемами бесполезно Можно конечно всяких фенечек понавешать с целью отследить некорректные выходы, и если такое зафиксировано (при очередном запуске) - сразу-же юзеру на экран шлёпать "приказ о лишении премии" Возможно хоть это поможет.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: BufferMode - какую выбрать?
IgorDokukin
Автор

Сообщений: 21
Дата регистрации: 21.02.2005
Тут особо не разгонишся - программа по всей области стоит а удаленного доступа нет вот и приходится выкручивать все.
Да и когда программу хотят за 3 дня получить - вот такая реальность.
Спасибо за советы.
Ratings: 0 negative/0 positive


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

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

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