Справочное руководство по TDMS 7.0 API
Example
Смотри также Отправить замечание

Glossary Item Box

Исходный текст

Option Explicit
Call TestMailFolders()


'==============================================================================
' Вывести информацию обо всех связях объекта
'==============================================================================
Sub TestMailFolders()
        
        Dim SelDlg, RetVal, strAction, ArActions, FCol
        
        Set FCol = ThisApplication.MailFolders
        ArActions = Array("Создать почтовую папку", "Удалить почтовую папку")
        
        'Предоставить пользователю выбрать действие 
        Set SelDlg = ThisApplication.Dialogs.SelectDlg
        SelDlg.SelectFrom = ArActions 
        SelDlg.Prompt = "Выберите действие:"
        RetVal = SelDlg.Show
        
        'Если пользователь отменил диалог или ничего не выбрал, закончить работу.
        'Диалог вернул массив, поскольку был инициализирован строковым массивом
        If (RetVal <> TRUE) Or (UBound(SelDlg.Objects)<0) Then Exit Sub
        
        'Выполнить все заданные действия
        For Each strAction In SelDlg.Objects
                If StrComp(strAction, ArActions(0))=0 Then
                                                                                    Call CreateFolder(FCol)
                ElseIf StrComp(strAction, ArActions(1))=0 Then
                                                                                    Call RemoveFolder(FCol)
                End If
        Next
        
                
End Sub
'==============================================================================


'==============================================================================
'Создать новую почтовую папку в ящике текущего пользователя
'==============================================================================
Sub CreateFolder(FCol)
        Dim MailFolderDlg, NewFolder
        
        'Создать новый объект TDMSMailFolder в коллекции
        Set NewFolder = FCol.Create
        'Присвоить описание
        NewFolder.Description = "Test"        
        NewFolder.SysName = "TEST_MAILFOLDER"
        'Открыть созданную папку в диалоге
        Set MailFolderDlg = ThisApplication.Dialogs.MailFolderDlg
        MailFolderDlg.Object = NewFolder
        MailFolderDlg.Show
        'В логах отладчика выводим идентификатор
        ThisApplication.DebugPrint("Идентификатор новой почтовой папки - " & NewFolder.Handle)
End Sub
'==============================================================================

'==============================================================================
'Удалить почтовую папку из приложения 
'==============================================================================
Sub RemoveFolder(FCol)
        Dim ArSize, ArFolders, fld, i, SelDlg, RetVal, bDelete
        
        'Заполнить массив ссылками на почтовые папки текущего пользователя
        ArSize = ThisApplication.MailFolders.Count
        ReDim ArFolders(ArSize)
        
        For i=0 To ArSize-1
                Set ArFolders(i) = ThisApplication.MailFolders(i)
        Next
        
        'Открыть диалог выбора, передав на вход массив ссылок
        Set SelDlg = ThisApplication.Dialogs.SelectDlg
        SelDlg.SelectFrom = ArFolders
        SelDlg.Caption = "Все почтовые папки пользователя"
        SelDlg.Prompt = "Выберите папку для удаления:"
        RetVal = SelDlg.Show
        
        'Проверить наличие тестовых почтовых папок среди удаляемых
        With SelectDlg.Objects
            For i = 0 to .Count - 1
                    if .Item(i).Description = "Test" Then
                        MsgBox ("Системное имя тестового папки для удаления - " & .Item(i).SysName)
                    End If
            Next
        End With
        
        
        'Если пользователь отменил диалог или ничего не выбрал, закончить работу.
        'Диалог вернул массив, поскольку был инициализирован массивом
        If (RetVal <> TRUE) Or (UBound(SelDlg.Objects)<0) Then Exit Sub
        
        'Отключить обработку ошибок (они могут возникнуть при удалении)
        On Error Resume Next
        
        'Собственно удаление перечисленных папок
        For Each fld In SelDlg.Objects
        
                'Если в папке есть сообщения, запросить подтверждение удаления
                bDelete = TRUE
                If fld.Messages.Count<>0 Then
                        bDelete = MsgBox("Папка содержит сообщения. Удалить в любом случае?", _
                                vbQuestion+vbYesNo)
                End If
        
                'Попытаться удалить указанную пользователем папку
                If bDelete Then
                        MsgBox ("Номер удаленной папки - " & Fcol.Index(fld))
                        FCol.Erase fld 
                        'Если ошибка была, возможно папка системная (предустановленная) 
                        If Err<>0 Then
                                MsgBox "Ошибка удаления папки """ & fld.Description & """." & Chr(13) &_
                                                "Код ошибки: " & Err, vbExclamation     
                        End If        
                        
                        'Обнулить ошибку
                        Err=0
                End If
        Next
        
End Sub
'==============================================================================
© 2023 CSoft Development. Все права защищены.