About This Database

  • Автор темы oxystile
  • Дата начала
O

oxystile

#1
можно ли как-то редактировать этот help, кроме как в дизайнере?
 

Omh

Lotus team
04.07.2007
2 210
1
#2
Конечно!
Берёшь документ хелпа (либо через NotesNoteCollection, либо по предефайненому NoteID (из головы не помню))
Там есть RT поле "$Body"
Вот оно то нам и нужно.

Я его редактирую в DialogBox'е
 
O

oxystile

#3
:) что-то не получается этот help взять...
если через NoteID,то надо его сперва узнать...
NotesNoteCollection -> notesNoteCollection.SelectHelpAbout занимается постороением колекций, но это не то
 

Omh

Lotus team
04.07.2007
2 210
1
#4
Для: oxystile
Это то, в NotesNoteCollection получишь (метод GetFirstNoteID) NoteID HelpAbout документа.
Ну а получить документ по NoteID, думаю, труда не составит.
 
O

oxystile

#5
в итоге, что-то типа:
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim doc As NotesDocument
Dim workspace As New NotesUIWorkspace

REM Create note collection
Dim stream As NotesStream
Set stream = session.CreateStream
path$ = "c:\dxl\"
filename$ = Left(db.FileName, Len(db.FileName) - 3) & "dxl"
filename$ = path$ & filename$
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
nc.SelectHelpAbout = True
Call nc.BuildCollection
Msgbox""

nid = nc.GetFirstNoteId
Set doc = db.GetDocumentByID(nid)
Dim t As String
t=doc.Form(0)
Call workspace.DialogBox ( t, True, True, True, True,False, True, "text",doc )

????
 
F

fvoice

#6
Для: oxystile
А документы эти в дизайнере Вы предварительно создали?

Для: Omh
Для: oxystile
код, открывает About документ.. вот только не догоню как поле $Body на форму присабачить? Дизайнер говорит что такое поле уже есть..
Код:
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase	
Dim doc As NotesDocument	
Dim nc As NotesNoteCollection
Dim item As NotesItem 

Set db = s.CurrentDatabase

Set nc = db.CreateNoteCollection(False)
nc.SelectHelpAbout = True
Call nc.BuildCollection

nid = nc.GetFirstNoteId
Set doc = db.GetDocumentByID(nid)
Set item = doc.GetFirstItem("$Body")
Call doc.ReplaceItemValue("Body",item.Values)
Call ws.DialogBox ("MyAboutForm", False, False, False, True,False, False, "Help About Document",doc )
а что бы сохранить поле Body, его ведь, как RT поле, из NotesDocument не получишь?
 

Omh

Lotus team
04.07.2007
2 210
1
#7
Для: fvoice
Берёшь HA документ, берёшь в нём айтем "$Body", копируешь куда надо, в какое хочешь поле, в нужный момент возвращаешь обратно.
 
F

fvoice

#8
Для: Omh
что значит НА?
Поле Rich Text, как его обновить при возврате из DialogBox-а?
 

Omh

Lotus team
04.07.2007
2 210
1
#9
HA = HelpAbout
В форме диалогбокса на QueryClose написать
Код:
If Not Source.DialogBoxCanceled Then Call Source.Refresh(True)
Ток никому не говори, это секрет :) :D
 
O

oxystile

#10
Для: fvoice

HelpAbout создан
кстати, а откуда код вообще вызывается (action, кнопка на HelpAbout ,у меня просто не везде дебаггер срабатывает)
 

Omh

Lotus team
04.07.2007
2 210
1
#12
Сохранаются, у меня всё работает.
Ковыряй дальше :)
 
O

oxystile

#13
:)
где у меня ошибка.
1) на HA кнопка с кодом
нажимаю, появляется диалог бокс, там поле Body изменяю.
Нажимаю -ok-
Call ws.DialogBox ("MyAboutForm", False, False, False, True,False, False, "Help About Document",doc )
-последняя строка кода, т.к. поле в HA тоже наз-ся Body и соответсвенно должно обновиться

2) в MyAboutForm на QueryClose If Not Source.DialogBoxCanceled Then Call Source.Refresh(True)
 

Omh

Lotus team
04.07.2007
2 210
1
#14
<!--QuoteBegin-oxystile+12:02:2008, 16:18 -->
<span class="vbquote">(oxystile @ 12:02:2008, 16:18 )</span><!--QuoteEBegin-->поле в HA тоже наз-ся Body
[snapback]97803" rel="nofollow" target="_blank[/snapback]​
[/quote]
Нет, поле в HA называеться $Body
Переносить надо руками.
Я делаю так: создаю временный док, копирую в него поле "$Body" из HA дока (в поле "Body").
Открываю этот док на редактирование в диалогбоксе с RichtextLight, после окея сохраняю временный док, получаю поле "Body" , копирую его в поле "$Body" в HA.
Сохраняю HA.
Пара особенностей есть, но в целом работает.
 
G

Guest

#16
Для: oxystile
А документы эти в дизайнере Вы предварительно создали?

Для: Omh
Для: oxystile
код, открывает About документ.. вот только не догоню как поле $Body на форму присабачить? Дизайнер говорит что такое поле уже есть..
Код:
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase	
Dim doc As NotesDocument	
Dim nc As NotesNoteCollection
Dim item As NotesItem 

Set db = s.CurrentDatabase

Set nc = db.CreateNoteCollection(False)
nc.SelectHelpAbout = True
Call nc.BuildCollection

nid = nc.GetFirstNoteId
Set doc = db.GetDocumentByID(nid)
Set item = doc.GetFirstItem("$Body")
Call doc.ReplaceItemValue("Body",item.Values)
Call ws.DialogBox ("MyAboutForm", False, False, False, True,False, False, "Help About Document",doc )
а что бы сохранить поле Body, его ведь, как RT поле, из NotesDocument не получишь?
Set doc = db.GetDocumentByID(nid)
А уникальный ключ, текущего документа (из которого вызывается DialogBox), как определяется? nid - как получить?
 

Omh

Lotus team
04.07.2007
2 210
1
#17
Для: Денис Кириченко
Ты вообще можешь прям гекущий док открывать в диалоге.

Код:
Dim ws As New NotesUIWorkspace
Dim uiDoc As NotesUiDocument
Dim Doc As NotesDocument
Set uiDoc = ws.CurrentDocument
Set Doc = uiDoc.Document

If ws.DialogBox("(FORM)",True, True, False, False, False, False, "TITLE", [b]Doc[/b], True) = True Then

End If