Этот пример использует простой файл MATLAB®, который берет один вход и создает магический квадрат того размера. Это затем создает COM-компонент с помощью этого файла MATLAB в качестве метода класса. Наконец, пример показывает интегрирование этого компонента в автономное приложение Microsoft® Visual Basic®. Приложение принимает размер магического квадрата, как введено и отображает матрицу в блоке управления ListView.
Примечание
ListView является управлением Windows® Form, которое отображает список элементов со значками. Можно использовать представление списка, чтобы создать пользовательский интерфейс как правая панель Windows Explorer. Смотрите MSDN Library для получения дополнительной информации о средствах управления Windows Form.
Чтобы начать, создайте файл MATLAB mymagic.m содержа следующий код:
function y = mymagic(x); y = magic(x);
В то время как в MATLAB, откройте приложение Library Compiler.
Выберите Generic COM Component как тип приложения.
Добавьте mymagic.m к списку экспортируемых функций.
mymagic.m расположен в MagicDemoComp папка.
Нажмите кнопку Package.
Примечание
Эта процедура принимает, что вы используете Microsoft Visual Basic 6.0.
Запустите Visual Basic.
В диалоговом окне New Project выберите Installed> Templates> Other Languages> Visual Basic> Windows Form Application как тип проекта и нажмите Open. Это создает новый проект Visual Basic с незаполненным бланком.
Из главного меню выберите Project> References, чтобы открыть диалоговое окно Project References.
Выберите magicdemo 1.0 Type Library из списка доступных компонентов и нажмите OK.
При возврате к главному меню Visual Basic выберите Project> Add Component..., чтобы открыть диалоговое окно Add New Item.
После того, как вы создадите проект, добавьте ряд средств управления к незаполненному бланку, чтобы создать форму со следующими настройками.
| Управляйте типом | Имя элемента управления | Свойства | Цель |
|---|---|---|---|
|
| Заголовок = | Средства управления групп |
|
| Заголовок = | Помечает окно редактирования магического квадрата. |
|
| Принимает вход размера магического квадрата. | |
|
| Заголовок = | Когда нажато, создает новый магический квадрат с текущим размером. |
|
| GridLines = LabelEdit = Просмотрите = | Отображает магический квадрат. |
Когда форма и средства управления будут завершены, добавьте следующий код в форму. Этот код ссылается на управление и упомянутые выше имена переменных. Если вы дали различные имена для каких-либо из средств управления или какой-либо переменной, измените этот код, чтобы отразить те различия.
Public Class magicvb
Private sizeMatrix As Double 'Holds current matrix size
Private theMagic As magicdemo.magicdemoclass 'magic object instance
Private Sub magicvb_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'This function is called when the form is loaded.
'Creates a new magic class instance.
On Error GoTo Handle_Error
theMagic = New magicdemo.magicdemoclass
sizeMatrix = 0
Exit Sub
Handle_Error:
MsgBox(Err.Description)
End Sub
Private Sub ShowMatrix(matrixMagic As Object)
'This function populates the ListView with the contents of
'y. y is assumed to contain a 2D array.
Dim szSquare As Long
Dim indxRow As Long
Dim indxCol As Long
Dim nLen As Long
On Error GoTo Handle_Error
'Get array size
If IsArray(matrixMagic) Then
szSquare = UBound(matrixMagic, 1)
Else
szSquare = 1
End If
lstMagic.Clear()
lstMagic.Columns.Add("")
For cIndx = 1 To szSquare
lstMagic.Columns.Add(CStr(cIndx))
Next
lstMagic.View = View.Details
For indxRow = 1 To szSquare
Dim item As New ListViewItem(CStr(indxRow))
For indxCol = 1 To szSquare
item.SubItems.Add(Format(matrixMagic(indxRow, indxCol)))
Next
lstMagic.Items.Add(item)
Next
Exit Sub
Handle_Error:
MsgBox(Err.Description)
End Sub
Private Sub btnCreate_Click(sender As Object, e As EventArgs) Handles btnCreate.Click
'This function is called when the Create button is pressed.
'Calls the mymagic method, and displays the magic square.
Dim matrixMagic As Object
If sizeMatrix <= 0 Or theMagic Is Nothing Then Exit Sub
On Error GoTo Handle_Error
Call theMagic.mymagic(1, matrixMagic, sizeMatrix)
Call ShowMatrix(matrixMagic)
Exit Sub
Handle_Error:
MsgBox(Err.Description)
End Sub
Private Sub edtSize_TextChanged(sender As Object, e As EventArgs) Handles edtSize.TextChanged
'This function is called when ever the contents of the
'Text box change. Sets the current value of Size.
On Error Resume Next
sizeMatrix = CDbl(edtSize.Text)
If Err.Number > 0 Then
sizeMatrix = 0
End If
End Sub
End ClassПосле того, как код завершен, создайте независимый исполняемый файл magic.exe:
Вновь откройте проект путем выбора File> Save Project из главного меню. Примите имя по умолчанию для основной формы и введите magic.vbp для названия проекта.
Возвратитесь к меню File. Выберите File> Make magic.exe, чтобы создать готовое изделие.
Можно запустить magic.exe исполняемый файл, когда вы были бы любая другая программа. Когда основное диалоговое окно откроется, введите положительный номер в поле ввода и нажмите Create. Магический квадрат входного размера появляется.
ListView управление автоматически реализует прокрутку, если магический квадрат больше, чем 4 на 4.