MS Word Reports

BDM can generate MS Word (.docx) reports for the deals in the current folder, and test reports for the current deal. A set of standard report formats is provided, but the powerful report format manager can be used to create custom reports, or to copy a built-in one and edit the copy. The built-in reports cannot be edited directly.

The available reports are shown on drop-downs in the Folder and Deals menus. One of the reports can be set as the default, to be generated for the current folder with the Ctrl-F10 shortcut, and as a test report for the current deal with the F10 shortcut.

The Reports icon on the folder menu and the Test Reports icon on the deals menu are drop-downs that display a list of the available report formats for the user to select from. The formats are listed in the order set in Report Management, and this incorporates a single level of organization by prefixing the name with a category followed by | (the ‘pipe’ character, which is normally Shift-\ on UK keyboards). BDM automatically organizes reports into their categories. For instance, there is a category in the built-in reports called ‘Exercise’, with two reports called ‘Questions’ and ‘Answers’.

Report Management

Report formats are managed from a separate window loaded from the Report Management button on the Settings tab.

Report management form

There are options to edit, duplicate, delete or export the selected report format, and to create a new one or import one. The standard reports are shown in italics, and the default report in bold. You can also change the display order, though you cannot mix the standard and customs reports, which are shown separately on the main window drop-down menus.

You can also generate test reports directly from the management form, and these are always saved in a standard temporary location and opened.

The form shows a description for each report, which the user can set for custom reports after enabling the description panel by double-clicking it.

Editing a Report Format

The selected report format can be edited with the Edit button. This brings up the report editing dialogue where you control the details of the report. You specify general report properties such as page size, layout properties such as number of columns, and precise details of what elements of the deals are shown and how they are formatted.

This is so flexible that you can produce reports as varied as Curtain Cards or Hand Commentaries, both of which are included in the standard supplied set.

Report editor form

Report Format Structure

A report format consists of a hierarchical tree of items, each with properties that the user can set. A new report format is pre-populated with a single root Report item, containing a single child Deal item. The user adds child items to the Deal item. Most of the item types that can be added to the Deal item correspond to properties of the deal, such as summary (title), dealer, contract. These cannot contain other items, but there are also table structure items that can contain other items.

A child item is added by selecting its parent and clicking the item type on the left-hand menu. The menu only enables types that are valid children of the selected type. An item is deleted by selecting it and clicking the delete icon on the left menu. All the deleted item’s descendents are deleted as well. The delete icon is only enabled if it is valid to delete the selected item. An item is moved by dragging it to its new position amongst its siblings, or to a parent table cell.

Many of the item properties will be familiar to anyone who has seen a Word document.

Common Properties

Some properties are common to all items:

  • Paragraph: A collection of paragraph properties corresponding to MS Word paragraph properties, such as alignment and indentation.
  • FontAdjustment: Determines the font used for the main text of the item. See below.
  • SuitSymbolRepresentation: The way that suit symbols are represented.
    • Symbol: Use characters from the standard Symbol typeface in colour. Ensure the derived suit symbol font has that typeface when using this setting. You normally need the same font size as the derived font.
    • Alphabetic: Use the S, H, D, C characters from the main font in monochrome. (The derived suit symbol font is not used.)
    • Outline: Use the derived suit symbol font to display Unicode card suit symbols (from the Miscellaneous Symbols block) in monochrome. The black suits use the filled versions and the red suits use the outline versions. Be warned that support for Unicode outline heart (U+2661 White Heart Suit) is very poor. In Windows 10 the best supplied typeface is Yu Gothic UI. In Windows 7 the best typeface is Meiryo UI.
    • Red: Use the derived suit symbol font to display Unicode card suit symbols (from the Miscellaneous Symbols block) in colour. Filled versions are used for all suits. Be warned that support for Unicode suits is patchy. In Windows 10 a good supplied typeface is Yu Gothic UI. In Windows 7 a good typeface is Meiryo UI.
  • SuitSymbolFontAdjustment: Determines the font use when SuitSymbolRepresentation is Outline or Red. See below. Also see the warnings above.
  • IsOptional: Only output this item (and descendents) for deals that have Optional output set.

The Paragraph and SuitSymbolRepresentation properties are in category called Heritable. This means that if an item leaves the property unchanged, with its default value, it will inherit the value of its parent.

Some properties are common to multiple items types, but not all:

  • Heading: Text to display as a heading for the item. Only displayed if the Title text and the value for the item in the deal are both non-empty.
  • HeadingFontAdjustment: Determines the font to use for the item heading when displayed. See below.
  • HeadingParagraph: Paragraph properties for the item heading when displayed. Any attributes left to default will derive their value from the parent’s Paragraph property. (Since the parent won’t have a HeadingParagraph property.)
  • FormatString (and similar): A [C#] format string. Parameters are numbered from zero and are specific to the item type. They are defined in the sections below. Parameters are used in the format string with {n} where n is the parameter number. For instance “{0}”.
  • InsertParagraphBefore: For item types that render as Word tables, this specifies whether a paragraph is inserted before the table. This is useful to avoid tables running into each other without adding a CustomText item.

Special Note on Fonts

The fonts used in a report are set indirectly with ‘font adjustment’ properties. A font adjustment specifies adjustments to any combination of the size, the style and the typeface.

The font adjustments combine with a form of inheritance to make it easy to set and maintain the report fonts in a quick and concise way.

  • The font used for the main body text of an output item is derived by applying the FontAdjustment property to the parent’s derived font.
  • Similarly the suit symbol font used for suit symbols is derived by applying the SuitSymbolFontAdjustment property to the parent’s derived suit symbol font.
  • The heading font used for item headings is derived by first applying the BaseHeadingFontAdjustment property of the root Report to the item’s font, and then applying the item’s HeadingFontAdjustment property.

The root Report does not have a parent, and the following rules apply:

  • Its FontAdjustment property is applied to a default font of Calibri 9pt Regular.
  • Its SuitSymbolFontAdjustment property is applied to its derived font, and its default value is a family of Symbol.
  • In addition, the default value of the its BaseHeadingFontAdjustment property is a style of bold.

The derived fonts are shown read-only in the property grids.

See MS Word Report Tips.


The Report item cannot be deleted and always contains only a single Deal item. There can only be a single Report item and its properties relate to the whole report:

  • Name: The name of the report format. This is used in the report list, and in the menu drop-downs.
  • ColumnCount: The number of vertical columns for the layout of the deals.
  • GenerateTitlePage: Specifies that a title page should be generated for the report. The user will likely still need to edit it.
  • Title: Title text to be included in the report title page instead of the report name.
  • BaseHeadingFontAdjustment: Determines the font to use for descendent’s heading when used. See above.
  • Page properties, including
    • BookFold: Word’s bookfold feature, designed for automatic arrangement of pages for folding duplex-printed sheets into a booklet.
    • Gutter: Page gutter in 1440ths of an inch.
    • PageMargins: Page margins in 1440ths of an inch.
    • PageOrientation: The layout orientation of the printed page. For bookfold layout, this must be Portrait. (Word does not support bookfold layout with a printed page orientation of Landscape, but many print drivers do. See MS Word Reporting Tips.)
    • PageSize: One of four preset physical sheet sizes: A4, A3, Letter, Half Letter.


There can only be one Deal item and it is the single child item of the Report item. It cannot be deleted. The properties relate to general aspects of how each deal is rendered:

  • SeparateColumn: True to start a new column (or page) for each deal.


The board number.

  • FormatString: Parameter 0 is the board number. For instance “Board {0}”.


The title text.

  • FormatString: Parameter 0 is the entire title text.


The dealer.

  • FormatString: Parameter 0 is the single-character dealer. For instance “Dealer {0}”.


The vulnerability.

  • FormatString: Parameter 0 is the vulnerability text. For instance “Vulnerability {0}”.


A table representation of the cards. There is some control over which hands are displayed, and the table can optionally include HCPs. The board number, dealer and vulnerability can also be included be specifying a format string, as described above. Use an empty format string to suppress the display of each.

  • ShowAllHands: If true, then all hands are considered. If false, only hands set as shown for the deal are considered. Considered hands are then displayed if not excluded by AlwaysExclude.
  • AlwaysExclude: Specifies hand positions that are always excluded.
  • BoardNumberFormatString: Parameter 0 is the board number. For instance “Board {0}”.
  • DealerFormatString: Parameter 0 is the single-character dealer. For instance “Dealer {0}”.
  • VulnerabilityFormatString: Parameter 0 is the vulnerability text. For instance “Vuln {0}”.
  • ShowHcps: Specifies whether HCPs are shown.
  • ClothColour: The colour of the central ‘felt’.


The contract.

  • FormatString: Parameter 0 is the contract text. Parameter 1 is the declarer text. For instance “Contract: {0} by {1}”
  • FullNameOfDeclarer: Specifies whether to use full text for the declarer (if used in the format string), or just a single character.


A table showing the bidding for the deal.

  • Justification: Horizontal justification of the whole table within the column/page margins.


The lead card.

  • FormatString: Parameter 0 is lead card text. For instance “Lead: {0}”.


The lead note.

  • FormatString: Parameter 0 is the full lead note text.


The intro text.

  • FormatString: Parameter 0 is the full intro text.


The analysis text.

  • FormatString: Parameter 0 is the full analysis text.


The source text.

  • FormatString: Parameter 0 is the full source text.


A paragraph of custom text.

  • Text: The custom text to display. Leave empty to display an empty paragraph.
  • WithColumnBreak: Whether to include a column break for the paragraph.


Custom XML to be inserted in the internal Open XML of the Word document. Don’t use this unless you really know what you are doing.

  • Xml: The custom XML to insert.


A table of the makable contracts and optionally the par results. The entire item is omitted for deals with incomplete hands. The par results are always omitted for deals with no vulnerability specified.

  • ShowOptimumResults: Whether to include par results. They are only displayed for deals with vulnerability specified.
  • ShowTricks: Whether to show makable tricks or makable contract levels.
  • HeaderRowHasDeclarers: Whether to use declarers for the horizontal header or contract denominations.
  • ShowGridLines: Whether to include inner grid lines.
  • Justification: The horizontal alignment for the entire table within the column/page margins.


The cards in the single specified hand. (Paragraphs are used without a Word table.) A (bold) heading paragraph can optionally be specified using a format string. (See above.) Use an empty string to suppress the header.

  • TablePosition: The table position of the hand to display.
  • HcpFormatString: Parameter 0 is the HCP count. Parameter 1 is the full table position text. For instance “{1} (HCP {0})”.


Designed to output each hand as large as possible on a single sheet, with optional detail in a small header. The report will normally have landscape page orientation, and you will normally adjust the LargeFont and LargeSuitSymbolFont to be as large as possible. For instance Yu Gothic UI 93pt Regular.

  • AlwaysExclude: Hands to always exclude.
  • LargeFont: The large font to use for the card ranks.
  • LargeParagraph: The paragraph attributes to use for the large suit lines.
  • LargeSuitSymbolFont: The large font to use for the card suit symbols.
  • ShowAllHands: Whether to output all hands (that are not excluded), or just the shown hands.
  • BoardNumberFormatString: Parameter 0 is the board number. Parameter 1 to the player position. For instance “Board: {0} {1}”
  • ContractNumberFormatString: Parameter 0 is the contract text. Parameter 1 to the declarer. For instance “Contract: {0} by {1}”.
  • DealerNumberFormatString: Parameter 0 is the dealer. For instance “Dealer: {0}”.
  • HcpNumberFormatString: Parameter 0 is the HCP count. For instance “HCPs: {0}”.
  • VulnerabilityNumberFormatString: Parameter 0 is the vulnerability. For instance “Vuln: {0}”.


Use the Table, Row and Cell items to build a Word table where the Cell items can contain other items (including inner Table items). Some attempt is made to maintain the same number of cells in each row. Adding or deleting a cell to a row adds or deletes an entire column. That is it adds or deletes corresponding items to all rows. Adding an additional row automatically adds the correct number of cells.

If you drag cells between rows (or drag rows between tables), make sure you end up with the same number of cells in all rows of each table. Do not compromise the rectangular structures.

  • Borders: Specifies which (single thin) outer table borders are displayed. See below for quick setting.
  • Alignment: The horizontal alignment for the entire table within the column/page margins.
  • Width: The horizontal size type specification for the table as a whole. The SizeType values are as follows:
    • AutoSize: Width determined by that of the columns.
    • Absolute: Fixed width determined by the Width sub-property in millimetres.
    • Percent: Width determined by the Width sub-property as a percentage within the column/page margins.
  • ColumnStyles: A separate dialogue with a column style for each column in the table. Each style is like the table Width property. Do not add column styles using the dialogue. They are created automatically to match the number of cells in each row.

Deleting a Table item deletes all its descendents.


  • Borders: Specifies which (single thin) row borders are displayed. See below for quick setting.
  • CantSplit: Specifies whether the row can be split across column/page boundaries. This doesn’t stop the table as a whole from being split.

Deleting a Row item deletes all its descendents.


  • Borders: Specifies which (single thin) cell borders are displayed. See below for quick setting.

Deleting a Cell item deletes the entire column. That is it deletes corresponding Cell items from all Row items in the table, and all their descendents.

Quickly Setting Table Borders

Table border context menu

To quickly set the common border scenarios for a table and all its rows and cells, right-click on the Table node to show a context menu. You can select No Borders, All Borders or Outside Borders.