ActiveX API questions
You mentioned on another thread OnCustomExpressionBuilder returns a handle to ExpressionBuilderParams but when is this event fired ? I can see there is a UseCustomExpressionBuilder property but not quite sure how this works as I can't see anything in the samples ?
Although there is a lack of documentation for the ActiveX version, there are many articles that explain the component in general. The ActiveX Edition is very close to the VCL edition, it just lacks the means of editing of internal SQL query objects. So, I hope I can shed some light on this by pointing you to read some of the articles.
I. Metadata Container.
MetadataConainer, MetadataDatabases, MetadataDefaultSchemas, MetadataObject, MetadataFieldList, MetadataField, MetadataRelation, MetadataRelationList, MetadataFieldNamesList - are the objects to store metadata extracted from the current database connection.
Brief description of involved classes:
MetadataContainer - collection of MetadataObjects (tables, views, etc). Also holds a connection of MetadataDatabases and MetadataDefaultSchemas.
MetadataObject holds MetadataFieldList (collection of MetadataField objects) and MetadataRelationList (collection of MetadataRelation objects, i.e. foreign keys)
MetadataRelation has two collections of fields: for holding field lists of referred and referring tables (two objects of MetadataFieldNamesList class).
A series of articles about loading metadata in Active Query Builder.
MetadataFilter, MetadataFilterItem - used for partial loading of Metadata. The article about metadata filtration.
II. Query Transformer
QueryTransformer, FilterCondition, FilterConditionJunction, SortedColumn, SortedColumnsList, OutputColumn, OutputColumnsList, SelectedColumn, SelectedColumnsList: read the article about Query Transformer with examples for ActiveX version.
III. ActiveQueryBuilderX options
FieldsListOptions - controls the appearance of the field lists in datasources on the design pane.
FieldsListMarkColumnOptions, FieldsListNameColumnOptions, FieldsListTypeColumnOptions, FieldsListDescriptionColumnOptions - options of the columns of the field lists in datasources on design pane.
LinkOptions - controls the appearance of links between tables
SelectListOptions - options of the Query Building Area grid
TreeOptions - options of the Query Structure Tree on the left
MetadataTreeOptions - options of the Metadata Tree on the right.
Regarding the description of individual properties in *Options property groups: you can find the description for most of them in the documentation for .NET version: these options have much in common in all editions of Active Query Builder.
IV. Query Statistics
QueryStatistics - basic stats about the number of columns, etc in the current SQL statement
StatsSelectedColumn - not quite sure what this is for
The article about Query Statistics.
V. Custom Expression Builder.
When the UseCustomExpressionBuilder property is turned on, the ellipsis button appears in this column while editing its content. By clicking this button, the component fires the OnCustomExpressionBuilder event. The handler for this event should provide the way to edit this column's content and return the result, getting all the information about this event and setting the result SQL expression text using the ExpressionBuilderParams object.
Will you be implementing this functionality in your project? I mean that you'll have to create a dialog to edit SQL expressions with some additional functionality that the user doesn't have using the inline editor.
VI. Other properties
Localizer, Strings: article about localizing Active Query Builder.
SupportedSyntaxes - list of all SQL syntaxes supported by the component (for example, if you want to make a list of them). Values can be applied to the SQLSyntax property.
LoginPrompt - it instructs to show login prompt on connecting to the database, not immediately after setting it to True.
ConnectionTimeout and CommandTimeout - we will check why they are set to zero and let you know.
SyncSQL - this property is obsolete, please don't use it.
BeforeAddDatasourceParams - to be used with OnBeforeAddDatasource - an event that fired before adding a datasource on the design pane.
I don't really think that you will be in need of these events, so I'm wondering, why you have to implement these events in your wrapper?
Let me know if you need any additional information.