редактирование столбцов во View

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#1
Доброго времени суток!
Подскажите, как можно реализовать редактирование столбцов во View.
Например чтоб при щелчке на определенном столбце в строке вида, этот столбец переходил в режим редактирования

Все!!! Извините за флуд! Вопрос снят! Я разобрался!
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#2
Сделать сделал.. но не все получается.... :)
Кто знает - подскажите плиз как светить в нужном столбце DialogList ?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#4
ну а например пиклист засветить?

вобщем мне надо провести диалог с пользователем и дать ему ввести строго ограениченые значения
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#7
NickProstoNick
Но это только под винду, т.к. юзается API виндовский.
Что бы работало везде, можно на InViewEdit вызывать лотусный ws.Prompt.
Будет работать везде.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#8
Согласен, но мне надо дать пользователю выбор значений, но не давать ему вносить их вручную.
Вот и бьюсь над этим
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#12
так.... очередной вопрос.... :blink:
При редактировании столца в виде светится поле для ввода...
Вопрос следующий.... можно ли программно изменить значение этого поля? чтоб в нем светилось то что выбрал пользователь?
Я же просто делаю изменения в документе... а в этом поле для редактирования светится старое значение до тех пор пока с него не уберешь курсор
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#14
аха.... все получается... в доке то что надо...но вот в самом поле - старое или пустое значение до момента пока не скроется поле для редактирования
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#16
Вот пример.

1. В поле содержится старое значение
2. В поле уже новое значение, но светится еще старое...

как сделать чтоб после внесения светилось новое значение?

:blink: после этого клиент вообще вылетает с ошибкой
 

Вложения

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#17
1. Что за ошибка?
2. Вообще, если всё делаешь правильно, то не надо потом решрешить, он сам обновляет view.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#19
я совсем запутался :blink:
если не сложно... подскажите что не правильно
Код:
Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
REM Define constants for request types
Const QUERY_REQUEST = 1
Const VALIDATE_REQUEST = 2
Const SAVE_REQUEST = 3
Const NEWENTRY_REQUEST = 4

REM Define variables
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim caret As String

REM Get the CaretNoteID - exit if it does not point at a document
caret = Source.CaretNoteID
If caret = "0" Then Exit Sub

REM Get the current database and document
Set db = Source.View.Parent
Set doc = db.GetDocumentByID(caret)

Dim workspace As New NotesUIWorkspace
Dim picklist As Variant
Dim Tmp() As Variant
Dim i As Integer
Dim j As Integer


REM Select the request type
Select Case Requesttype

Case QUERY_REQUEST:

If Colprogname(0) = "Comment" Then
j = 1
i = 0
Do
Redim Preserve Tmp(i) As Variant
If Month(Today())+i > 12 Then
Tmp( i ) = Cstr(Year(Today())+1) + "-" + Cstr( j )
j = j + 1
Else
Tmp( i ) = Cstr(Year(Today())) + "-" + Cstr(Month(Today())+i )
End If
i = i + 1
Loop While j <= 12

picklist = workspace.Prompt (PROMPT_OKCANCELLIST, _
"Select a Database", _
"Select a database to open.", _
Tmp(0), Tmp)
If picklist<>"" Then
Call doc.ReplaceItemValue(Colprogname(0), picklist)
Call doc.Save(True, True, True)
End If
End If

REM Reserved - do not use in Release 6.0

Case VALIDATE_REQUEST
REM Cause validation error if user tries to exit column with no value
'		If Fulltrim(Columnvalue(0)) = "" Then
'			Messagebox "Требуется ввод данных!", , "DocFlow"
'			Continue = False
'		End If

Case SAVE_REQUEST
REM Write the edited column view entries back to the document
For i = 0 To Ubound(Colprogname) Step 1


If Colprogname(i) = "Quantity" And Not Isnumeric(Columnvalue(i)) Then
Messagebox "!!!!!!!!!!"
Exit Sub
End If


Call doc.ReplaceItemValue(Colprogname(i), Columnvalue(i))
Next
REM Save(force, createResponse, markRead)
Call doc.Save(True, True, True)

Case NEWENTRY_REQUEST
REM Create document and create "Form" item
REM Write column values to the new document
Set doc = New NotesDocument(db)
Call doc.ReplaceItemValue("Form", "GoodsForClaim")		
For i = 0 To Ubound(Colprogname) Step 1
Call doc.ReplaceItemValue(Colprogname(i), Columnvalue(i))
Next
REM Save(force, createResponse, markRead)
Call doc.Save(True, True, True)

End Select
End Sub
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#20
NickProstoNick
Тебе по сути нужно обрабатывать только QUERY_REQUEST.
В обработке ты используешь свой метод ввода(workspace.Prompt(...)), поэтому нужно запретить переходить в встроенный режим редактирования. Для этого пишешь Continue = False после всех действий.
Типа так:
Case QUERY_REQUEST:

If Colprogname(0) = "Comment" Then
....
End If
Continue = False