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

Тема в разделе "Lotus - Программирование", создана пользователем NickProstoNick, 27 авг 2008.

  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Доброго времени суток!
    Подскажите, как можно реализовать редактирование столбцов во View.
    Например чтоб при щелчке на определенном столбце в строке вида, этот столбец переходил в режим редактирования

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Сделать сделал.. но не все получается.... :)
    Кто знает - подскажите плиз как светить в нужном столбце DialogList ?
     
  3. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Никак.
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ну а например пиклист засветить?

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    А Б А Л Д Е Т Ь ! ! ! ! ! :))))
    Похоже что оно :)
    Буду разбираться :)
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    NickProstoNick
    Но это только под винду, т.к. юзается API виндовский.
    Что бы работало везде, можно на InViewEdit вызывать лотусный ws.Prompt.
    Будет работать везде.
     
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Согласен, но мне надо дать пользователю выбор значений, но не давать ему вносить их вручную.
    Вот и бьюсь над этим
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    ws.Prompt(PROMPT_OKCANCELLIST, ...
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    :blink: Дякую!!! получилось! То что надо
     
  10. Mihal

    Mihal Гость

    Prompt выскакивает где сам захочет.

    Їжте та не обляпайтесь! :blink:
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    так.... очередной вопрос.... :blink:
    При редактировании столца в виде светится поле для ввода...
    Вопрос следующий.... можно ли программно изменить значение этого поля? чтоб в нем светилось то что выбрал пользователь?
    Я же просто делаю изменения в документе... а в этом поле для редактирования светится старое значение до тех пор пока с него не уберешь курсор
     
  12. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Док сохраняешь?
     
  13. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    аха.... все получается... в доке то что надо...но вот в самом поле - старое или пустое значение до момента пока не скроется поле для редактирования
     
  14. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    ну тогда ws.ViewRefresh
     
  15. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Вот пример.

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

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

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

    Вложения:

    • tmp.JPG
      tmp.JPG
      Размер файла:
      8 КБ
      Просмотров:
      55
  16. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    1. Что за ошибка?
    2. Вообще, если всё делаешь правильно, то не надо потом решрешить, он сам обновляет view.
     
  17. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Continue = False надо поставить в конце.
     
  18. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    я совсем запутался :blink:
    если не сложно... подскажите что не правильно
    Код (Text):
    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
     
  19. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    NickProstoNick
    Тебе по сути нужно обрабатывать только QUERY_REQUEST.
    В обработке ты используешь свой метод ввода(workspace.Prompt(...)), поэтому нужно запретить переходить в встроенный режим редактирования. Для этого пишешь Continue = False после всех действий.
    Типа так:
     
Загрузка...

Поделиться этой страницей