Определить объект и его форму (Thisform) под With. Решение, а не вопрос

Здесь решение, а не вопрос. Вдруг кому-то пригодится.
Итак, вызов функции (prg), выше кот. стоит With Something
loForm = CREATEOBJECT("Test")
loForm.VISIBLE = .T.
DEFINE CLASS Test AS FORM
ADD OBJECT LabelTest AS LABEL
NAME='FormTest'
FUNCTION INIT
LOCAL loForm, loThis
THIS.VISIBLE = .T.
WITH THIS
m.loThis =GetWithObj()
m.loForm = ObjForm(m.loThis)
MESSAGEBOX( m.loThis.NAME,'1. Объект под With')
MESSAGEBOX( m.loForm.NAME,'1. Форма объекта под With')
ENDWITH
WITH THIS.LabelTest
m.loThis =GetWithObj()
m.loForm = ObjForm(m.loThis)
MESSAGEBOX( m.loThis.NAME,'2. Объект под With')
MESSAGEBOX( m.loForm.NAME,'2. Форма объекта под With')
ENDWITH
ENDDEFINE
*
* Ссылка на объект, заданный WITH
*
FUNCTION GetWithObj
RETURN IIF(TYPE('.Parent') = 'U', .OBJECTS(1).PARENT, EVALUATE('.Parent.' + .NAME))
*
* Для заданого объекта формы объект формы
*
FUNCTION ObjForm
LPARAMETERS loObj
LOCAL lnLine
IF TYPE('loObj.Name')#'C' OR UPPER(m.loObj.BASECLASS)='FORM'
RETURN m.loObj
ENDIF
FOR m.lnLine=1 TO 20
IF TYPE('loObj.PARENT')='U'
RETU m.loObj
ENDIF
m.loObj=m.loObj.PARENT
IF UPPER(m.loObj.BASECLASS)='FORM'
EXIT
ENDIF
NEXT
RETURN m.loObj

0

Автор публикации

Пользователи не найдены
Оставить комментарий
Авторизация
*
*
Генерация пароля