Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/107: Рейтинг темы: голосов - 107, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 154

Richtext поле

23.06.2009, 22:52. Показов 19757. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста разобраться.
Код работает медленно. Может я делаю что то не так.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 RichStyle
Set body = New NotesRichTextItem( doc, "Body" )
Set richStyle = session.CreateRichTextStyle
richStyle.FontSize = 10
richStyle.NotesFont = body.GetNotesFont("Arial", True)
 
append info to RTItem
Call body.AppendText("Meeting Run By : " + uidoc.FieldGetText("MeetingRunBy") + " on " + uidoc.FieldGetText("Date") + " from " + uidoc.FieldGetText("From") + " to " + uidoc.FieldGetText("To") )
 
Call body.AddNewLine( 2 )
 
richStyle.Bold = True
Call body.AppendStyle(richStyle)
Call body.AppendText("A. Attendance")
richStyle.Bold = False
Call body.AppendStyle(richStyle)
 
Call body.AddNewLine( 1 )
 
c = 0
For j% = 1 To 10
If Not (uidoc.FieldGetText("Name_" + Cstr( j ) ) = "") Then
c = c + 1
Call body.AppendText(Cstr(c) + ". " + uidoc.FieldGetText("Name_" + Cstr( j )) + " ( " + uidoc.FieldGetText("JobCode_" + Cstr( j )) + " )")
Call body.AddNewLine( 1 )
End If
Next
 
Call body.AddNewLine( 2 )
 
richStyle.Bold = True
Call body.AppendStyle(richStyle)
Call body.AppendText("B. Topic Summary")
richStyle.Bold = False
Call body.AppendStyle(richStyle)
 
Call body.AddNewLine( 1 )
 
c = 0
For j% = 1 To 2
If Not (uidoc.FieldGetText("Topic_" + Cstr( j ) ) = "") Then
c = c + 1
Call body.AppendText(Cstr(c) + ". " + uidoc.FieldGetText("Topic_" + Cstr( j )) )
Call body.AddNewLine( 1 )
End If
Next
 
Call body.AddNewLine( 2 )
 
richStyle.Bold = True
Call body.AppendStyle(richStyle)
Call body.AppendText("C. Participation")
richStyle.Bold = False
Call body.AppendStyle(richStyle)
Call body.AddNewLine( 1 )
 
c = 0
For j% = 1 To 5
If Not (uidoc.FieldGetText("Question_" + Cstr( j ) ) = "") Then
c = c + 1
Call body.AppendText(Cstr(c) + ". " + uidoc.FieldGetText("Question_" + Cstr( j )) )
Call body.AddNewLine( 1 )
End If
Next
 
Call body.AddNewLine( 2 )
 
richStyle.Bold = True
Call body.AppendStyle(richStyle)
Call body.AppendText("D. Follow up")
richStyle.Bold = False
Call body.AppendStyle(richStyle)
 
Call body.AddNewLine( 1 )
Call body.AppendText(uidoc.FieldGetText("FollowUp"))
end append info to RTItem
 
doc.Status = "3"
Call doc.Save(False, True)
doc.SaveOptions=0
Call uidoc.Close
Call workspace.ViewRefresh
Подскажите пожалуйста, как можно правильнее сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.06.2009, 22:52
Ответы с готовыми решениями:

рисунки в Richtext поле
Доброго времени суток всем. Может кто подскажет возможно ли сделать авторазмер вставляемого рисунка в richtext поле.

Richtext поле в Ui документе
Есть следующая ситуация: В UI документе изменяется пользователем editable RT поле. Можно ли как то считать его новое значение без...

Добавление данных в Richtext поле
Доброго времени суток. Столкнулся с такой проблемой. Нужно создать форму в RichText полем, которая будет добавлять данные из этого...

12
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
23.06.2009, 23:27
Меня терзают смутные сомнения(с) : Call uidoc.Close в конце - ничего лишнего на queryClose не висит?

Если нет: Вы уверены, что тормоза возникают именно в это куске? Какой канал до сервера?
Дайте время работы кода в секундах...
Врежьте в начало:

Code
1
2
Dim startTic As Long
startTic = Getthreadinfo(6)
И в хвост:

Code
1
2
3
Dim seconds As Double
seconds = (Getthreadinfo(6) - startTic) / Getthreadinfo(7)
Print Format$(seconds, "##0.0") & " сек."
И таки померяйте время работы до uidoc.Close и после.
0
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 154
24.06.2009, 00:24
спасибо за ответ!!!
время получается такое 2.3 сек. 1.9 сек
ну как то грузновато.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
24.06.2009, 01:01
Цитата Сообщение от nila
спасибо за ответ!!!
время получается такое 2.3 сек. 1.9 сек
ну как то грузновато.
Я правильно понимаю: 1.9 - время до uidoc.Close, 2.3 - общее время?
2 секунды в UI - не такая уж засада. Повесьте progressBar, чтоб юзеру нескучно было
http://www.bizzybee.be/2007/08/31/a-progre...in-lotus-notes/
Спрофилируйте код целиком( Тупо через строчку принтовать таймштампы. ) Найдете причину тормозов...
P/S/ Попрубуйте формировать html и вставлять его в поле либо через NotesUIDocument.Import("HTML File" , filename)
либо на лету в бэкэнде через

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Const ITEM_NOFLAG% = &H0
Const CLASS_NOCOMPUTE = 0
Const TYPE_HTML = 21 + CLASS_NOCOMPUTE
 
Declare Function W32_NSFItemAppendStr Lib "nnotes" Alias "NSFItemAppend" (_
Byval hNote As Long,_
Byval flags As Integer,_
Byval ItemName As String, Byval ItemNameLength As Integer,_
Byval itemType As Integer,_
Byval Buff As Lmbcs String, Byval BuffLength As Long) As Integer
 
Declare Function crt_strlen Lib "MSVCRT.dll" Alias "strlen" (Byval FormulaText As Lmbcs String) As Long
 
 
Public Function importHTML( i_doc As NotesDocument , i_fieldName As String , i_htmlSource As String )
....  почистить поле если надо...
 
Call W32_NSFItemAppendStr( i_doc.handle,_
ITEM_NOFLAG,_
i_fieldName ,crt_strlen( i_fieldName ),_
Cint(TYPE_HTML),_
i_htmlSource , crt_strlen( i_htmlSource )
)
....
End Function
Ограничения:
windows онли( если надо под *nix - авось гуры додумают ).
32к данных за раз. если надо больше - резать строку на куски и применять последовательно....
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
24.06.2009, 01:30
ой-ей! прогресс-бар та еще лажа! из-за него часто бывает больше проблем, чем из-за собственного кода )) имхо
а еще он при дебагере валит клиент...
хотя, может мы о разных прогрессах говорим
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
24.06.2009, 02:13
Цитата Сообщение от Akupaka
хотя, может мы о разных прогрессах говорим
о разных.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
24.06.2009, 10:29
прошу прощения, а почему бы все не сделать в бекэнде?
или uidoc - это не UI-шный?
0
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 154
24.06.2009, 18:34
uidoc это ui-шный.

Сейчас человек вводит инфу в поля, при заполнении всех полей при нажатии на кнопку отрабатывает этот код.
он заполняет все инфу в Richtext.
а как вы предлагаете это сделать в бекэнде?
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
24.06.2009, 19:03
Обычно! В бекенде тоже можно заполнять Richtext. Хотя наверное вряд ли это поможет 2 секунды как по мне вполне нормально

Просто не вижу смысла в использовании UI-шных классов в коде, потому как документ в конце закрывается и пользователю снова придется его открывать. проще по нажатию кнопки сделать все действия и переоткрыть документ.
Но с другой стороны - я сомневаюсь, что использование только бекэндовых классов значительно ускорит работу

Один нюанс работы с Richtext в бекенде - все Richtext-поля желательно поместить в секции контролируемого доступа и запретить редактировать ее (я запрещаю всем. даже авторам), а Richtext-поля оставить редактируемыми.



Цитата Сообщение от nila
Сейчас человек вводит инфу в поля, при заполнении всех полей при нажатии на кнопку отрабатывает этот код.
он заполняет все инфу в Richtext.
ммм.... почему именно так? Зачем пользователю ждать пока то что он ввел куда-то запишется?
Может стоит перенести эту задачу на серверный агент? Ну к примеру чтоб он запускался ночью и заполнял все что надо.

На сервере такая задача выполнится на много быстрее.

Только надо будет переписать код без использования UI-шных классов
0
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 154
24.06.2009, 20:10
Да я переоткрывала этот документ, но на быстроту это не повлияло!?
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
25.06.2009, 09:29
Замерь время выполнения разных кусков программы.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
25.06.2009, 10:44
да чего тут мерять? судя по приведенному коду - тут нечему тормозить.
Единственное что смущает - это UI-шный документ.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
25.06.2009, 20:06
а почему не организовать через новый док:
-в первом - заполняем поля и жмем кнопку
-второй открывается с заполненым РТ (можно и версионность сделать, попутно)
-списочком к первому (как респонсы) цепляем все сформированные
-разумеется, у сформированых, трем поля Authors - дабы неповадно было
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2009, 20:06
Помогаю со студенческими работами здесь

Много вложений в Richtext-поле
Добрый день! В документе есть вычисляемое поле RichText, в которое добавляются вложения. Все было хорошо, пока туда не попробовали...

Взять строку в Richtext поле
Есть поле Richtext , в нем надо найти строку, и взять следующие 10 символов идущие после нее в поле. Какие есть функции и как можно...

Как копировать Richtext поле ?
Помогите, кто чем может, ?!! Нужен агент который возьмет нужное RichText поле нужного документа , создаст новый документ в теневом...

Как очистить Richtext поле
Доброго времени суток. Возникла необходимость написать такой функционал. Когда пользователь открывает документ для редактирования...

Заменить таблицу в Richtext поле.
RichText поле содержит текст и таблицы, мне нужно после определенной строки (например «Искомая строка»), удалить таблицу и на ее место...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru