I am thinking about rewriting the component as follows:
- no AutoSize
I absolutely would like to keep it. The component looks much better when the dotted text fits into the control bounds. Is AutoSize still not functional? Tell me what's wrong.
- ColCount and RowCount defines the Width and Height
That would be more LCD Screen alike. One can define the size of the screen in chars and there is no need of complicated calculating that can go wrong. There won't be different BoardWidth and BoardHeight for different component sizes etc.
This is not the way all the other components are working. In the form designer you set the Width and Height as primary dimensions, everything else follows. And when you do it your way you have to do the same calculation, just in the other direction.
I am adding another version, now with dynamic creation of the character dot matrices and full support of UTF8 (basically). The character dots are now stored in a map class using the character as a key (which is a string because UTF-8 characters can consist of 4 bytes). Using the method AddDotMatrix the dots can be defined for any utf8 code point. The ASCII characters are already included, I copied the dot matrices from the TLCDLines_char unit which is not needed any more now. If you need more characters call AddDotMatrix for it - look at the last line of the LCD display in my demo, it contains the German umlauts which are defined exactly in this way.
This way it is also possible to enter characters for other matrix sizes (defined by your DotColsCount and DotRowsCount properties). This requires some typing, though... Probably I'll extend the feature by loading/saving dot matrices from/to file, maybe I'll also add a visual dot matrix designer.
BTW: Do we need the boolean 2D array DotsOn? After filling, it is not used anywhere else.