{ACTIVEX}
Syntax
Arguments
- Width
Numeric. An integer value for the maximum number of characters to display on one line. The actual number displayed may be less because of word wrap.
- Height
Numeric. Optional. Default = 1. The number of rows to display. This may be a fractional number, such as 1.25.
- ObjectName
Pointer. A pointer variable with the following properties.
Description
The ActiveX Xdialog command, its properties, and examples involving ActiveX control events.
The {ActiveX} command displays an ActiveX control on an Xdialog.
Using ActiveX Control Events
The ActiveX control should provide documentation on its events and the appropriate arguments. If this information is lacking, you can place the ActiveX control on an Alpha Anywhere desktop form, which will generate the list of event functions. After placing the ActiveX control on the page, right click on the control and select Events > ActiveXEvent. If the control has any events, you will see a script similar to the following.
function contextmenuaction as v (itemIndex as N) end function function displaychanged as v () end function function documentcomplete as v () end function function onblur as v () end function ...
If you want to write code to respond to any of the ActiveX control's events, here is an example using the Mabry Grid (note the code setting Grid.Events ). In this case the Mabry Grid publishes an event called UnboundReadData.
dim vl as P
vl = local_variables()
dim shared t as P
' The Grid control
dim grid as P
dim grid.object as P
dim grid.class as C
grid.class = "mabry.gridx"
dlg_title = "Budget Data"
' Grid Control Event Handlers
grid.events = <<%code%
Function UnboundReadData as v (nRowIndex as N, pRowData as p)
if t.fetch_goto(nRowIndex + 1) then
for Index = 1 to field_count
fld = t.field_get(Index)
pRowDataIndex-1 = eval("t."+ fld.name_get())
next
end if
End function
%code%
dlg_source = <<%dlg%
{can_exit=close}
{startup=init}
{lf};
{region001}
{stretch=height,width}
{sp}{activex=75,15grid};
{stretch=}
{stickto=right,top}
{endregion001}
{region002};
{sp}<%i=$a5_window_close;O={J=C} {I=1} Close; %18,1.5&Close!close>{sp};
{endregion002}
%dlg%
' Dialog Event Handlers
dlg_event = <<%code%
if a_dlg_button = "close" .or. a_dlg_button = "" then
ui_modeless_dlg_close(dlg_title)
if t.isopen("budget") then
t.close()
end if
end if
if a_dlg_button = "init" then
a_dlg_button = ""
grid.object.DataMode = 1329745493 ' 0x4f424e44 ' mgxUnboundedMode
' populate the headings of the grid
t = table.open("budget")
t.persist()
field_count = t.fields_get()
for i = 1 to field_count
fld = t.field_get(i)
evaluate_template("col = grid.object.Columns.Add(\"" + fld.name_get()+ "\")")
col.EditType = 1 ' text box edit style
col.allowsorting = .t.
if (i <> 1) then ' In this particular case, only the first column is character
col.sorttype = 1 ' ask for a numeric sort
end if
next
grid.object.Views(0).GridLineStyle = 1' mgxSmallDots
grid.object.Views(0).ColumnAutoResize = .t.
grid.object.Views(0).Mode = 5 ' mgxGroupingRowView
'Tell GridX1 how many rows you have in your dataset
grid.object.RowsCount = t.records_get()
grid.object.Refresh()
end if
if a_dlg_button = "AddData" then
a_dlg_button = ""
if GridData.Size()< MasterData.Size()then
dim nRowCount as N
'first we add the row to the dataset
nRowCount = GridData.size()+ 1
GridData.resize(nRowCount)
'set values in the last row in the array
for each Element in GridDataProps
dim Expr as C
Expr = "GridDatanRowCount." + Element + " = MasterDatanRowCount." + Element
evaluate_template(Expr)
next
'Now adjust the RowsCount
grid.object.RowsCount = nRowCount
' If one of the columns is sorted we have to call Refresh method
grid.object.Refresh()
if nRowCount >= MasterData.size()then
dlg_addEnabled = .f.
end if
end if
end if
%code%Limitations
Desktop applications only
See Also