Исходный текст
Call TestSelectDlg()
'==============================================================================
'Показать диалог выбора с разными наборами данных
Sub TestSelectDlg()
InputArray = Array("Массив строк", "Массив объектов", "Коллекция TDMSUsers")
'Открыть диалог, передав на вход массив строк
Set SelDlg = ThisApplication.Dialogs.SelectDlg
SelDlg.SelectFrom = InputArray
SelDlg.Caption = "Наименования типов входных данных"
SelDlg.Prompt = "Выберите тип данных, который будет передан диалогу:"
RetVal = SelDlg.Show
'Если ничего не выбрано, выйти из процедуры
If (RetVal <> True) Or (UBound(SelDlg.Objects)<0) Then Exit Sub
'Получить выбор пользователя - используя свойство Objects
SelectedArray = SelDlg.Objects
For i=0 To Ubound(SelectedArray)
If SelectedArray(i) = InputArray(0) Then
Call ShowStrings()
ElseIf SelectedArray(i) = InputArray(1) Then
Call ShowArray()
ElseIf SelectedArray(i) = InputArray(2) Then
Call ShowCollection()
End If
Next
End Sub
'==============================================================================
Sub ShowStrings()
'Заполнить массив строками - наименованиями типов объектов
i = -1
For Each ObjectDef In ThisApplication.ObjectDefs
i = i + 1
Redim Preserve InputArray(i)
InputArray(i) = ObjectDef.Description
Next
'Открыть диалог, передав на вход массив строк
Set SelDlg = ThisApplication.Dialogs.SelectDlg
SelDlg.SelectFrom = InputArray
SelDlg.Caption = "Наименования типов объектов"
SelDlg.Prompt = "Выберите одну или несколько строк:"
RetVal = SelDlg.Show
If RetVal <> FALSE Then
'Перечислить выбранные пользователем строки
SelectedArray = SelDlg.Objects
For Each Elem In SelectedArray
MsgBox Elem
Next
End If
End Sub
'==============================================================================
Sub ShowArray()
'Открыть диалог, передав на вход массив объектов, лежащих на Рабочем столе пользователя
Set SelDlg = ThisApplication.Dialogs.SelectDlg
SelDlg.SelectFrom = ThisApplication.Desktop.Objects
SelDlg.Caption = "Объекты на Рабочем столе"
SelDlg.Prompt = "Выберите один или несколько обеъктов:"
RetVal = SelDlg.Show
If RetVal <> FALSE Then
'Перечислить выбранные пользователем объекты
Set SelectedArray = SelDlg.Objects
For Each Elem In SelectedArray
MsgBox Elem.Description
Next
End If
End Sub
'==============================================================================
Sub ShowCollection()
'Передать на вход диалога коллекцию пользователей
Set SelDlg = ThisApplication.Dialogs.SelectDlg
SelDlg.SelectFrom = ThisApplication.Users
SelDlg.Caption = "Список пользователей"
SelDlg.Prompt = "Выберите одного или несколько пользователей:"
RetVal = SelDlg.Show
If RetVal <> FALSE Then
'Перечислить выбранных пользователей
Set SelectedUsersCol = SelDlg.Objects
For Each User In SelectedUsersCol
MsgBox User.Description
Next
End If
End Sub
'==============================================================================
Sub ShowStringCollection()
'Передать на вход диалога коллекцию с произвольными строками
set Col = ThisApplication.CreateCollection(4)
col.Add "Омск"
col.Add "Выбрг"
col.Add "Ленинград"
col.Add "Москва"
set selDlg = ThisApplication.Dialogs.SelectDlg
selDlg.SelectFrom = col
selDlg.Show
set retCol = selDlg.Objects
for each str in retCol
MsgBox str
next
End Sub
'==============================================================================
Sub ShowRoleCollection()
'Передать на вход диалога коллекцию ролей
set selDlgRoles = ThisApplication.Dialogs.SelectDlg
selDlgRoles.SelectFrom = ThisObject.Roles
selDlgRoles.Show
set retColRoles = selDlgRoles.Objects
for each Role in retColRoles
MsgBox Role.User.Description
next
End Sub
'==============================================================================
Sub ShowSheet()
'Передать на вход диалога таблицу
Set sheet = ThisApplication.CreateSheet
sheet.AddColumn(2)
sheet.AddRow(3)
sheet.CellValue(0,0) = "Москва"
sheet.CellValue(0,1) = "10500"
sheet.CellValue(1,0) = "Санкт-Петербург"
sheet.CellValue(1,1) = "5500"
sheet.CellValue(2,0) = "Владивосток"
sheet.CellValue(2,1) = "1000"
Set dlg = ThisApplication.Dialogs.SelectDlg
dlg.SelectFrom = sheet
if dlg.Show then
Set sel = dlg.Objects
MsgBox sel.CellValue(0,0)
end if
End Sub
'==============================================================================