[AccessD] Rich text text boxes
Gustav Brock
gustav at cactus.dk
Tue Jul 12 09:51:07 CDT 2022
Hi John
No slapping from me, as I've never found a use for these HTML-light textboxes.
But who knows? I'll keep your code handy.
FMS offers what seems to be a full-blown solution - at a cost:
https://www.fmsinc.com/MicrosoftAccess/rich-text-format-memo/rich-text-editor.htm
/gustav
-----Oprindelig meddelelse-----
Fra: AccessD <accessd-bounces+gustav=cactus.dk at databaseadvisors.com> På vegne af John Colby
Sendt: 12. juli 2022 16:31
Til: Access Developers discussion and problem solving <accessd at databaseadvisors.com>; John W Colby <jwcolby at gmail.com>
Emne: [AccessD] Rich text text boxes
I'm sure some of our more experienced members will slap me around, but I just had to share my solution.
Problem: the rich text text box in access "only works" bound to a rich text field. Furthermore, the data in the field is HTML (ish) and all of that formatting stuff apparently is not available to get back from said field.
Which makes writing rich text programmatically a roya PITA. I have spent the morning googling and found pretty much nothing, at least in the Access vba side of the house.
Solution: Wrote my own.
The answer lies in generating HTML dynamically.
However before you can do ANYTHING you have to get a text box with it's format set to 'Rich Text' which is non-trivial. In fact the only way I have found to do so is to create a table with rich text fields, then bind a form to that, then bind a text box to one of those fields, then set the format of the text box to 'Rich text' which is suddenly available simply because it is bound to a rich text field. Once I had that , I unbound (is that a word) the text box, but it kept the 'Rich Text' format. Voila a text box that can understand and process HTML tags.
From there, I created a class (of course). The objective of the class is to wrap a 'Rich text' text box and allow vba to do the mucking around with html format codes.
I pass in the text box to the init and store the text box in the header of the class so I can access it inside of the class.
I then wrote a function to pass in a message I wanted to display in the text box and a boolean to bold it or not, defaulted to not.
Function fWriteTextBox(lstrMsg As String, _
Optional blnBold As Boolean = False)
Dim lstr As String
lstr = lstrMsg
If blnBold Then
lstr = "<b>" & lstr & "</b>"
Else
End If
If mLineCnt > 0 Then
lstr = "<br>" & lstr
End If
mstrHTMLMsg = mstrHTMLMsg & lstr
mtxtStatus.SetFocus
mtxtStatus.Text = mstrHTMLMsg
mLineCnt = mLineCnt + 1
Exit_fWriteTextBox:
On Error GoTo 0
Exit Function
end function
In the form header
Dim mclsLicenseStatusText As clsStatusText
In the Form_Open
Set mclsLicenseStatusText = New clsStatusText 'Instantiate the beast
mclsLicenseStatusText.Init Me, txtLicenseStatus 'Pass in the text box
mclsLicenseStatusText.fWriteTextBox "This is a test" 'Write a string without bold
mclsLicenseStatusText.fWriteTextBox "This is a BOLD test", True ' Again with bold
GUESS WHAT! IT WORKS!!!
The text box in my form displays the two lines of text stuff, one bolded, the other not.
Can you say ROYAL PITA? But IT WORKS.
So now I need to flesh out the class to allow other format tags. I desire to allow colors, bold, italics, font etc. Slowly over time I think I can do this thing. We shall see if and what the limitations of the text box are. But I am simply jazzed that I can do anything at all of this nature.
Furthermore the built up HTML string is available for me to look at / read back as opposed to the 'bound to a table' method.
OK, now the real heavyweights of the list can commence the slapping.🤕😜😁
--
John W. Colby
Colby Consulting
More information about the AccessD
mailing list