:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Как из модальной формы, открытой через Show(1) вернуть значение
Дата: 06.11.06 00:51:14 ОтветитьЦитировать

Вопрос:

Я создал класс формы и создаю экземпляр модальной формы командой

  
  LOCAL loForm  
  loForm = CreateObject("MyFormClass")  
  m.loForm.Show(1)

Как из такой формы вернуть значение?

Ответ:

Идея решения принадлежит Вадиму Пирожкову (Piva).

Суть решения сводится к тому, что форма не может быть уничтожена, пока существует хотя бы одна ссылка на эту форму. Эта дополнительная ссылка создается при помощи объектных скобок WITH...ENDWITH.

Создание экземпляра такой формы примет вид:

  
  LOCAL loForm, lvProp1, lvProp2  
  loForm = CreateObject("MyFormClass")  
  WITH m.loForm  
  	.Show(1)  
  	m.lvProp1 = .Text1.Value  
  	m.lvProp2 = .Prop2  
  ENDWITH

Здесь Text1 – это объект, расположенный на форме, а Prop2 – свойство самой формы.

До тех пор, пока не будет закрыта объектная скобка "ENDWITH" форма не может быть удалена. Следовательно, будут доступны для прямого чтения все ее свойства и методы.

Но если форма не может быть удалена, то прямая команда ThisForm.Release() будет проигнорирована или же ее выполнение приведет к различным глюкам.

Чтобы все-таки удалить форму используется другая особенность модальных форм в FoxPro.

Модальной может быть только видимая форма. Как только модальная форма перестает быть видимой, она перестает быть модальной.

Другими словами, закрытие формы осуществляется не одной, а двумя командами:

  
  ThisForm.Hide()  
  ThisForm.Release()

Замечание:

В принципе, можно обойтись и без дополнительной объектной переменной для вызова формы. Примерно так:

  
  LOCAL lvProp1, lvProp2  
  WITH CreateObject("MyFormClass")  
  	.Show(1)  
  	m.lvProp1 = .Text1.Value  
  	m.lvProp2 = .Prop2  
  ENDWITH

Это как Вам покажется удобнее. Надо только не забыть присвоить "внешним" (по отношению к объектной скобке WITH...ENDWITH) переменным значения свойств модальной формы.

Темы, связанные с данной:

Что означает префикс (буква) "m." перед именем
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Form 4853 Владимир Максимов 01.03.05 22:13
  Почему созданный массив или переменную не "видно" в других методах формы 7013 Владимир Максимов 30.03.05 16:37
  Как перехватить нажатие на крестик в правом верхнем углу формы 9002 Владимир Максимов 01.04.05 08:45
  Почему параметры, переданные в форму "видно" только в INIT-формы 5552 Владимир Максимов 22.08.05 19:43
  Как из модальной формы вернуть несколько значений 7516 Владимир Максимов 06.11.06 00:46
  Как из модальной формы, открытой через Show(1) вернуть значение 5377 Владимир Максимов 06.11.06 00:51


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

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

19.10.2019 01:25:22 exec: 0.09
Mem: 1.16 Mb

© 2006 Fox Club 
Яндекс.Метрика