Visual DataFlex (Data Access)
Listed below are the questions that we are asked quite often. Before you write us, be sure to check here.

Programming

Programming

The COM Manifest Builder

The problem: using the component as isolated component, so it requires NO registration/calling of regsvr32 on the client machine, no administration privileges required, and so on  

The solution: An isolated application is a process that uses side-by-side private COM (DLL/OCX) components that resides in the application folder and so is not available to any other application. To do this the isolated application must use an application manifest file that contains dependency information about each COM component used by the application. In an isolated application with private COM components, the components will not be replaced when another application installs or uninstalls the same COM components on the machine. This also eliminates versioning conflicts and means that you will not need to register the components with the system by e.g. using the regsvr32.exe program.

Here you can find more information about: "The COM Manifest Builder", By Nils Svedmyr

Thanks to Nils Svedmyr, who provided the note.

SideBySide/Registryfree/COM install of the component

The problem: when using the component as isolated COM, the window is hidden as soon as it lose the focus. Gaining the focus, makes the component to be visible again. 

The solution: It is a manifest problem. The object was not getting properly activated from a DataFlex point of view. The reason is that various flags that tell our runtime what kind of COM object this is, were missing. The fact that it works with a C# is not relevant as we are talking about different focus mechanisms. It worked in the registry because the registry had the right flag settings. Specifically, there are these things called MiscStatus flags. The OLEMISC type describes the values for the MiscStatus flags.

These flags are stored in the registry when the object is registered. You will see this under:

HKEY_CLASSES_ROOT\CLSID\{clsid}\ MiscStatus is 1, and it should be 131473.

This information needs to be in the manifest file, but it is not. This causes the problem. 

The manifest should contain the following: 

<comClass clsid="{clsid}" tlbid="{typelibid}"
	miscStatusContent="recomposeonresize,setclientsitefirst,activatewhenvisible,cantlinkinside,insideout">
</comClass>

The flags that should not be missing are: activatewhenvisible and setclientsitefirst. The clsid is the class identifier for the main object in the component, while typelibid is the identifier of the control's type library.

For instance, the manifest file for exg2antt component may look as follows:

Thanks to Support of Visual DataFlex and Bernhard Ponemayr, from Comtech IT Systeme, Austria, who provided the note and help for syntax of Visual DataFlex programming language.

Copyright 1999-2017 Exontrol. All rights reserved.