It is strongly recommended that you let LANSA define your attributes for you when defining components as ActiveX.
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_FORM) Clientheight(306) Clientwidth(492)
Define_Pty Name(Property) Get(*auto #std_text)
Define_Evt Name(Text_Changed)
Define_Map For(*input) Class(#Std_text) Name(#Text)
Mthroutine Name(Method_1)
Define_Map For(*input) Class(#Std_text) Name(#Text)
Define_Map For(*Result) Class(#Std_text) Name(#Result)
Endroutine
End_Com
The form above is required to be made available as an ActiveX control. From the Edit menu, select the Set ActiveX Attributes menu option. The result will be similar to the following.
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_FORM) Clientheight(306) Clientwidth(492)
Attribute Class(#PRIM_ATTR.AX_TYPELIB) Guid('{0BA92712-162E-48CB-AF41-7087EA05BD5E}') Typelibname('LANSA_AAA_LIB')
Attribute Class(#PRIM_ATTR.AX_CLASS) Guid('{ADC02BD2-C249-48B1-A0B1-30900707B32C}') Progid('LANSA.AAA')
Attribute Class(#PRIM_ATTR.AX_IN_INTERFACE) Guid('{5A2034F3-2E84-4475-A90E-B6857E62C892}') Basedispid(0)
Attribute Class(#PRIM_ATTR.AX_EVT_INTERFACE) Guid('{58DACA90-A2D7-48F9-B459-E56DBFE9E810}') Basedispid(0)
Define_Pty Name(Property) Get(*auto #std_text)
Attribute Class(#PRIM_ATTR.AX_IN_MEMBER) Dispid(0) Name('Property')
Define_Evt Name(Text_Changed)
Attribute Class(#PRIM_ATTR.AX_EVT_MEMBER) Dispid(0) Name('Text_Changed')
Define_Map For(*input) Class(#Std_text) Name(#Text)
Mthroutine Name(Method_1)
Attribute Class(#PRIM_ATTR.AX_IN_MEMBER) Dispid(1) Name('Method_1')
Define_Map For(*input) Class(#Std_text) Name(#Text)
Define_Map For(*Result) Class(#Std_text) Name(#Result)
Endroutine
End_Com
Attribute statements are inserted for the component and each of the features (properties, events and methods) defined within the source.