Один простой способ сделать это - создать новый проект ActiveX DLL в среде IDE VB6, а затем добавить новую форму в проект. Вам также нужен класс, но вы можете просто переименовать стандартное «Class1», которое добавляется в проект.
Создайте форму, как вы это обычно делаете, а затем напишите класс, который имеет функцию для отображения формы, и при необходимости верните информацию обратно вызывающей стороне (через возвращаемое значение, события или открытые свойства класса). Как только вы скомпилируете DLL, другие проекты могут использовать вашу форму, добавив ссылку на вашу DLL и создав экземпляр открытого класса.
Ниже приведен очень простой пример, который демонстрирует, как можно создать общий диалог входа в систему, который затем можно будет повторно использовать в нескольких проектах. Диалог входа в систему просто отображает экран входа в систему с полями имени пользователя и пароля, а также кнопками OK и Отмена. Открытый класс, LoginDialog
, может использоваться другими проектами для фактического отображения формы входа в систему и извлечения данных из нее (фактическое имя пользователя и пароль, введенные пользователем, и независимо от того, отменял ли пользователь диалог или нет). Открытый класс - это оболочка вокруг функций, предоставляемых формой.
Обратите внимание, что это всего лишь быстрый пример, демонстрирующий концепцию
- Затем добавьте следующий код в frmLogin.frm :
'frmLogin.frm'
Public Cancelled As Boolean 'Set if the user clicks Cancel or closes the form'
Private Sub cmdCancel_Click()
'User cancelled the dialog by clicking Cancel...'
Me.Cancelled = True
Me.Hide
End Sub
Private Sub Form_QueryUnload(Cancel As Integer)
'User cancelled the dialog by closing the window...'
Me.Cancelled = True
Me.Hide
End Sub
Private Sub cmdOK_Click()
'Make sure the user filled in both fields.'
If Trim(txtUsername.Text) = "" And _
Trim(txtPassword.Text) = "" Then
MsgBox "You must enter both a username and password."
Exit Sub
ElseIf Trim(txtUsername.Text) = "" Then
MsgBox "You must enter a username."
Exit Sub
ElseIf Trim(txtPassword.Text) = "" Then
MsgBox "You must enter a password."
Exit Sub
End If
'User filled in the necessary data - we can hide the form now'
Me.Cancelled = False
Me.Hide
End Sub
- Переименуйте «Class1» в проекте в «LoginDialog» и добавьте следующий код. Это класс, который другие проекты будут использовать для воспроизведения формы входа (frmLogin):
'LoginDialog.cls'
'A public class that allows other projects to display a login '
'dialog and retrieve the user`s login information and whether or not '
'they cancelled the dialog. '
'This code assumes you have a form in the same project named frmLogin'
'and that it contains 2 textboxes, txtUsername and txtPassword, and '
'2 command buttons, cmdOK and cmdCancel. '
' '
Public Username As String 'The username entered by the user'
Public Password As String 'The password entered by the user'
Public CancelledByUser As Boolean 'True if the user cancels or closes the form'
'Shows a new Login form with the specified defaults filled in, if provided.'
' '
' '
Public Function Show()
'Create the login form and fill in the defaults'
Dim frm As frmLogin
Set frm = New frmLogin
frm.txtUsername = Me.Username
frm.txtPassword = Me.Password
'Shows the form until it is hidden or closed'
frm.Show vbModal
If frm.Cancelled Then
Me.CancelledByUser = True
Else
'Get the username and password from the form'
Me.Username = frm.txtUsername
Me.Password = frm.txtPassword
Me.CancelledByUser = False
End If
'Unload the form'
Unload frm
End Function
Скомпилируйте проект ActiveX и присвойте ему имя (например, MyAppLoginUI ), чтобы вы могли легко идентифицировать его при необходимости добавить его в другие проекты.
Если вы хотите использовать форму в другом проекте, перейдите в меню Проект -> Ссылки ... и добавьте свою ActiveX DLL в проект. Возможно, вам придется нажать Browse...
, чтобы найти его. Ниже приведен пример того, как другой код может использовать пример диалога входа в систему, который мы только что создали:
'LoginExample.bas'
' A simple example of how another project might use '
' the generic login form created in the previous steps. '
' This example displays the login screen, then tries '
' to authenticate the user against a database. '
' '
Public Sub PerformLogin()
Dim login As New LoginDialog
'Pre-fill the username with the username of the last user who logged in.'
login.Username = GetSetting("MyApp", "Settings", "LastUser")
'Show the login screen. It will stay up until the user clicks OK or Cancel'
login.Show()
'If the user cancelled the login form, exit now...'
If login.CancelledByUser Then
Exit Sub
End If
'Pretend DAL is a data access layer module...'
If Not DAL.LoginUser(login.Username, login.Password)
MsgBox "Invalid username or password.", vbCritical+vbOKOnly, "Login Failure"
End If
End Sub