I just got an interesting call from a customer who wanted to avoid users from changing the content of a document except for the inserted fields. The text fields in TX Text Control ActiveX have properties that would help avoid changes in the field. But how to protect the rest of the document?
We are going to utilize the field events FieldEntered and FieldLeft of TX Text Control ActiveX and a global flag that informs whether the current input position is inside of a field or not.
Then we have to trap the keystrokes in TX Text Control and nullify the KeyCode or KeyAscii parameter in case the input position is outside a marked text field.
Dim CanEdit As Boolean Private Sub TXTextControl1_FieldEntered(ByVal FieldId As Integer) CanEdit = True End Sub Private Sub TXTextControl1_FieldLeft(ByVal FieldId As Integer) CanEdit = False End Sub Private Sub TXTextControl1_KeyDown(KeyCode As Integer, Shift As Integer) If CanEdit = True Then Exit Sub If (Shift = 2 And KeyCode = 86) Then KeyCode = 0 End If End Sub Private Sub TXTextControl1_KeyPress(KeyAscii As Integer) If CanEdit = True Then Exit Sub KeyAscii = 0 End Sub
It is also possible to change the EditMode to ReadOnly, but the Undo buffer is going to be deleted to save memory as the user is not able to make changes on the document.