• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Россыпь мелких вопросов

  • Автор темы Vagor.ini
  • Дата начала
D

Dark

Всем привет!
Помогите, кто сможет!
Трабл в том, что мне надо сотворить дерево (типа существуют отделы. в них подотделы и т.д.)
Это дерево предполагает создание и удалени отделов.
Так вот как это сделать программно? как его генерить?
Если чесно делала (использ. схему, скриптом генерировала ее), все замечательно, если бы не одно НО:
не отображаются изменения в Outlines. Если смотрю в дизайнере - все есть, все поменялось как надо, и если это все сохранить в самом дизайнере и открыть в клиенте, то все ОК.
А вот в самом клиенте ничего не видно.....
Объясните что я делаю не так? Саму схему сохраняю, уже и рефреш окна пробовала - ничего не помогает.... Но зато, что самое интересное, в дизайнере все изменения видны...
 
V

Vagor.ini

Dark
Переоткрыть базу надо...
Оутлайн встроен на пайдж, а он динамически не обновляется...
 
D

Dark

Vagor.ini
ну да, я сама заметила, что переоткрывая базу все замечательно, тока не нравится это мне.... Не будет же человек переоткрывать ее все время....если еще один раз за какой-то промежуток ввести данные надо - еще куда ни шло, а если за раз надо ввести несколько записей (отделов)...не говорю уже о МНОГО записей
переоткрывать ее самой - тоже как то ....
....что делать... ех....
или я чиво -то не поняла?
 
V

Vagor.ini

Dark
Если переоткрывать базу не хочется, то сорри... Page рефрешить не возможно (или я не прав).
 
D

Dark

Vagor.ini
по поводу Page прав ;) , да и вообще прав :)
да и я все это знала..... но что хорошо, что убедилась точно , что была права - мне это тоже нужно было
СПАСИБО за помощь! :)

PS .... а может есть еще какой-нить способ создания дерева? :) не тока с помощью Outline?
 
V

Veselinka

<!--QuoteBegin-QUOTE+nor-->
<span class="vbquote">(QUOTE @ nor)</span><!--QuoteEBegin-->Veselinka
К сожалению, я не вижу возможности решить эту проблему мне известными стандартными методами. Буду крайне признателен, если тебе что-то получится сделать в этом плане и ты поделишься со всеми нами результатами.[/quote]
Решить проблему удалось:

1. В стилях страницы пишешь стиль например .hiddenDiv {}
у которого абсолютная позиция по горизонтали и вертикали -200 px

Потом в конце формы перед полями хиднутыми пишешь
<div class=hidenDiv>

И закрывашку после хиднутых полей </div>

Получается, что стандартный диалог и отображение атачмента попадает в этот задвинутый за границу экрана див.

Далее на ява скрипте на событии OnSubmit пишешь код, который находит чекбоксы (это частный случай моей бизнес логики - у меня других чекбоксов на форме просто нет) и если в аплоад контроле у меня что-то аплоадится (новый вариант моего атачмента) - то чекает все чекбоксы на старых атачментах (помечает на удаление в этом задвинутом диве).

А сам атачмент для просмотра доступен по генеренной ссылке в другом месте - ссылка выглядит следующим образом
http:/server/path/viewunid/documentunid/$FILE/имя файла

где имена атачнутых файлов на web query open считаются.
Ну вот вобщем-то и все.
 
N

nor

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

Guest

nor, когда открываю с сайта – это бесплатный сайтик на 20 мегов, так что сервер не под моим контролем. А когда открываю експлорером – это локально с помощью кнопочки в верхнем правом углу. Я что-то не так делаю?
 
N

nor

Gogan.exe
привет
я прочитал много раз и так не понял, про что ты меня спросил... :)
 
G

Gogan.exe

Трудно объяснить то, что мне и так ясно :)
Постараюсь еще разок.
В общем я решил сделать сайтик (пробный) на лотусе, так как мне нужно с ним практиковаться.
Я сделал несколько пару фреймсетов, менюшку и две странички (в менюшке две кнопки – открыть первую стр и откр. Вт. Стр).
Проблема в том, что если закачать эту базу на сервер (я на narod.ru ее кинул), то при попытке открыть ее, говорят, что файл не найден. То же сообщение выдается, если попытаться открыть базу как HTML прямо из дизайнера (в верхнем правом углу есть кнопочки – посмотреть в ноутс и посмотреть в експлорере). В Ноутс все смотрится нормально, а вот в интернет браузере не находиться файл.
Теперь яснее? Надеюсь, что да.
 
O

osmor

Здравствуйте.
Есть ли в стандартный метод для вызова диалога выбора папки?
про метод NotesUIWorkspace.OpenFileDialog знаю, но он мне не подходит, нужно выбрать папку.
ПОка сделал через win 32 API. Кстати вопрос как определить дескриптор окна в LOTUS?
Спасибо.
 
O

osmor

Опять вопросы. :)
Хочется в ФОРМЕ документа показать ответы к этому документу в табличном виде.
т.е. вверху поля документа, внизу табличка со списком ответов.
КрасивШЕ всего было бы внедренное представление, но похоже не получится.
Можно ли у внедренного представления (да и вообще у представления) менять формулу отбора динамически?
В принципе вопрос несколько более общий, как такое вообще в LOTUS реализуется? Подтолкните в нужную сторону.
Спасибо.
 
N

nor

Gogan.exe
1. Что бы просмотреть бд в броузере (MS Explorer), необходимо расположить ее в ..\Domino\Data\.. и загрузить HTTP Server предварительно, а также в Domino Administrator в документе текущего сервера на закладке Security настроить схему по доступу и выполнению кода в открываемой бд, например, поле Run restricted LotusScript/Java agents...
2. Для просмотра бд, ориентированных на веб и созданных на Lotus, необходим Domino сервер, поэтому на narod.ru скорее всего не получится открыть бд.
 
N

nor

Gogan.exe
Так же обрати внимание на acl бд, в частности на свойство Maximum Internet Name and Password на закладке Advanced acl бд.
 
N

nor

osmor
У внедренного представлния можно динамически менять Embedded Selection (а также Show Single Category), таким образом, в зависимости от условия на месте внедр. представления появляются различные представления.
Также можно сделать динамическую таблицу, которую ты хочешь, с возможностью добавления, редактирования и удаления ссылок-строк (ссылки на другие документы, которые открываются прямо из текущего документа) в этой таблице. Для этого нужно использовать вычисляемое поле ListBox с формулой, основанной на значении скрытых полей.
Динамически изменять формулу отбора представлений если и можно (я не знаю), то тогда возникает необходимость изменять содержимое столбцов представлния или писать для них очень сложные формулы, которы будут тормозить представление при обращении к нему.
 
N

nor

osmor
@Command( [ChooseFolders] )
Отображает стандартное диалоговое окно выбора папки, в которую необходимо переместить документ.
 
G

Gogan.exe

Спасибо за ответ. Теперь понятно. Хорошо, что это я делал, только для теста и в это ничего не упиралось. Спасибо еще раз.
 
O

osmor

nor
Спасибо.
С представлениями понял, буду пробовать.
По поводу "папок"...
Приношу свои извинения, видимо я не внятно излагаю свои вопросы. :(
Есть ли в стандартный метод для вызова диалога выбора папки?
Под этим подразумевался диалог выбора директории на диске, а не папки в LOTUS.
 
N

nor

osmor

Это помещаешь в билиотеку, которую затем подключаешь к нужной тебе форме:

Код:
(Options)
Option Public
Option Declare

(Declarations)
Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Const MAX_PATH = 260

Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_EXPLORER = &H80000                         
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000                       
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_NOLONGNAMES = &H40000                      
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_READONLY = &H1
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_SHAREFALLTHROUGH = 2
Public Const OFN_SHARENOWARN = 1
Public Const OFN_SHAREWARN = 0
Public Const OFN_SHOWHELP = &H10

Dim Filter As String
Dim FileName As String
Dim FileTitle As String
Dim TruncName As String
Dim VaultWIPRoot As String
Dim VaultWIPUserPath As String

Type tagOPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As Long
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As Long     
End Type

Type BrowseInfo
hwndOwner      As Long
pIDLRoot       As Long
pszDisplayName As Long
'lpszTitle      As Long
lpszTitle      As String
ulFlags        As Long
lpfnCallback   As Long
lParam         As Long
iImage         As Long
End Type

Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long

Declare Function SHGetPathFromIDList Lib "shell32" (Byval pidList As Long, Byval lpBuffer As String) As Long

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Long

Dim OPENFILENAME As tagOPENFILENAME

Function GetDirDlg() As String

Dim lpIDList As Long
Dim sBuffer As String
Dim sTitle As String
Dim tBrowseInfo As BrowseInfo

sTitle = "Выберите директорию"

tBrowseInfo.hwndOwner = 0&
tBrowseInfo.lpszTitle = sTitle
tBrowseInfo.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN

lpIDList = SHBrowseForFolder(tBrowseInfo)

If (lpIDList) Then
 sBuffer = Space(MAX_PATH)
 SHGetPathFromIDList lpIDList, sBuffer
 sBuffer = Left(sBuffer, Instr(sBuffer, Chr$(0) ) - 1)
 If Right$(sBuffer, 1) <> "\" Then sBuffer = sBuffer + "\"
 GetDirDlg = sBuffer
Else
 GetDirDlg = ""
End If

End Function

Function OpenFileDlg ()
Dim Title As String    
Dim DefExt As String
Dim szCurDir As String 
Dim APIResults%

    'Unknown function
    ' SetFileFilter

    'Give the dialog a caption title.
Title = "Add supporting document" & Chr$(0)

    'Allocate string space for returned strings
FileName = Chr$(0) & Space$(255) & Chr$(0)
FileTitle = Space$(255) & Chr$(0)

    'If the user does not specify an extension, append TXT.
DefExt = "BMP" & Chr$(0)

    'Set up the default directory
szCurDir = Curdir$ & Chr$(0)

    'Set up the data structure before you call the GetOpenFileName

OPENFILENAME.lStructSize = Len(OPENFILENAME)

    'If the OpenFile Dialog box is not linked to any form use this line.
    'It will pass a null pointer.

OPENFILENAME.hwndOwner = 0&

OPENFILENAME.lpstrFilter =  Filter
OPENFILENAME.nFilterIndex = 1
OPENFILENAME.lpstrFile = FileName
OPENFILENAME.nMaxFile = Len(FileName)
OPENFILENAME.lpstrFileTitle = FileTitle
OPENFILENAME.nMaxFileTitle = Len(FileTitle)
OPENFILENAME.lpstrTitle = Title
OPENFILENAME.Flags = OFN_FILEMUSTEXIST
OPENFILENAME.lpstrDefExt = DefExt
OPENFILENAME.hInstance = 0
OPENFILENAME.lpstrCustomFilter = 0
OPENFILENAME.nMaxCustFilter = 0
OPENFILENAME.lpstrInitialDir = szCurDir
OPENFILENAME.nFileOffset = 0
OPENFILENAME.nFileExtension = 0
OPENFILENAME.lCustData = 0
OPENFILENAME.lpfnHook = 0
OPENFILENAME.lpTemplateName = 0

    'This will pass the desired data structure to the Windows API,
    'which will in turn it uses to display the Open Dialog form.   
APIResults% = GetOpenFileName(OPENFILENAME)

If APIResults% <> 0 Then          
 FileName = Cstr( OPENFILENAME.lpstrFile )
 FileTitle = Cstr( OPENFILENAME.lpstrFileTitle )        
 OpenFileDlg = 1
Else 
 OpenFileDlg = 0
End If
End Function


Затем в нужном тебе месте вызываешь ф-ии, например:

Код:
Dim path As String

path = GetDirDlg()
Таким образом, path будет содержать путь директории (папки), выбранной пользователем.
 
Мы в соцсетях:

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