Учебные материалы по математике | Пример динамического способа формирования объектов на форме vb | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Пример динамического способа формирования объектов на форме vb


Перед добавлением собственного кода давайте посмотрим, что именно сделал мастер. Откройте окно кода объекта UserControl и просмотрите строки, сгенерированные мастером. Программа может показаться довольно длинной, но она не так сложна, как выглядит.

И наконец, еще раз вернемся к отображению различных событий на эквивалентные события объекта UserControl. Так, когда пользователь щелкает мышью на элементе управления ActiveX, Windows отправляет событие Click объекту UserControl. Разработчик элемента управления может обработать это событие в самом создаваемом элементе управления, но в этом случае приложение, которое использует элемент, не будет видеть событие Click. Но можно и передать событие (отобразить обратно) приложению-контейнеру (например, Form1). В этом случае разработчик приложения, использующий элемент управления, сможет сам запрограммировать это событие. Можно сделать и то, и другое, то есть сначала обработать событие в элементе управления, а затем передать его контейнеру, как это будет сделано в методе UserControl_Resize.

Private Sub UserControl_Resize()

m_x = UserControl. ScaleWidth 2

m_y = UserControl. ScaleHeight 2

If m_AutoSize Then

If UserControl. ScaleWidth <= UserControl. ScaleHeight Then

m_Rmax = UserControl. ScaleWidth 2 — 15 ’15 твипов=1 пикселю

m_Rmin = UserControl. ScaleWidth 6 — 15

Else

m_Rmax = UserControl. ScaleHeight 2 — 15

m_Rmin = UserControl. ScaleHeight 6 — 15

End If

Else

m_Rmax = m_def_Rmax ‘Возвращаем умалчиваемые значения

m_Rmin = m_def_Rmin

End If

UserControl. Refresh Обновить объект UserControl

RaiseEvent Resize Передаем событие контейнеру

End Sub

Передать событие приложению-контейнеру можно с помощью метода RaiseEvent. Так, событие Click объекта UserControl определено следующим образом.

Private Sub UserControl_Click()

RaiseEvent Click

End Sub

1. ‘Default Property Values:

Property Variables:

Это раздел объявлений. Здесь описываются константы, принятые по умолчанию, и закрытые переменные, характеризующие специальные свойства элемента управления. Элемент управления получает значение, введенное пользователем в окне свойств, и связывает их с закрытыми переменными. Имена констант и переменных основаны на именах свойств и их код можно легко редактировать.

1.1.Сделаем так, чтобы допустимые значения свойства отображались в раскрывающемся списке окна свойств, как в других элементах управления VB. Для этого следует добавить специальный код, который бы отображал только допустимые значения свойств Shape и FigureStyle и таким образом ограничивал выбор пользователя именно этими значениями. Если приложение использует переменную, которая может принимать только ограниченное число целочисленных значений, то можно использовать перечислимый тип, который объявляется с помощью структуры Enum … End Enum. Свойства Shape и FigureStyle как раз и будут являться такими переменными.

• Откройте окно кода проекта FlexProject и добавьте в секцию Declarations объявленные типы и описание переменных.

Это объявление сообщает Visual Basic, что переменная m_Shape типа Figure может принимать лишь значения от 0 до 2, а переменная m_FigureStyle типа FStyle – значения от 0 до 1 (перечислимые значения соответствуют числам, начинающимся с 0). Строки в объявлении типа являются синонимами соответствующих числовых значений, которые будут отображаться в окне свойств. Квадратные скобки в объявлении типа обязательны только для строк содержащих пробелы (или другие недопустимые символы).

• Теперь можно заменить тип у свойств Shape и FigureStyle с Byte на Figure и FStyle.

Пользователь уже не сможет выбрать недопустимое значение для этого свойства в окне свойств. Попытка же присвоить перечислимой переменной недопустимое значение в режиме выполнения программы приведет к сообщению об ошибке.

2. Event Declarations:

Это объявления событий. Эти события были определены в первых двух окнах мастера и отображены на объект UserControl. Если события не были отображены на объект UserControl, то только UserControl будет их видеть, и пользоваться ими смогут лишь разработчики элемента. В нашем элементе управления не требуется как-то по-особенному использовать события, поэтому предоставим эту возможность контейнеру-приложению (например, Form1), на котором будет использоваться созданный нами элемент управления ActiveX.

Чтобы ActiveX-компонент был виден проекту, его необходимо зарегистрировать в системе. Для этого следует создать осх-файл командой FileMake FlexProject. ocx, которая доступна только при активном окне UserControl.

Осх-файлы могут быть расположены в любом месте на диске, но система по умолчанию начинает искать их в папке Windows System32. При создании осх-файла VB автоматически регистрирует его в системном реестре. Следовательно, если Вы создали осх-файл в другом месте, то его не следует в дальнейшем перемещать.

Чтобы иметь возможность использовать элемент ActiveX в других компьютерах, следует применить утилиту regsvr32.exe (сервер регистрации), передавая ей имя осх-файла в качестве параметра. Например, можно использовать следующую команду: REGSVR32 FlexProject. ocx

Если осх-файл был сохранен в иной папке, отличной от папки Windows System32, то следует сначала перейти в эту папку, а затем выполнить следующую команду: С:WINDOWSSYSTEM32REGSVR32 FlexProject. ocx

Чтобы удалить элемент управления из реестра Windows, также следует использовать утилиту Regsvr32, но с ключом /U. Например, удалим элемент управления FlexShape из реестра: С:WINDOWSSYSTEM32REGSVR32 FlexProject. ocx/U

Таким же образом можно устанавливать в системе или удалять из нее библиотеки динамической компоновки. Например, REGSVR32 StarP. dll.

9. Пример динамического способа формирования объектов на форме VB.

пример:Динамически сформ-ть объекты на форме VB/

Dim Text1 As TextBox, Text2 As TextBox, Text3 As TextBox

‘объекты Text1 и Text2,Text3 не будут сод-ть события

Dim WithEvens Command1 As CommandButton

Private Sub Form_Load()

Me. ScaleMode=3 Режим-пиксели для объектов формы

End Sub

Private Sub Form_Unload(Cancel As Integer)

Set Command1=Nothing

Set Text1=Nothing

Set Text2=Nothing

Set Text3=Nothing

End Sub

Private Sub Form_Activate()

MsgBox "мы сформировали дин-кую форму в среде VB"

End Sub

Private Sub Form_Initialize()

Me. Width=4000 для формы размеры задаются в твипах

Me. Height=2600 при разрешении экрана 1280*1024 точек

Set Text1=Controls. Add("VB. TextBox","T1",Form1)

Set Text2=Controls. Add("VB. TextBox","T2",Form1)

Set Text3=Controls. Add("VB. TextBox","T3",Form1)

Set Command1=Controls. Add ("VB. CommandButton","Cmd1",Form1)

Text1.Visible=True

Text2.Visible=True

Text3.Visible=True

Command. Visible=True

Command1.FontBold=True

Text1.FontBold=True

Text2.FontBold=True

Text3.FontBold=True

Text1.Left=12 Размеры эл-ов на форме в пикселях

Text1.Top=6

Text1.Width=270

Text1.Height=18

Text2.Left=12

Text2.Top=36

Text2.Width=270

Text2.Height=18

Text3.Left=12

Text3.Top=66

Text3.Width=270

Text3.Height=18

Command1.Left=45 Command1.Top=100

Command1.Width=200

Command1.Height=40

Command1.Caption="Вычислить выражение"

End Sub

Private Sub Command1_Click()

Dim a As Double, b As Double, c As Double

On Error GoTo 100

a=Text1

b=Text2 c=a*b

Text3=c

Exit Sub

100

MsgBox "Вы уверены, что ввели значения в текстовые поля?",vbQuestion,_"Динамическая форма" End Sub

10)Пример работы с коллекцией объектов, свойствами и методами объектов.

Пример 59. Объявить событие в модуле класса, а запрограммировать его в модуле формы.

Пусть событие (назовем его MTS) имеет два параметра. Первый – числовой, второй – логический. Событие будет реализовываться в методе Long1. Выполните следующие действия.

·  Создайте новый проект с шаблоном Standard EXE.

·  С помощью команды ProjectAdd Class Module добавьте модуль класса с именем Class1 в проект, используя шаблон Class Module на закладке New.

·  Поместите в него следующий код.

Public Event MTS(ByVal Percent As Single, ByRef Cancel As Boolean)

Public Sub Long1(ByVal f As Single, c As Boolean)

RaiseEvent MTS(f, c) ‘Вызов события MTS с двумя параметрами

End Sub

·  Теперь добавьте в область GD окна Code модуля формы следующий код:

Private WithEvents mW As Class1, nCancel As Boolean, r As Single

‘Ключевое слово WithEvents означает, что объект mW содержит события

Private Sub Command1_Click()

nCancel = False

r = Rnd

Set mW = New Class1 ‘Создание нового объекта на основе класса

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020

А ты боишься COVID-19?

 Пройди опрос и получи промокод