Указывает активный элемент управления данного объекта. Недоступно на этапе разработки, доступно только для чтения на этапе выполнения.

Object.ActiveControl.Property[ = Value]

Возврашаемое Значение

Property

Свойство, значение которого следует возвратить или установить.
Value

Текущее или новое значение свойства.

Комментарии

Применимо для: Container Object | Form Object | Page Object | _SCREEN | ToolBar Object

Данное свойство недоступно, если все элементы управления указанного объекта невидимы или недоступны.

Если объект активен, свойство ActiveControl указывает элемент управления, который в данный момент находится в фокусе. Если объект не активен, возникает ошибка.

Пример

В следующем примере демонстрируется использование свойство ActiveControl, чтобы показать, на каком элементе Формы находиться фокус. Однако, так как элемент управления Grid является контейнером, требуется дополнительный код, чтобы определить текущий активный элемент управления в сетке.

  Копировать Код
m.cTalk=SET("TALK")
SET TALK OFF

PUBLIC oTlb
oTlb = NEWOBJECT("tlbDemo")
oTlb.SHOW

PUBLIC oFrmDemo
oFrmDemo=NEWOBJECT("frmDemo")
oFrmDemo.SHOW

READ EVENTS

RELEASE oTlb
RELEASE oFrmDemo
SET TALK &cTalk

RETURN

DEFINE CLASS tlbDemo AS TOOLBAR

    HEIGHT = 31
    LEFT = 30
    TOP = 30
    WIDTH = 149
    NAME = "tlbDemo"
    CONTROLBOX = .F.

    ADD OBJECT cmdShowControl AS COMMANDBUTTON WITH ;
        TOP = 5, ;
        LEFT = 5, ;
        HEIGHT = 22, ;
        WIDTH = 100, ;
        CAPTION = "ActiveControl?", ;
        NAME = "cmdShowControl"

    ADD OBJECT sepSeparator1 AS SEPARATOR WITH ;
        TOP = 5, ;
        LEFT = 80, ;
        HEIGHT = 0, ;
        WIDTH = 0, ;
        NAME = "sepSeparator1"

    ADD OBJECT cmdExit AS COMMANDBUTTON WITH ;
        TOP = 5, ;
        LEFT = 80, ;
        HEIGHT = 22, ;
        WIDTH = 34, ;
        CAPTION = "Exit", ;
        NAME = "cmdExit"

    PROCEDURE cmdShowControl.CLICK
        DO ShowControl
    ENDPROC

    PROCEDURE cmdExit.CLICK
        CLEAR EVENTS
    ENDPROC

ENDDEFINE

DEFINE CLASS frmDemo AS FORM

    DOCREATE = .T.
    CAPTION = "Demo Form"
    NAME = "frmDemo"
    LEFT = 60
    TOP = 100

    ADD OBJECT cmdClose AS COMMANDBUTTON WITH ;
        TOP = 200, ;
        LEFT = 264, ;
        HEIGHT = 27, ;
        WIDTH = 84, ;
        CANCEL = .T., ;
        CAPTION = "Close", ;
        DEFAULT = .T., ;
        TABINDEX = 4, ;
        NAME = "cmdClose"

    ADD OBJECT grdNames AS GRID WITH ;
        COLUMNCOUNT = 2, ;
        DELETEMARK = .F., ;
        HEIGHT = 128, ;
        LEFT = 12, ;
        PANEL = 1, ;
        RECORDSOURCE = "names", ;
        SPLITBAR = .F., ;
        TABINDEX = 3, ;
        TOP = 48, ;
        WIDTH = 344, ;
        NAME = "grdNames", ;
        Column1.CONTROLSOURCE = "names.cname", ;
        Column1.WIDTH = 222, ;
        Column1.NAME = "Column1", ;
        Column2.CONTROLSOURCE = "names.nvalue", ;
        Column2.NAME = "Column2"

    ADD OBJECT txtName AS TEXTBOX WITH ;
        CONTROLSOURCE = "names.cname", ;
        HEIGHT = 24, ;
        LEFT = 56, ;
        TABINDEX = 2, ;
        TOP = 12, ;
        WIDTH = 125, ;
        NAME = "txtName"

    ADD OBJECT lblNameLabel AS LABEL WITH ;
        CAPTION = "Name:", ;
        HEIGHT = 17, ;
        LEFT = 16, ;
        TOP = 16, ;
        WIDTH = 40, ;
        TABINDEX = 1, ;
        NAME = "lblNameLabel"

    PROCEDURE LOAD
        CREATE CURSOR names (cname C(40), nvalue N(19,2))
        INSERT INTO names VALUES('Thomas',12.5)
        INSERT INTO names VALUES('Jerry',18.2)
        INSERT INTO names VALUES('Andrew',9.2)
        GO TOP
    ENDPROC

    PROCEDURE INIT
        THIS.grdNames.Column1.Header1.CAPTION = "Name"

        WITH THIS.grdNames.Column1.Text1
            .BORDERSTYLE = 0
            .MARGIN = 0
        ENDWITH

        THIS.grdNames.Column2.Header1.CAPTION = "Value"
        WITH THIS.grdNames.Column2.Text1
            .BORDERSTYLE = 0
            .MARGIN = 0
        ENDWITH

    ENDPROC

    PROCEDURE cmdClose.CLICK
        THISFORM.RELEASE
    ENDPROC

    PROCEDURE grdNames.AFTERROWCOLCHANGE
        LPARAMETERS nColIndex
        THISFORM.REFRESH
    ENDPROC

    PROCEDURE txtName.VALID
        THISFORM.grdnames.REFRESH
    ENDPROC
    
ENDDEFINE

PROCEDURE ShowControl
IF TYPE("_Screen.ActiveForm.ActiveControl")=="O"
    LOCAL loActiveControl
    m.loActiveControl = _SCREEN.ACTIVEFORM.ACTIVECONTROL
    IF m.loActiveControl.BASECLASS = "Grid"
        m.loActiveControl = ;
            EVALUATE("m.loActiveControl.Columns(m.loActiveControl.ActiveColumn)." + ;
            m.loActiveControl.COLUMNS(m.loActiveControl.ACTIVECOLUMN).CURRENTCONTROL)
    ENDIF
    m.cObjHierarchy=UPPER(SYS(1272,m.loActiveControl))
    WAIT WINDOW AT 4,30 "_SCREEN.ActiveForm.ActiveControl = "+m.cObjHierarchy NOWAIT
ELSE
    WAIT WINDOW AT 4,30 "There is no ActiveControl; there is no ActiveForm" NOWAIT
ENDIF
ENDPROC

См. Также

Прочие Ресурсы

Перевод выполнен VF