Возвращает позицию или размер элемента управления или объекта относительно содержащего его объекта Form.
Синтаксис:
OBJTOCLIENT(ObjectName, nPosition)
Параметры:
ObjectName
Задает имя элемента управления или объекта, для которого возвращается его позиция внутри формы.
nPosition
Определяет, какую именно позицию или какой размер элемента управления или объекта внутри Form следует возвратить. В следующей таблице перечислены значения аргумента nPosition и возвращаемые для них значения позиции или размера:
nPosition | Позиция или размер |
---|---|
1 | Top (вверху) |
2 | Left (слева) |
3 | Width (ширина) |
4 | Height (высота) |
Результат:
Числовой.
Комментарии:
Функция 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