Полный физический запрет на редактирование

Тема в разделе "Lotus - Программирование", создана пользователем SOFTOBZOR.ru, 17 мар 2006.

Статус темы:
Закрыта.
  1. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    Лотусисты привет!

    Задача такая встала

    Код (Text):
    REM {проверка, на разницу в датах};
    p1:=Data;
    p2:=Data2;
    @if(p1>p2;"Редактирование докумнета зипрещено - истекла дата";"Вы можите отредактировать документ")
    Кнопку в панели действия я скрываю благополучно.
    Скрывать кнопку если верна форумула
    Код (Text):
    Data2<Data
    Но физически редактирование допустимо, например если пользователь дважды кликнит по доку, появляются поля которые можно изменить.
    Подскажите как можно физически запретить любое изменение в документе при условии
    Код (Text):
    Data2<Data
     
  2. CrazyScientist

    CrazyScientist Гость

    Обрабатывать событие формы Querymodechange.
     
  3. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    А.... замечательно, а как это раюотате можно примерчик
     
  4. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    Я правильно понимаю что надо использовать подобную формулу

    Код (Text):
    Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
    If Not ( source.EditMode ) Then Messagebox( "Извените докумен нельзя изменить")
    continue = False
    End If
    End Sub
    Но почему то лоту ругаеться, не вижу в чем ошибка!
     
  5. Proger J.

    Proger J. Lotus team
    Lotus team

    Регистрация:
    15 мар 2006
    Сообщения:
    48
    Симпатии:
    0
    А откуда берутся даты? Есть возможность сделать поля вычисляемыми? В этом случае их нельзя изменить.
    Если все-таки нужно отменять редактирование документа вцелом, попробуй:

    Sub Postmodechange(Source As Notesuidocument)
    If source.EditMode=True Then
    source.EditMode=False
    End If
    End Sub

    Если устроит такой вариант, хорошо :)
     
  6. Proger J.

    Proger J. Lotus team
    Lotus team

    Регистрация:
    15 мар 2006
    Сообщения:
    48
    Симпатии:
    0
    Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
    If Not ( source.EditMode ) Then
    Msgbox( "Извините докумен нельзя изменить")
    continue = False
    End If
    End Sub
     
  7. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    Понял, сделал правда как всегда по своему, получилось красиво.
    Может кому пригодиться (особенно новичкам, как я)


    Создаем в докумнте скрытое поле Status, которое вычисляеться так
    [/CODE]
    REM {проверка, на разницу в датах};
    p1:=Data;
    p2:=Data2;
    @If(p1>p2;"Closed";"Open")
    [/code]


    Далее в событии
    Код (Text):
    Sub Querymodechange(Source As Notesuidocument, _
    Continue As Variant)
    If Not ( source.EditMode ) Then
    currentStatus = source.FieldGetText( "Status" )
    If ( currentStatus = "Closed" ) Then
    Messagebox _
    ( "Извените данные докумен нельзя редактировать, истекла дата" )
    continue = False
    End If
    End If
    End Sub
    И красота, ... особенно приятно осознавать что потихоньку растем :)
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-SOFTOBZOR.ru+17:03:2006, 10:09 -->
    <span class="vbquote">(SOFTOBZOR.ru @ 17:03:2006, 10:09 )</span><!--QuoteEBegin-->И красота, ... особенно приятно осознавать что потихоньку растем rolleyes.gif
    [snapback]31977" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    А попробуй в представлении на документе, который ты не можешь редактировать, нажать CTRL-E. Интересно, что будет ? :)
     
  9. Гость

    Хе-хе :)
    А какие еще методы запрета редактирования есть?

    Мне нравится использовать вычисляемые поля и редактируемые, которые в зависимости от значения поля (статуса дока) и автора то доступны, то нет.
    Тоесть если редактирование возможно, то доступно редактируемое поле, если не возможно, то только вычисляемое.
     
  10. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    <!--QuoteBegin-Medevic+17:03:2006, 10:44 -->
    <span class="vbquote">(Medevic @ 17:03:2006, 10:44 )</span><!--QuoteEBegin-->А попробуй в представлении на документе, который ты не можешь редактировать, нажать CTRL-E. Интересно, что будет ? :)
    [snapback]31980" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    А что должно быть:) ???

    Картинка прилагаеться
     

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      40,4 КБ
      Просмотров:
      93
  11. Гость

    Для: SOFTOBZOR.ru
    Medevic говорил о представлении (view).

    А что это у тебя за БД такая интересная? :)
    Ее откуда-нить можно скачать, чтобы посмотреть поближе?
     
  12. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    БД - моя. То есть я на ней тренируюсь, вообще ждем внедрения Босс референта, вот готовлюсь потихоньку. Нужно же с чегото начинать.

    А как касяк с СTRL + E победить :)
     
  13. Гость

    Красивая БД. :)

    Можно попробовать сделать проверку в PostOpen и переводить док в статус нередактируемый если условие не выполняется.
    Счаз попробую. :)
     
  14. Гость

    О! Помогает вроде. :)

    Код (Text):
     
    Sub Postopen(Source As Notesuidocument)
    If Not ( source.FieldGetText( "Имя поле" )="Значение" ) Then
    source.EditMode = False
    End If
    End Sub
     
  15. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    О! - огромное спасибо!

    Может вы еще пообщаетесь со мной в этом топике ->
    http://codeby.net/forum/threads/6671.html
    Я там в самом низу еще один вопрос поднял, что-то не могу понять...
     
  16. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    Что то у меня не катит,

    Код (Text):
    Sub Postopen(Source As Notesuidocument)
    If Not ( source.FieldGetText( "Status" )="Closed" ) Then
    source.EditMode = False
    End If
    End Sub
    Разместил код на форме.
    А при размещении в представлении ругаеться.
    Что посоветуете?
     
  17. Гость

    Разместить в форме.
    А куда ты его записал?

    + не убирать код в Querymodechange
    Код (Text):
    Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
    If Not ( source.EditMode ) Then
    Messagebox( "Извините докумен нельзя изменить")
    continue = False
    End If
    End Sub
     

    Вложения:

    • pic.jpg
      pic.jpg
      Размер файла:
      21,9 КБ
      Просмотров:
      68
  18. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    Все именно так и сделал, не работает.
    Странно ;)
     
  19. Гость

    Для: SOFTOBZOR.ru
    Попробуй убрать в формуле Not.

    Код (Text):
    Sub Postopen(Source As Notesuidocument)
    If ( source.FieldGetText( "Status" )="Closed" ) Then
    source.EditMode = False
    End If
    End Sub
     
  20. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    Да заработело, не успел ответить.
    Сдел так же.

    Спасибо вам большое, что помогли вникнуть.
     
Загрузка...
Статус темы:
Закрыта.

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