Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как узнать абс. адрес объекта? / 5 сообщений из 5, страница 1 из 1
14.03.2007, 16:08
    #34390776
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать абс. адрес объекта?
Привет!

Кто знает как узнать абсолютный (типа не parent.parent) адрес объекта? Имею в виду начиная от формы или от _screen-a.
К примеру, есть форма (formname), на ней pageframe1 на page3 которого лежит cboDocs и нужно узнать адрес последнего, который получается "formname.pageframe1.page3.cboDocs" или если от _screen-a, то "_screen.formname.pageframe1.page3.cboDocs"

vfp9

спасибо

PS мне пока видиццо тока какой-то цикл на parent.name по макроподстановке, из которого выход либо по ON ERROR, либо по достижению parent.name = " _screen"...
...
Рейтинг: 0 / 0
14.03.2007, 16:16
    #34390798
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать абс. адрес объекта?
SYS(1272)
...
Рейтинг: 0 / 0
14.03.2007, 16:33
    #34390860
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать абс. адрес объекта?
:) Спасибо, теперь подскажите пожалуйста как добыть трубемое имя объекта, т.к. SYS(1272,'cboDocs') не проходит...
...
Рейтинг: 0 / 0
14.03.2007, 17:05
    #34390990
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать абс. адрес объекта?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
* Mode MS-original

PUBLIC oform1

oform1=NEWOBJECT("form1")
oform1.Show
RETURN


	**************************************************
*-- Form:            form1 (d:\vfp9\form1dffff.scx)
*-- ParentClass:     form
*-- BaseClass:       form
*-- Time Stamp:      03/14/07 05:02:14 PM
*
DEFINE CLASS form1 AS form


	DoCreate = .T.
	Caption = "Form1"
	*-- XML Metadata for customizable properties
	_memberdata = ""
	Name = "Form1"


	ADD OBJECT command1 AS commandbutton WITH ;
		Top =  192 , ;
		Left =  192 , ;
		Height =  27 , ;
		Width =  84 , ;
		Caption = "Command1", ;
		Name = "Command1"


	PROCEDURE command1.Click
		messagebox(SYS( 1272 ,this))
	ENDPROC


ENDDEFINE
*
*-- EndDefine: form1
**************************************************
...
Рейтинг: 0 / 0
19.03.2007, 20:13
    #34401319
Игорь2004
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать абс. адрес объекта?
http://www.sql.ru/forum/actualthread.aspx?tid=399447
Как получить в массив информацию обо всех объектах содержащихся на форме, включая абсолютное иия объекта
1) шаг
на форме добавляется свойство
Код: plaintext
paArrayObject( 1 )
2) шаг
на форме добавляется Protected метод RecurseObject
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
** recursion  method
Lparameters toObject, tcObjectName
For Each oObj In toObject.Objects
   If Type("oObj.Objects(1)")=="O"
      Thisform.RecurseObject(oObj, tcObjectName+"."+oObj.Name)
   Else
      Dimension Thisform.paArrayObject(Alen(Thisform.paArrayObject,  1 )+ 1 , Alen(Thisform.paArrayObject,  2 ))
      Thisform.paArrayObject(Alen(Thisform.paArrayObject,  1 ),  1 ) = oObj.Name
      Thisform.paArrayObject(Alen(Thisform.paArrayObject,  1 ),  2 ) = oObj.BaseClass
      Thisform.paArrayObject(Alen(Thisform.paArrayObject,  1 ),  3 ) = oObj.Class
      Thisform.paArrayObject(Alen(Thisform.paArrayObject,  1 ),  4 ) = oObj.Parent.Name
      Thisform.paArrayObject(Alen(Thisform.paArrayObject,  1 ),  5 ) = tcObjectName+"."+oObj.Name
   Endif
Endfor
Return
3) шаг
на форме добавляется метод GetAllObject

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
If Empty(Thisform.paArrayObject( 1 ))
   Local loObject
   loObject = Thisform
   Dimension Thisform.paArrayObject( 1 , 5 )
   Thisform.paArrayObject( 1 , 1 ) = loObject.Name 
   Thisform.paArrayObject( 1 , 2 ) = loObject.BaseClass
   Thisform.paArrayObject( 1 , 3 ) = loObject.Class
   Thisform.paArrayObject( 1 , 4 ) = ""
   Thisform.paArrayObject( 1 , 5 ) = loObject.Name && абсолютное имя объекта

   Thisform.RecurseObject(loObject, loObject.Name) && recursion call of method

   For lnI =  1  To Alen(Thisform.paarrayobject,  1 )
      If Upper(Alltrim(Left(Thisform.paArrayObject(lnI,  5 ), Len(Thisform.Name)))) = Upper(Alltrim(Thisform.Name))
         Thisform.paArrayObject(lnI,  5 ) = "Thisform"+Substr(Thisform.paArrayObject(lnI,  5 ), Len(Thisform.Name)+ 1 )
      Endif
   Endfor
Endif

Данная потребность возникла в связи с тем, что большинство объектов на форме иногда нужно сделать недоступными для изменения, кроме некоторых объектов, причем список объектов доступных для изменения сам может измениться. Поэтому решил написать метод который принимает параметр список объектов, затем устанавливает для них
ReadOnly .F. , Enabled .T. для остальных объектов устанавливает ReadOnly .T., для Combobox , Listbox устанавливает Enabled .F.. Поэтому мне нужен список всех объектов, предполагается что имена объектов уникальны в пределах формы.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как узнать абс. адрес объекта? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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