2015-05-20 2 views
0

У меня есть большая проблема =) Я скопирую содержимое тела дыры в электронном письме на клипборд и вам нужно вставить этот контент в поле richtextfield.Вставить содержимое из буфера обмена в rtfield внутри нового раздела

Моя проблема в том, чтобы вставить этот контент из буфера обмена внутри раздела.

Так что мне нужно создать раздел в текущем Richtextfield, в который пользователь вводит и вставляет содержимое из буфера обмена в этот раздел.

Я пробовал это с помощью разных методов, но ничего не работает. Возможно, есть решение с RTNavigators или диапазонами, но я понятия не имею.

У кого-то есть возможное решение для меня?

заранее спасибо

Dim s As New NotesSession 
Dim db As NotesDatabase 
Dim ws As New NotesUIWorkspace 
Dim uidoc As NotesUIDocument 
Dim currField As String 
Dim rtitem As NotesRichTextItem 
Dim style As NotesRichTextStyle 
Dim color As NotesColorObject 

Set uidoc = ws.Currentdocument 
Set db = s.Currentdatabase 
Dim DummyDoc As NotesDocument 
Dim DummyRT As NotesRichTextItem 

currField = uidoc.Currentfield 

'Create DummyDoc 
Set DummyDoc = db.CreateDocument 
Call DummyDoc.Createrichtextitem("dummy") 
Set DummyRT = DummyDoc.Createrichtextitem("DummyRT") 
Call DummyDoc.Save(True,True) 

'Open DummyDoc in workspace 
Dim dummyUIDoc As NotesUIDocument 
Set dummyUIDoc = ws.Editdocument(True, DummyDoc,True) 

'Paste copied content 
Call dummyUIDoc.Gotofield("dummy") 
Call dummyUIDoc.Paste() 
Call dummyUIDoc.Refresh(True,False,True) 
Call dummyUIDoc.Save() 
Call dummyUIDoc.Close(True) 

'Create Section 
Dim secUIDoc As NotesUIDocument 

Set style = s.CreateRichTextStyle 
Set color = s.CreateColorObject 

Call DummyRT.BeginSection("", style, color, True) 
Call DummyRT.EndSection 

Call DummyDoc.Save(True, False, False) 
Set secUIDoc = ws.EditDocument(True, DummyDoc) 
Call DummyDoc.Remove(True) 

Call secUIDoc.Gotofield("DummyRT") 
Call secUIDoc.Selectall() 
Call secUIDoc.Copy() 
Call secUIDoc.Close(true) 

'Paste generated content 
Call uidoc.Gotofield(currField) 
Call uidoc.Paste() 

Dim range As NotesRichTextRange 
Dim count As Integer 
Dim nav As NotesRichTextNavigator 

Set rtitem = uidoc.Document.Getfirstitem(currField) 

Set range = rtitem.CreateRange 
Set nav = rtitem.CreateNavigator 
Call nav.FindFirstString("#PH#") 
Call range.SetBegin(nav) 
Call range.SetEnd(nav) 
Call range.Remove 
Call uidoc.Paste() 

Второй попробовать

Dim s As New NotesSession 
Dim db As NotesDatabase 
Dim ws As New NotesUIWorkspace 
Dim uidoc As NotesUIDocument 
Dim currField As String 
Dim rtitem As NotesRichTextItem 
Dim style As NotesRichTextStyle 
Dim color As NotesColorObject 

Set uidoc = ws.Currentdocument 
Set db = s.Currentdatabase 
Dim DummyDoc As NotesDocument 
Dim DummyRT As NotesRichTextItem 

currField = uidoc.Currentfield 

'Insert Section 
Set DummyRT = uidoc.Document.Getfirstitem(currField) 
Call DummyRT.Beginsection("",style,color,true) 
Call DummyRT.Appendtext("Test") 
Call DummyRT.Endsection() 
Call uidoc.Reload() 

Call uidoc.Gotofield(currField) 

Call uidoc.Paste() 
+0

Пожалуйста, покажите нам код для методов, которые вы пробовали, и расскажите нам, что случилось, когда вы пытались их. –

ответ

0

BreakingPar имеет код на доступ к Windows Clipboard: http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFA00581AB2

Вы, кажется, есть некоторые вопросы по поводу использования RTNavigators, и я думаю, это путь. Надеясь, что это поможет вам, я включаю в себя кнопку, которую я использую с помощью RTNavigators, чтобы добавить таблицу. Я не использовал разделы, но мне это может помочь.

Приветствия, Brian

Sub Click(Source As Button) 
Dim session As New NotesSession 
Dim db As NotesDatabase 
Set db = session.CurrentDatabase 
Dim ws As New NotesUIWorkspace 
Dim uidoc As NotesUIDocument 
Dim firstDoc As NotesDocument 
Dim tableDoc As New NotesDocument(db) 
Set uidoc = ws.CurrentDocument 
Dim univID As String 
Set firstDoc = uidoc.Document 
univID = firstDoc.UniversalID 
Call uidoc.Close  
Msgbox univID 
Dim tableItem As NotesRichTextItem 
Call tableDoc.ReplaceItemValue("Form","Table Holder") 
Dim body As New NotesRichTextItem(tableDoc,"BuiltTable") 
rowCount% = 4 
columnCount% = 4 
     'Order the table 
Call body.AppendTable(rowCount%,columnCount%) 
Dim rtnav As NotesRichTextNavigator 
Set rtnav = body.CreateNavigator 
Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL) 

For iRow% = 1 To rowCount% Step 1 
    For iColumn% = 1 To columnCount% Step 1 
     Call body.BeginInsert(rtnav) 
     Call body.AppendText("Row " & iRow% & ", Column " & iColumn%) 
     Call body.EndInsert 
     Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL) 
    Next 
Next 
Call tableDoc.Save(True, False) 
Set tableItem = tableDoc.GetFirstItem("BuiltTable") 
'Call tableItem.CopyItemToDocument(doc,"TableTarget") 
Call tableItem.CopyItemToDocument(firstDoc, "TableTarget") 
Call firstDoc.Save(True,False) 
Call ws.ViewRefresh 
Call ws.EditDocument(True,firstDoc,False) 
End Sub 
+0

Можете ли вы рассказать мне разницу между Call uidoc.Refresh (True) [для обновления полей RT] и параметром 3 параметра Call.uidoc.Refresh (True, True, True)? Документация заметок ссылается только на один параметр, и у меня есть некоторая ошибка кода в этой строке. Ваш пост был одной из немногих ссылок, которые я нашел. : -/ – alt

+0

Я думаю, что три параметра uidoc.Refresh в OP - это ошибка. Я не знаю правильного 3 параметра uidoc.Refresh –

0

Или, если вы знаете имя поля происхождения, вы можете использовать этот код, чтобы скопировать поле RT от одного документа к другому. «NewLink» - это имя поля моего происхождения.

Приветствия, Brian

Dim thisDoc As NotesDocument 
Dim thisRT As Variant 
Dim newRT As Variant 
Dim newDoc As NotesDocument 
Set uiws = New NotesUIWorkspace 
Set sess = New NotesSession 
Set db = sess.CurrentDatabase 
Set thisuidoc = uiws.CurrentDocument 
Set thisDoc = thisuidoc.Document  
Set thisRT = thisDoc.GetFirstItem("NewLink") 
Set newDoc = db.CreateDocument 
newDoc.Form = "RT" 
Call newDoc.Save(True,False)  
Set newRT = New NotesRichTextItem(newdoc,"newRTfield") 
Call thisuidoc.Close 
Call newRT.AppendRTItem(thisRT) 
Call newdoc.Save(True,False)  
Set newuidoc = uiws.EditDocument(True, newDoc) 
Смежные вопросы