Этот пример использует простой файл 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.