powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как узнать абс. адрес объекта?
5 сообщений из 5, страница 1 из 1
Как узнать абс. адрес объекта?
    #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
Как узнать абс. адрес объекта?
    #34390798
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYS(1272)
...
Рейтинг: 0 / 0
Как узнать абс. адрес объекта?
    #34390860
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) Спасибо, теперь подскажите пожалуйста как добыть трубемое имя объекта, т.к. SYS(1272,'cboDocs') не проходит...
...
Рейтинг: 0 / 0
Как узнать абс. адрес объекта?
    #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
Как узнать абс. адрес объекта?
    #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
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как узнать абс. адрес объекта?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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