Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание объекта 
:(
    Опции темы
profispb
Дата 18.2.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.12.2005
Где: Санкт - Петербург

Репутация: нет
Всего: 1



Как создать объект, контрол, т.е. кнопку или label или TextBox на форме из кода? smile
--------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало!
PM MAIL ICQ   Вверх
cardinal
Дата 18.2.2006, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
amt
Дата 18.2.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Вот посмотри, может быть поможет. (Я опоздал - cardinal уже ответил)

Массивы элементов управления
Массивы элементов управления подобны обычным массивам переменных.
Сам массив и его отдельные элементы различаются индексом.
Пожалуй, вам уже приходилось создавать массив элементов управления. Это
происходит при копировании элемента управления в буфер обмена. При
вставке в ту же форму в ней находится еще и первоначальный элемент с тем же
именем, что и в буфере обмена. Поэтому Visual Basic запрашивает, нужно ли
создать массив элементов или следует дать новое имя добавляемому элементу
управления.

Если на запрос ответить Нет, Visual Basic поместит в форму элемент
управления и даст ему имя по умолчанию, например Command!.
После ответа Да в форме появятся два элемента управления с одинаковым
именем. Чтобы Visual Basic мог различать эти элементы, автоматически
устанавливается свойство index.
Это можно заметить и в окне свойств. В списке элементов отображается
несколько элементов управления с одинаковым именем, после которого в
скобках указывается индекс. Значение индекса совпадает с указанным в строке
index.
Если же вы хотите создать массив элементов управления, не обязательно
идти окольным путем с использованием буфера обмена. Достаточно установить
определенное значение для свойства index, в результате чего элемент
управления автоматически становится первым членом массива. При
добавлении следующего элемента он получает то же имя, но другой индекс. При
этом все элементы управления в массиве должны иметь одинаковый тип.
Еще одно преимущество использования массива элементов управления
состоит в том, что все его элементы используют одни и те же процедуры
событий. Для определения элемента, вызвавшего событие. Visual Basic передает
в процедуру события аргумент Index.
Этот аргумент принимает различные значения для каждого элемента
массива. Проверив это значение, можно определить, какое действие следует
выполнять:

Код

Private Sub CutCopy_Click(Index As Integer)
Call Copy
If Index = 0 Then Call Delete
 End Sub

В этом примере всегда вызывается процедура Copy. Если элемент имеет
индекс О, то после Copy дополнительно выполняется процедура Delete.
Для массива элементов управления нс требуется указание индексов по
порядку — каждому элементу можно присвоить произвольное значение, которое
будет использовано в коде.
Предположим, вы хотите с помощью кнопки установить состояние формы,
воспользовавшись свойством windowState, которое может принимать три
значения:
О — для окна в нормальном представлении, 1 — в виде пиктограммы и 2 — для
развернутого вида.
Теперь в форму добавим три кнопки с одинаковыми именами, значения
индексов которых соответствует значениям свойства WindowState.

В общсп процедуре click индекс можно присвоить непосредственно свойству
WindowSt^i t e :
Код

Private Sub aWindow Click(Index As Integer)
Form!.WindowState = Index
End Sub

Если щелкнуть на кнопке с индексом 0, форма отображается в обычном виде.
Кнопка с индексом 1 сворачивает форму в пиктограмму, а третья кнопка
разворачивает форму на весь экран.
Load
Иногда требуется использовать массив элементов управления, не зная
заранее их количество. В этом случае следует воспользоваться оператором Load,
который позволяет загрузить элемент управления во время работы приложения.
Для этого нужен только элемент управления, определенный как массив
(свойство index содержит определенное значение):
Код

Private Sub Commandl_Click(Index As Integer)
Static nCounter As Integer
nCounter = nCounter + 1
Load Commandl(nCounter)
Command!(nCounter).Visible = True »
Commandl(nCounter).Top = nCounter * 100 
End Sub

В этом примере в форме изначально присутствует кнопка с индексом 0. В
ходе выполнения программы каждый щелчок на любой кнопке добавляет новую.
Переменная nCounter используется для определения индекса вновь
загруженного элемента. С помощью свойства visible новый элемент
отображается. Так как все свойства совпадают со свойствами исходного объекта,
следует изменить также свойство Тор, чтобы кнопки не накладывались одна на
другую.
Unload
С помощью оператора Unload удаляются в любой последовательности все
загруженные во время выполнения элементы управления (за исключением тех,
которые были созданы при проектировании):
Код

Private Sub Commandl_Click(Index As Integer)
Unload Commandl(Index)
End Sub

Массивы элементов управления позволяют значительно сократить объем
кода, который необходимо написать для управления программой.
Динамическое добавление элементов управления
Другой метод добавления элементов управления заключается в
использовании метода Add семейства Controls. С помощью этого метода вы
можете добавить в форму: элемент управления на основании существующего
(например, еще одно поле для ввода); элемент управления нового типа
(например, кнопку в форму в которой кнопок не было); элемент управления,
ссылки на который до этого в проекте не было. Динамическое добавление
элементов управления может быть использовано для расширения
функциональных возможностей приложения даже после его создания и
установки. Например, вы можете создать приложение, способное не только
изменять набор доступных пользователю элементов управления в зависимости
от прав пользователя или круга решаемых задач, но и считывать этот набор из
файла или базы
данных, что позволит модифицировать приложение без перекомпиляции и
переустановки.
Синтаксис метода Add следующий:
object.Add (ProgiD, name, container)
где: object — обязательный параметр, представляющий собой объект (семейство
Controls), в который добавляется элемент управления. progiD — обязательный
аргумент — строкаkидентификатор элемента управления. Значение ProgiD для
большинства элементов управления можно определить с помощью утилиты
Object Browser; это значение обычно составляется из имени библиотеки и имени
класса конкретного элемент управления (например, для элемента
CommandButton ProgiD = VB.CommandButton). name — обязательный аргумент
— строка, идентифицирующая элемент семейства. container — необязательный
аргумент — ссылка на объектkконтейнер для элемент управления. Если этот
аргумент не определен или равен NULL, то принимается по умолчанию контейнер,
которому принадлежит семейство controls. Приведем несколько примеров
использования этого метода. В первом примере при загрузке формы
динамически добавляется элемент управления CommandButton:
Код

Private Sub Form_Load()
Forml.Controls.Add "VB.CommandButton", "cmdObjl", Framel With
FormlicmdObjl .Visible = True
•Width = 2000
.Caption = "Динамическая кнопка" End With
End Sub

Во втором примере объектная переменная типа CommandButton
объявляется с использованием ключевого слова withEvents, что позволяет
приложению обрабатывать события добавляемого элемента управления.
Option Explicit Private WithEvents btnObj As CommandButton
Код

Private Sub btnObj_Click ()
MsgBox "Это динамически добавленная кнопка." End
Sub
Private Sub Form_Load()
Set btnObj = Controls.Add("VB.CommandButton", "btnObj") With btnObj
.Visible = True .Width =2000
•Caption = "Hello" 
.Top = 1000 .Left = 1000 
End With 
End Sub

В третьем примере добавляется элемент управления, ссылки на который в
проекте не было. Для обработки событий такого элемента управления вы
должны объявить
объектную переменную типа VBControlExtender и затем присвоить ей ссылку на
объект, возвращаемую методом Add. Обработка всех событий элемента
управления выполняется в процедуре обработки события ObjectEvent.
Код

Option Explicit Dim ctlExtender As VBControlExtender
Private Sub Form_Load()
Set ctlExtender = Controls.Add("Projectl.UserControll", "MyControl") With ctlExtender
•Visible = True
•Top [ 1000 \. .Left = 1000
 End With 
End Sub
Private Sub extObj_ObjectEvent(Info As Eventlnfo)
' Обработка событий добавленного элемента управления Select
Case Info.Name Case "UserName"
' Проверка значения свойства UserName. MsgBox
Info.EventParameters ("UserName")'. Value Case Else ' Другие
события
' Обработка других событий. End Select 
End Sub

Примечание
Прежде чем использовать метод Add для добавления элемента управления,
требующего лицензии, необходимо добавить его лицензионный ключ (license
key).
Для удаления динамически добавленных элементов управления используйте
метод Remove. Отметим, что с его помощью можно удалить только те элементы
управления, которые были добавлены с помощью метода Add.
Formi.Controls.Remove "btnObj" ' Удаляем объект с именем btnObj.

Это сообщение отредактировал(а) amt - 18.2.2006, 19:49
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
profispb
Дата 18.2.2006, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.12.2005
Где: Санкт - Петербург

Репутация: нет
Всего: 1



Спасибо, всё понятно.
--------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0677 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.