Создан: Dmitry Akulov; Heineken 01/08/2003 04:54 PM
Папка:
05. Notes APIs (C/DXL/etc) Тип сообщения:
Мне лень заполнять это поле
Сообщение:
08.01.2003 14:59:52 Denis Samoylovich написал:
> Дима, а дальше простого примера это ушло?
> интересует в частности: ограничение на размер HTML есть? отчетик там на пару
> тысяч строк потянет?
да, конечно , но, увы , за размером item'a надо следить самому. ДЕло в том , что HTML item не может быть больше 64к. Надо немного изменить функцию MakeHTMLItem, в первый вызов надо проверять и удалять существующий айтем, тогда айтем правильного типа будет создан, далее следить за размером html кода ( это трудно, так как в declare я указал LMBCS префикс, т.е. конвертация строки в LMBCS происходит неявно), но можно резать (IMHO можно не обращать внимание на структуру html, лотус перед показом канкатенирует все айтемы) с запасом, и не удалять существующий айтем. Причем, что интересно, что при пересохранении с воркспейса, тип у айтема меняется на RichText /Mime_Part в зависимости от настроек формы, но NB важно сначала сохранить айтем в back-end'e. И еще одна ложка дегтя, у LN примитивная реализация отображения HTML, ну ооооочень примитивная.
Declarations
<!--shcode--><pre><code class='vb'>Const ITEM_NOFLAG% = &H0
Const CLASS_NOCOMPUTE = 0 '(0 << 8)
Const TYPE_HTML = 21 + CLASS_NOCOMPUTE ' LMBCS-encoded HTML, >64K handled by more than one item of same name concatenated
Declare Function W32_NSFItemAppendS Lib "nnotes.dll" Alias "NSFItemAppend" (Byval nHandle As Long, Byval iFlags As Integer, Byval iName As Lmbcs String, Byval iNameLength As Integer, Byval iType As Integer, Byval iValuePointer As Lmbcs String, Byval iValueLength As Long) As Integer
Function NewHTMLItem(doc As NotesDocument, itemName As String, html As String) As Integer
If doc.HasITem(itemName) Then
doc.RemoveItem(itemName)
End If
NewHTMLItem=W32_NSFItemAppendS(doc.Handle,ITEM_NOFLAG,itemName,Len(itemName),Cint(TYPE_HTML), html, Len(html))
End Function
Function AppendHTMLItem(doc As NotesDocument, itemName As String, html As String) As Integer
AppendHTMLItem=W32_NSFItemAppendS(doc.Handle,ITEM_NOFLAG,itemName,Len(itemName),Cint(TYPE_HTML), html, Len(html))
End Function[/CODE]