The MicroStation Development Library (MDL) and MicroStationAPI provide APIs for developers wanting to create custom applications for MicroStation® from Bentley Systems. We create a MicroStation application as a DLL, written using C++ and built with the Microsoft C++ compiler and linker provided with Visual Studio.
When editing your source code, you can choose whether to use Microsoft Visual Studio, Microsoft Visual Studio Code, or one of your favourite text editors.
When building your app, you can use Visual Studio or the Bentley Systems make (bmake) tools.
This article describes the DataSheet example project.
DataSheet is written using C++ and the
Microsoft Visual C compiler and linker.
It is built using the Bentley Systems
make tool bmake,
and includes a bmake rule file datasheet.mke
.
DataSheet demonstrates several aspects of C++ programming for MicroStation …
Much of the internal mechanism of DataSheet involves creating and manipulating
ListModel
s.
It provides practical answers to many questions that you may have about the
mdlListModel_api
.
Questions about ListModel
s sometimes appear on the
MicroStation Programming Forum.
For answers to those questions, visit our
ListModels page.
Mark Anderson — now, alas, no longer with Bentley Systems — wrote the original
DataSheet example when MicroStation V8 was young.
His goal was to show how to use a ListBox
to display a ListModel
's contents in a dialog box,
and how to create pop-up editors to modify the ListModel
.
We have taken this example a step further, and in the process ported DataSheet to MicroStation CONNECT
using the MicroStationAPI and C++.
We show how to assign a ListCell
editor to a ListModel
.
A cell editor provides an pop-up user input device, such as a text box, combo box or MicroStation ColorChooser.
The editor appears automatically when a user clicks on a cell in the ListBox
.
When the user finishes editing — tabs out or presses return — the editor is destroyed.
We also show how to display and modify a colour in a ListBox
cell.
The pop-up ColorChooser
item lets a user choose a colour in a way that is
familiar to MicroStation users..
DataSheet displays a ListBox with six columns.
Each column uses a different cell editor.
A cell editor is activated when a user
clicks on a cell in the ListBox.
The cell editors are set when the dialog first opens,
driven by the ListBox _OnCreate
event.
The simple text editor is a MicroStation dialog text item. Like the other cell editors, it activates when a user clicks a cell in the first column.
The _OnInit
event handler copies the text currently in ListCell
into the text item,
where the user can edit it.
When the user finishes, the _OnQueueCommand
handler copies the content of the text item
into the ListCell
.
The ComboBox text editor provides the user with a predetermined list of text.
Like the other cell editors, it activates when a user clicks a cell in the second column.
User selects an item in the ComboBox list, which is copied to the ListCell
by the
_OnQueueCommand
handler.
The Boolean editor provides the user with binary choice.
The ListCell
displays a raster icon rather than any text.
Like the other cell editors, it activates when a user clicks a cell in the third column.
The user choice sets an internal integer value in the ListCell
,
which determines what icon will be displayed.
The colour editor provides the user with a palette of colours,
in the form of the familiar MicroStation Color Chooser.
The ListCell
displays no text, but instead the foreground ListCell
colour is modified.
Like the other cell editors, it activates when a user clicks a cell in the fourth column.
When user clicks a cell, the Colour Chooser is displayed.
The Colour Chooser is owned by a Container,
so the coding is a little more complex than the other hook classes.
The Level List editor is a ComboBox that displays a list of MicroStation level names.
Like the other cell editors, it activates when a user clicks a cell in the fifth column.
When it opens, the code attempts to match the current ListCell
content with a level name.
When it closes, the current level name is copied to the ListCell
display text.
The Row-Specific editor is a ComboBox that displays a list of text.
The text is specific to the row that user clicked in the DataSheet ListBox.
That is, depending on the ListBox row, the ComboBox will present a different list.
Like the other cell editors, it activates when a user clicks a cell in the sixth column.
When it closes, the current ComboBox text is copied to the ListCell
display text.
You can download the DataSheet Project.
DataSheet is written using C++ and the
Microsoft Visual C compiler and linker.
It is built using the Bentley Systems
make tool bmake,
and includes a bmake rule file datasheet.mke
.
Return to MicroStationAPI articles index.
Post questions about C++ and the MicroStationAPI to the MicroStation Programming Forum.