VB6 Как вернуть строковое значение из формы 2 в форму 1 - PullRequest
0 голосов
/ 01 августа 2020

в моем проекте есть две формы: первая форма, которую я назвал frmSettings, я буду использовать текстовые поля для сохранения значений в файле INI. вторую форму я назвал frmSelectFolder, я включил в нее DirListBox и 2 командные кнопки

введите описание изображения здесь

, как показано на прикрепленном изображении выше в форме настроек, у меня есть 8 текстовых полей и 8 командных кнопок для поиска пути к папке, который будет выбран из frmSelectFolder

как использовать frmSelectFolder для все текстовые поля без дублирования этой формы для каждой командной кнопки, чтобы вернуть значение элемента управления DirlistBox?

1 Ответ

1 голос
/ 02 августа 2020

Вот пример кода для вторичной frmSelectFolder формы

Option Explicit

Private m_bConfirm          As Boolean

Public Function Init(sPath As String) As Boolean
    Dir1.Path = sPath
    Show vbModal
    If m_bConfirm Then
        sPath = Dir1.Path
        '--- success
        Init = True
    End If
    Unload Me
End Function

Private Sub cmdOk_Click()
    If LenB(Dir1.Path) = 0 Then
        MsgBox "Please select a path!", vbExclamation
        Exit Sub
    End If
    m_bConfirm = True
    Visible = False
End Sub

Private Sub cmdCancel_Click()
    Visible = False
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode <> vbFormCode Then
        Cancel = 1
        Visible = False
    End If
End Sub

Вот как вызвать Init метод из первичной frmSettings

Option Explicit

Private Sub cmdStartupPath_Click()
    Dim sPath           As String
    Dim oFrmSelector    As New frmSelectFolder
    
    sPath = txtStartupPath.Text
    If oFrmSelector.Init(sPath) Then
        txtStartupPath.Text = sPath
        txtStartupPath.SetFocus
    End If
End Sub

Private Sub cmdDownloadPath_Click()
    Dim sPath           As String
    Dim oFrmSelector    As New frmSelectFolder
    
    sPath = txtDownloadPath.Text
    If oFrmSelector.Init(sPath) Then
        txtDownloadPath.Text = sPath
        txtDownloadPath.SetFocus
    End If
End Sub

Вот ссылка на полный образец проекта, который вы можете изучить: SelectFolder.zip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...