![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
profispb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.12.2005 Где: Санкт - Петербург Репутация: нет Всего: 1 |
Как создать объект, контрол, т.е. кнопку или label или TextBox на форме из кода?
![]() --------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало! |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
amt |
|
||||||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 26.10.2004 Где: г. Волгоград Репутация: 3 Всего: 3 |
Вот посмотри, может быть поможет. (Я опоздал - cardinal уже ответил)
Массивы элементов управления Массивы элементов управления подобны обычным массивам переменных. Сам массив и его отдельные элементы различаются индексом. Пожалуй, вам уже приходилось создавать массив элементов управления. Это происходит при копировании элемента управления в буфер обмена. При вставке в ту же форму в ней находится еще и первоначальный элемент с тем же именем, что и в буфере обмена. Поэтому Visual Basic запрашивает, нужно ли создать массив элементов или следует дать новое имя добавляемому элементу управления. Если на запрос ответить Нет, Visual Basic поместит в форму элемент управления и даст ему имя по умолчанию, например Command!. После ответа Да в форме появятся два элемента управления с одинаковым именем. Чтобы Visual Basic мог различать эти элементы, автоматически устанавливается свойство index. Это можно заметить и в окне свойств. В списке элементов отображается несколько элементов управления с одинаковым именем, после которого в скобках указывается индекс. Значение индекса совпадает с указанным в строке index. Если же вы хотите создать массив элементов управления, не обязательно идти окольным путем с использованием буфера обмена. Достаточно установить определенное значение для свойства index, в результате чего элемент управления автоматически становится первым членом массива. При добавлении следующего элемента он получает то же имя, но другой индекс. При этом все элементы управления в массиве должны иметь одинаковый тип. Еще одно преимущество использования массива элементов управления состоит в том, что все его элементы используют одни и те же процедуры событий. Для определения элемента, вызвавшего событие. Visual Basic передает в процедуру события аргумент Index. Этот аргумент принимает различные значения для каждого элемента массива. Проверив это значение, можно определить, какое действие следует выполнять:
В этом примере всегда вызывается процедура Copy. Если элемент имеет индекс О, то после Copy дополнительно выполняется процедура Delete. Для массива элементов управления нс требуется указание индексов по порядку — каждому элементу можно присвоить произвольное значение, которое будет использовано в коде. Предположим, вы хотите с помощью кнопки установить состояние формы, воспользовавшись свойством windowState, которое может принимать три значения: О — для окна в нормальном представлении, 1 — в виде пиктограммы и 2 — для развернутого вида. Теперь в форму добавим три кнопки с одинаковыми именами, значения индексов которых соответствует значениям свойства WindowState. В общсп процедуре click индекс можно присвоить непосредственно свойству WindowSt^i t e :
Если щелкнуть на кнопке с индексом 0, форма отображается в обычном виде. Кнопка с индексом 1 сворачивает форму в пиктограмму, а третья кнопка разворачивает форму на весь экран. Load Иногда требуется использовать массив элементов управления, не зная заранее их количество. В этом случае следует воспользоваться оператором Load, который позволяет загрузить элемент управления во время работы приложения. Для этого нужен только элемент управления, определенный как массив (свойство index содержит определенное значение):
В этом примере в форме изначально присутствует кнопка с индексом 0. В ходе выполнения программы каждый щелчок на любой кнопке добавляет новую. Переменная nCounter используется для определения индекса вновь загруженного элемента. С помощью свойства visible новый элемент отображается. Так как все свойства совпадают со свойствами исходного объекта, следует изменить также свойство Тор, чтобы кнопки не накладывались одна на другую. Unload С помощью оператора Unload удаляются в любой последовательности все загруженные во время выполнения элементы управления (за исключением тех, которые были созданы при проектировании):
Массивы элементов управления позволяют значительно сократить объем кода, который необходимо написать для управления программой. Динамическое добавление элементов управления Другой метод добавления элементов управления заключается в использовании метода 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:
Во втором примере объектная переменная типа CommandButton объявляется с использованием ключевого слова withEvents, что позволяет приложению обрабатывать события добавляемого элемента управления. Option Explicit Private WithEvents btnObj As CommandButton
В третьем примере добавляется элемент управления, ссылки на который в проекте не было. Для обработки событий такого элемента управления вы должны объявить объектную переменную типа VBControlExtender и затем присвоить ей ссылку на объект, возвращаемую методом Add. Обработка всех событий элемента управления выполняется в процедуре обработки события ObjectEvent.
Примечание Прежде чем использовать метод Add для добавления элемента управления, требующего лицензии, необходимо добавить его лицензионный ключ (license key). Для удаления динамически добавленных элементов управления используйте метод Remove. Отметим, что с его помощью можно удалить только те элементы управления, которые были добавлены с помощью метода Add. Formi.Controls.Remove "btnObj" ' Удаляем объект с именем btnObj. Это сообщение отредактировал(а) amt - 18.2.2006, 19:49 --------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций. |
||||||||||||||
|
|||||||||||||||
profispb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.12.2005 Где: Санкт - Петербург Репутация: нет Всего: 1 |
Спасибо, всё понятно.
--------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |