Hi Experts,
Where can I find the documentation about "access string" and how to use it? Is it an obsolete concept in SS4?
In the "DialogItemRsc Structure" section of MicroStation Programmer Guide CHM file, the word "access string" is in the description of the auxInfo field:
Contains additional item-specific information. Currently, this field is used only to override the access string defined in an item resource. This ability enables the item to act as it is defined in the item resource but affect a different application variable.
However, when I searched for "access string" in the CHM, I can only find some text or sample code comment referring to it, but not an instruction to describe what it is. I then looked at a document of old MicroStation version (version 5): http://documentmanagement/lldm01/llisapi.dll/open/101416101
In the old document, I found the following description: An access string defines a program variable to associate with a dialog item. This allows you to change program variables (called settings) from a dialog box without using a hook function. Element placement and manipulation commands will reference these settings. The MDL debugger is ideal for inspecting access string while the application is running. For information on access strings, see "Dialog Box Manager Overview" on page 15-1.
However, I cannot this kind of description in SS4 help doc, so I feel it maybe obsoleted from documentation but still effective in SDK ... just like MDL debugger.
Sui Huang said:Where can I find the documentation about "access string" and how to use it?
Jan's given you a comprehensive answer, so let me explain in a different way.
MicroStation's Dialog Manager was designed (yes, 30 years ago!) to handle data exchange between an application variable and a dialog item. For example, suppose you have an integer variable nCount that is displayed by a text item. How does that variable's value appear in the text item so we can see it?
nCount
With many development tools, the programmer must explicitly copy a variable to the dialog item. For example, with C# we must write:
Form.txtCount.Text = Integer.ToString (nCount);
With MDL, that happens automatically. To enable that mechanism, the following must be true...
We inform the Dialog Manager about our app variables by publishing them. The act of publishing a variable means that we tell the Dialog Manager the variable's name and its address. There is a set of functions for that purpose: mdlDialog_publishXxx.
mdlDialog_publishXxx
We write the name of the variable in our dialog item resource as the access string...
DItem_TextRsc TEXTID_Count = { NOCMD, LCMD, NOSYNONYM, NOHELP, MHELP, NOHOOK, NOARG, 12, "%d", "%d", "", "", NOMASK, TEXT_NOCONCAT, "Count", "nCount" };
When the above conditions are met, then the Dialog Manager handles exchange of data between our app and its dialog boxes automatically.
Sui Huang said:Is it an obsolete concept in SS4?
It remains valid in MicroStation V8i and MicroStation CONNECT. Although the mechanics of the mechanism are cumbersome, it works well. It provides the best way to interact with MicroStation. Once you understand the concepts, it makes dialog boxes easy to use and with less work for the programmer than other technologies.
Regards, Jon Summers LA Solutions