Этот пример использует простой MATLAB® файл, который принимает один вход и создает магический квадрат этого размера. Затем он создает COM- компонента, используя этот файл MATLAB в качестве метода класса. Наконец, в примере показано интегрирование этого компонента в автономную Microsoft® Визуальный базовый® применение. Приложение принимает в качестве входных данных магический размер квадрата и отображает матрицу в окне управления ListView.
Примечание
ListView является Windows® Элемент управления формы, который отображает список элементов со значками. Для создания интерфейса пользователя, например правой панели проводника Windows, можно использовать представление списка. Дополнительные сведения об элементах управления формы Windows см. в библиотеке MSDN.
Чтобы начать, создайте файл 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, чтобы открыть диалоговое окно «Ссылки проекта».
Выберите 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. Появляется магический квадрат входа размера.
The ListView
управление автоматически реализует прокрутку, если магический квадрат больше, чем 4 на 4.