Диалоги Lotus developers

  • Автор темы Автор темы Vagor.ini
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
<!--QuoteBegin-Gogan.exe+6:12:2004, 09:12 -->
<span class="vbquote">(Gogan.exe @ 6:12:2004, 09:12 )</span><!--QuoteEBegin-->Добрый день.
При реализации очередного проекта, возникла проблема – в форме (а точнее в документе) должна присутствовать таблица с возможностью добавления строк (и полей). Возможно ли это или количество полей в форме задается при ее создании? И как иначе можно решить эту проблему?[/quote]
Насколько я в курсе (немного заморачивался с динамическим представлением отчетов в виде таблиц с использованием Notes C++ API) добавлять строки в таблицу и в них вставлять поля (которые будут отображаться в документе на экране) возможно только на Notes C++ API. Но тебе нужно уже иметь на стадии подготовки документа всю информацию: количество строк, названия полей. Да и такой созданный документ уже будет сохранен ибо работа с UI невозможна при помощи Notes C++ API. Любое изменение количества строк - это редактирование документа на API с закрытием и переоткрытием его на Workspace - соответственно возможно мелькание. В общем имхо в такой постановке задача не решаема

Как вариант можно попробовать вот такое решение:
1. нарисовать таблицу и в нее положить multivalue поле с разделителем NewLine. Поле заполняется скриптом. При необходимости можешь создавать Item, но пользователю они на экране не видны. Пользователю видны изменения в таблице. Все что от тебя требуется это организовать заполнение \ редактирование значения multiValue поля. Имхо оптимально через организовать через диалог
2.нарисовать картинку (прямоугольник - по высоте ячейки таблицы, по цвету фона таблицы (документа), но только с выделяющейся нижней границей ) и указать ее в качестве значения cellImage для таблицы. Свойство Repeat выставить в Tile

Минус - если значение поля не помещается в колонке таблицы - то вся разметка и форматирование "уедет"
 
Ребят, хелп!!!!!
Объясните, как отображать папки...точнее сказать панель папок для навигации. Есть Folder Pane - это то? и как тогда с ним работать? сделала ембедид и....не пойму что дальше, вставилось какая-то непонятность, ниче не показывает, из свойств голяк... Смысл в том, что слева (ну или сверху - тип горизонтально ) мне надо отображать панель папок, которые пользователь будет в процессе добавлять или удалять (то бишь их число все время меняться будет). Как это сделать? :huh:
Еще вопрос: как папку удалить?(какой формулой) - стандартно в менюшке лотусовской есть такой акшин.....а самому как это сделать?
Заранее спасибо.
 
Dark
Удаление и другая работа с папками доступна через класс NotesView и его сотавляющих, т.е. с точки зрения программирования вид и папка обслуживается одними методами.

Для отображения папок пользователя в outline необходимо сделать entry с именем Other View и/или other Private View, к сожалению все созданные пользователем виды будут находиться в одном месте...
 
Vagor.ini
Для отображения папок пользователя в outline необходимо сделать entry с именем Other View и/или other Private View, к сожалению все созданные пользователем виды будут находиться в одном месте...

сорри, но я не очень поняла, что ты имеешь в виду. :(
например есть две папки, они должны отображаться слева (или сверху)... потом я создаю по экшену еще папку и она тут же должна отобразиться третьей папкой. Как бы дерево папок должно отображаться... Вот как его отобразить? с помощью чего?
вот тут я и не поняла что ты предлагаешь :( если не трудно абисни ешо разок :)
 
Dark
В любом представлении в качестве эксперимента сделай следующее: Insert System Actions..., среди них будут действия: Move To Folder, Remove From Folder.
Выполни Move To Folder - появится менюшка, в котором можно создавать новые папки и производить выбор, в которую из папок поместить документ. Допустим ты создала новую папку - она отобразится в панели навигации слева (как обычно), НО, если у тебя есть твой собственный outline, то тебе придется самостоятельно программировать отображение созданной папки в структуре твоего outline (при помощи классов NotesOutline и NotesOutlineEntry). Чтобы ничего не программировать, поступи следующим образом: в твоем outline добавь следующие entry (если ты их удалила, они по умолчанию появляются при создании outline): Other Views, Other Private Views, Other Folders, Other Private Folders - созданные конечным пользователем папки (представления) будут отображаться там.
________________________
Я тебе советую запретить конечным пользователям создавать приватные и тем более общие Views (см. acl).
Различие между приватными и общими папками, я надеюсь, ты понимаешь хорошо. Приватные папки лучше использовать для пользовательских "Избранное", общие папки - для групповой работы с документа определенной группы пользователей (отдел маркетинга готовит договор, например)
_____________
Чтобы удалить папку, воспользуйся классами NotesView и NotesUIView.
_______________
Чтобы создать паку, отобразить диалоговое окно выбор папок и прочее посмотри команды: @Command( [CreateFolder] ), @Command( [Folder] ; folderName ; moveOrCopy ), @Command( [FolderDocuments] ; folderName ; moveOrCopy , @Command( [FolderMove] ), @Command( [FolderRename] )
 
nor, огромное спасибо :rolleyes: ты просто разжевал и в рот положил :)
большинство я уже сделала и приятно было осознать, что правильно, подтверждение тому твои советы ;)

и с отображением в СВОЕМ outline ты мне очень помог
СПАСИБО ВСЕМ! ;)
 
Приветствую.
У меня дебют в лотусе.
Необходимо сделать электронный документооборот, для небольшой организации, все клиенты в одном здании.
Исходные данные:
-Domino, Notes 6.5.1
-все пользователь Win XP, LAN
-бумажные шаблоны документов, в соответстви с которыми должны быть формы выводимые в последствии на печать
-Сервер, Клиенты установлены
Ход работы:
-Создаю формы в соответстви с шаблонами
-Отображаю формы во вьюхе

Вопросы:
Как можно в открытой для редактирования форме удалить поле в соответствии с выбранным значением в другом поле.
Есть поле vid_perevoda (Dialog list) и поле perevod_s (Date\Time)
В дезайнере пишу в поле vid_perevoda, Input Translation

FIELD Status:=Status;
@If(vid_perevod="постоянный";FIELD perevod_s := @DeleteField; @SetField("Status";"Open"))

не удаляет поле perevod_s, и еще, обязательно в операторе if 2-ой оператор.Когда его не пишу но плсле первого ставлю ';' ругается
 
Dimon
1. ты не правильно выбрал событие поля Input Translation, которое может изменять значение только текущего поля, а не другого...
2. ты допустил ошибку: @If(vid_perevod="постоянный";FIELD perevod_s := @DeleteField; @SetField("Status";"Open")) - название поля "vid_perevod" не совпадает с названием поля у тебя на форме "vid_perevodа"
3. напиши на событии поля on change код на lotusscript

if doc.vid_perevodа(0) = "значение" then

doc.perevod_s = ""
doc.Status = "значение"

end if

где doc - текущий NotesDocument
 
nor

поле vid_perevod(именно vid_perevod, извени буду внимательней :) ), событие Onchange

Sub Onchange(Source As Field)

Dim ws As New NotesUIWorkspace
Dim doc As New NotesUIDocument

Set doc = ws.CurrentDocument

If doc.vid_perevod(0)="постоянный" Then
doc.perevod_s= ""
End If

End Sub

Сообщает об ошибке: vid_perevod:onchange:8: Not a member:VID_PEREVOD
Извени конечно, но точно запись doc.perevod_s= "" удалит поле, чтото не верится :)
 
Sorry что вмешиваюсь
строчка Set doc = ws.CurrentDocument - это получение не NotesDocument, а NotesUIDocument
Поэтому об ошибке сообщает правильно
Правильнее будет так
Dim uiDoc As NotesUIDocument
Dim doc As NotesDocument

set uiDoc = ws.CurrentDocument
Set Doc = uiDoc.Document

или напрямую
Set Doc = ws.CurrentDocument.Document (хотя некоторыми не рекомендуется такая конструкция)

Такая запись doc.perevod_s= "" поле конечно не удалит. Но имхо удаление поля в твоем конкретном случае нецелесообразно. В таких случаях оптимально "обнулять" значение поля и прятать его от пользователя на экране - т.е. имитировать отсутствие этого поля
 
Andre
:) мы о чем говорим? об удалении поля с формы или об обнулении значения поля? Dimon'у не требуется удалять поле, просто ему нужно обнулить значение поля... зачем удалять поля? какой в этом глобальный смысл?

Dimon
в самом общем случае напишу тебе как получить доступ к полям текущего документа, я думал ты в курсе...

dim ws as New notesuiworkspace ' user interface пользователя
dim doc as notesdocument
dim uidoc as notesuidocument

set uidoc = ws.CurrentDocument ' user interface документ пользователя, (который на экране отображается в данный момент)
set doc = uidoc.Document ' документ на сервере, который отображается на экране пользователя в данный момент

doc.item_name = item_value ' присваиваем полю item_name документа doc значение item_value
item_value = doc.item_name(0) ' присваиваем переменной item_value (типа variant, в данном случае) первое значение поля item_name документа doc
____________________
поля удаляются только в том случае, если они временные и попали в документ, например, через метод dialogbox...
тогда, чтобы удалить поле необходимо выполнить call doc.removeitem(item_name$) или call item.remove, где doc - документ, поле которого удаляют, item - поле notesitem, которое удаляют...
 
предыдущее сообщение от меня было - забыл авторизироваться...
 
<!--QuoteBegin-Guest+2:02:2005, 14:18 -->
<span class="vbquote">(Guest @ 2:02:2005, 14:18 )</span><!--QuoteEBegin-->:) мы о чем говорим? об удалении поля с формы или об обнулении значения поля? Dimon'у не требуется удалять поле, просто ему нужно обнулить значение поля... зачем удалять поля? какой в этом глобальный смысл?[/quote]
Ну если исходить из постановки задачи автором - то цитата:
Как можно в открытой для редактирования форме удалить поле в
соответствии с выбранным значением в другом поле

Я тоже не вижу ни малейшего смысла в удалении поля. И вроде бы советовал тоже его обнулять и возможно скрывать - в зависимости от задачи и требований.

А в остальном - согласен :)
 
Sub Onchange(Source As Field)
Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document

doc.doplaty = 5

If doc.vid_perevod(0) = "постоянный" Then
doc.perevod_s= ""
End If

End Sub
Насколько я понимаю как только я произведу изменения поля vid_period должен отработать этот код, именнно для этого дописал поле doplaty (number).Да, и, все поля editable.
Открываю форму в первый раз, выбераю vid_period-"постоянный"-поле doplaty не изменяется(пустое), выбераю другое поле (кликаю на нем)- сообщение
Object variable not set
 
В описании вместо vid_period, vid_perevod остальное верно :)
 
Внимательно зачитай предыдущее сообщение Nor о получении доступа к полям текущего документа и сравни со своим кодом. Неточность на стадии инициализации объекта ws
Все должно получиться :)
 
Да РАБОТАЕТ!!!
А как можно поле сделать невидемым т.е. чтобы его вообще небыло видно, что-то типо SW_HIDE в API
 
В свойствах поля или текста предпоследняя закладка Paragraph Hide When
Дальше - в зависимости от задачи - стандартный набор условий, либо взводим галку Hide Paragraph If Formula Is True и свое условие написанное на @ формулах
 
Andre
Вот это я и хотел сделать.спосибо
nor
Спосибо что объяснил систему обращения к полю
Всем:
Огромное человеческое СПОСИБО
 
Приветствую.
как можно сделать таблицу в которую динамически добавлялись бы строки.
т.е. клиент открывает базу, видит форму в которой таблица с полями, заполняет поля в таблице,заполняет.... бац... таблица(в которой поля) закончилася. Так вот, как сделать таблицу и поля "динамической"
И вообще возможно ли такое.
Сформулировал как смог. :angry:
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!