F
fedotxxl
Стояла задача - проверить на заполнение RichText (будь оно проклято) поля ещё до сохранения документа. Мне удалось найти функцию одного умного человека, которая кое-как решала эту задачу
Сейчас начинается то, что вообще нельзя понять - если курсор стоит в проверяемом поле, то ошибка (если он стоит в другом поле, то все ок), если же в проверяемом поле выделить небольшую часть текста, то ошибки нет
Вот такой бестолковый я либо поганый УИ лотуса
Вот тут-то и началось самое интересное. При обычной проверке все Ок. Ошибки посыпались, если изменить документ а потом выходить из него, кликая на внедренное представление в другом фрейме, которое открывало новый документ в том фрейме, в котором находился проверяемый документ. О как =) Так вот, изменяю, кликаю, вылетает сообщение, что надобы сохраниться, сохраняюсь (в момент сохранения происходит проверка) и бах - ошибка. Посидел, поискал. Оказалось, что в момент сохранения workspace.CurrentDocument возвращает уже не наш документ, а документ, который хранится в фрейме внедренного представления. Поплевался. Проверил, делать проверку на queryClose формы - тот же результат. Ладно, передаю в функцию проверки UIDoc, теперь проверяем тот документ, который нужно. НО ОПЯТЬ ОШИБКА! В строке Call uidoc.SelectAll.Function IsRTFEmpty(rtfield As String) As Integer
'This function tests a Rich Text field to see whether or not it is null. It returns TRUE if the field is null, and returns FALSE if the field is not null. It works even if the rich
'text field contains a file attachment, doclink, or OLE object but does not contain any text.
On Error Goto Errhandle
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Call uidoc.ExpandAllSections
'This is only needed if your field is in a section that may be closed when this executes
Call uidoc.GotoField(rtfield)
Call uidoc.SelectAll
'The next line will generate a 4407 error message if the Rich Text Field is null
Call uidoc.DeselectAll
IsRTFEmpty = False
Exit Function
Errhandle:
Print Erl
Select Case Err
Case 4407
'the DeselectAll line generated an error message, indicating that the rich text field does not contain anything
If rtfield <> "" Then
Call uidoc.GotoField(rtfield)
End If
IsRTFEmpty = True
Exit Function
Case Else
'For any other error, force the same error to cause LotusScript to do the error handling
Error Err
End Select
Exit Function
End Function
Сейчас начинается то, что вообще нельзя понять - если курсор стоит в проверяемом поле, то ошибка (если он стоит в другом поле, то все ок), если же в проверяемом поле выделить небольшую часть текста, то ошибки нет
Вот такой бестолковый я либо поганый УИ лотуса