Функция OBJTOCLIENT()

Возвращает позицию или размер элемента управления или объекта относительно содержащего его объекта Form.

Синтаксис:

OBJTOCLIENT(ObjectName, nPosition)

Параметры:
ObjectName
Задает имя элемента управления или объекта, для которого возвращается его позиция внутри формы.
nPosition
Определяет, какую именно позицию или какой размер элемента управления или объекта внутри Form следует возвратить. В следующей таблице перечислены значения аргумента nPosition и возвращаемые для них значения позиции или размера:

nPositionПозиция или размер
1Top (вверху)
2Left (слева)
3Width (ширина)
4Height (высота)

Результат:
Числовой.

Комментарии:
Функция OBJTOCLIENT( ) возвращает позицию или размер элемента управления или объекта относительно области клиента в содержащем его объекте Form. Например, элемент управления или объект может быть размещен в объекте Page в составе PageFrame, а объект PageFrame располагается внутри Form. Свойства Top, Left, Width и Height возвращают позицию или размер элемента управления или объекта относительно содержащего его объекта Page. Однако с помощью функции OBJTOCLIENT( ) можно определить позицию или размер элемента управления или объекта относительно объекта Form, в который помещен объект Page.
Возвращаемое функцией OBJTOCLIENT( ) значение выражается в пикселях.

Пример:

* В следующем примере функция OBJTOCLIENT( ) используется для
* отображения позиций и размеров двух флажков относительно
* содержащего их объекта Form. Используются также свойства Top, Left,
* Width и Height, отображающие позиции и размеры этих флажков
* относительно объекта PageFrame, в котором они размещены.
* В объект Form вводятся командная кнопка и объект PageFrame. С
* помощью свойства PageCount задается число объектов Page в составе
* PageFrame. Значение свойства Tabs устанавливается равным "истине"
* (.T.), чтобы показать, что в PageFrame есть табуляторы для каждой
* страницы. В каждом объекте Page табуляторы располагаются в
* различных позициях.
* Если щелкнуть флажок, для него выполняется процедура Click. Если
* переключатель установлен, то для отображения его позиции и размера
* относительно PageFrame используются свойства Top, Left, Width и Height, а
* для отображения его позиции и размера относительно Form
* используется функция OBJTOCLIENT( ). Если флажок сброшен, основное
* окно Visual FoxPro очищается.

CLEAR
STORE _DBLCLICK TO gnDblClick  && Save double-click value
STORE 0.05 TO _DBLCLICK  && Make double-click unlikely

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .f.  && Disable the Control menu box

frmMyForm.Move(150,10)  && Move the form

frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Add Command button
frmMyForm.AddObject('pgfPageFrame1','pgfMyPageFrame')  && Add PageFrame
frmMyForm.pgfPageFrame1.Page1.AddObject('chkCheckBox1','chkMyCheckBox1')
frmMyForm.pgfPageFrame1.Page2.AddObject('chkCheckBox2','chkMyCheckBox2')

frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.pgfPageFrame1.Visible =.T.  && PageFrame visible
frmMyForm.pgfPageFrame1.Page1.chkCheckBox1.Visible =.T.
frmMyForm.pgfPageFrame1.Page2.chkCheckBox2.Visible =.T.

frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing

DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
	Caption = '\<Quit'  && Caption on the Command button
	Cancel = .T.  && Default Cancel Command button (Esc)
	Left = 125  && Command button column
	Top = 210  && Command button row
	Height = 25  && Command button height

	PROCEDURE Click
		CLEAR EVENTS  && Stop event processing, close Form
		CLEAR  && Clear main Visual FoxPro window
		STORE gnDblClick TO _DBLCLICK  && Restore double-click value
ENDDEFINE

DEFINE CLASS pgfMyPageFrame AS PageFrame  && Create PageFrame
	Left = 10  && PageFrame  column
	Top = 10  && PageFrame  row
	Height = 175  && PageFrame  height
	Width = 350  && PageFrame  height
	PageCount = 2  && 2 Pages on the PageFrame
	Tabs = .T.  && Tabs visible
ENDDEFINE

DEFINE CLASS chkMyCheckBox1 AS CheckBox  && Create first Check Box
	Top = 0
	Width = 200
	Caption = 'Display Position'

PROCEDURE Click
	DO CASE
		CASE ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Value = 0
			ACTIVATE SCREEN
			CLEAR
		CASE ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Value = 1
			ACTIVATE SCREEN
			CLEAR
			? 'Positions relative'
			? 'to PageFrame:'
			?
			? 'Top: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Top))
			? 'Left: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Left))
			? 'Width: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Width))
			? 'Height: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Height))
			?
			? 'Positions relative'
			? 'to Form:'
			?
			? 'Top: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,1)))
			? 'Left: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,2)))
			? 'Width: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,3)))
			? 'Height: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,4)))
	ENDCASE
ENDDEFINE

DEFINE CLASS chkMyCheckBox2 AS CheckBox  && Create second Check Box
	Top = 30
	Left = 175
	Width = 200
	Caption = 'Display Position'

PROCEDURE CLICK
	DO CASE
		CASE ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Value = 0
			ACTIVATE SCREEN
			CLEAR
		CASE ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Value = 1
			ACTIVATE SCREEN
			CLEAR
			? 'Positions relative'
			? 'to PageFrame:'
			?
			? 'Top: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Top))
			? 'Left: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Left))
			? 'Width: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Width))
			? 'Height: '
			?? ALLTRIM(STR;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Height))
			
			?
			? 'Positions relative'
			? 'to Form:'
			?
			? 'Top: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,1)))
			? 'Left: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,2)))
			? 'Width: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,3)))
			? 'Height: '
			?? ALLTRIM(STR(OBJTOCLIENT;
				(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,4)))
	ENDCASE
ENDDEFINE

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 13.03.2003