В данном совете описаны три метода проверки полей с форматированным текстом в Lotus Notes. Первый метод проверяет текстовое поле, в котором любой текст (включая один пробел) является приемлемым вводом. Второй метод проверяет поле, в котором нужно вводить кроме пробелов хоть какой-нибудь текст. Третий метод проверяет поле, которое может не содержать текста, но может содержать вложения, встроенный объект или ссылку. Мы предполагаем, что у вас есть некоторый опыт разработки приложений с использованием Domino Designer и LotusScript.
В первом методе, если поле содержит какие-нибудь символы (даже один пробел), оно может пройти проверку. Эта проверка использует событие Querysave формы, которая содержит поле. Следующий пример LotusScript-кода выполняет такую проверку:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
If ( Source.FieldGetText( "rtfield" ) = "" ) Then
Messagebox( "Please enter some text." )
Call Source.GotoField( "rtfield" )
Continue = False
End If
End Sub
|
Этот код проверяет наличие любого символа в поле rtfield. Если поле содержит что-либо (даже если оно полностью состоит из одного или более пробелов), проверка считается успешной. Если поле пустое, возвращается сообщение об ошибке, и документ не сохраняется (установкой Continue в False).
Во втором методе поле с форматированным текстом должно содержать как минимум один не пробельный символ (другими словами, ввод информации, состоящей полностью из пробелов, не допустим). Эта проверка тоже использует событие Querysave формы:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim rtitem As NotesRichTextItem
Set doc = Source.Document
Set rtitem = doc.GetFirstItem( "rtfield" )
Dim text As String
text$ = Source.FieldGetText("rtfield")
trimmed$ = Trim(text)
if ( trimmed$ = "") Then
Msgbox "Please enter some text."
Continue = False
source.GotoField("rtfield")
source.Refresh(True)
Else
Continue = True
End If
End Sub
|
Наш третий метод проверяет поле с форматированным текстом, в котором введенная информация, состоящая исключительно из вложения, встроенного объекта или ссылки, допустима, даже если она не включает сопровождающий текст. Опять же, мы используем событие Querysave формы, содержащей поле:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim rtitem As NotesRichTextItem
Set doc = Source.Document
Set rtitem = doc.GetFirstItem( "rtfield" )
Dim text As String
text$ = Source.FieldGetText("rtfield")
trimmed$ = Trim(text)
If(doc.Hasembedded) Then
Continue = True
Elseif ( trimmed$ = "") Then
Msgbox "Please enter some text."
Continue = False
source.GotoField("rtfield")
source.Refresh(True)
Else
Continue = True
End If
End Sub
|
Этот код будет работать при наличии вложения где-либо в документе, даже если оно находится не в том поле, которое проверяется.
Научиться
-
Оригинал статьи "Tip: Validating a rich text field in Lotus Notes".
-
Страница продукта Lotus Notes является хорошим ресурсом по Lotus Notes.
-
Дополнительная информация по Domino Designer приведена в документации Domino Designer.
Обсудить
- Примите участие в обсуждении материала на форуме.
-
Примите участие в форуме Lotus на developerWorks Россия.
-
Примите участие в блогах developerWorks и подключайтесь к сообществу developerWorks.