Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Динамическое добавление элементов управления

Поиск:
Добавление новых элементов управления необходимо в приложениях, в которых заранее не известно сколько и чего потребуется, поэтому при программировании желательно предусмотреть возможность нехватки контролов, об этом и пойдет речь в данной статье.
Добавление новых элементов управления необходимо в приложениях, в которых заранее не известно сколько и чего потребуется, поэтому при программировании желательно предусмотреть возможность нехватки контролов, об этом и пойдет речь в данной статье.

Есть несколько способов создания массива элементов управления, например такой: вы помещаете на форму контрол, при этом устанавливая его Index = 0, что автоматически создает массив элементов управления, где этот контрол становиться первым. потом вы добавляете контролы командой Load {Control}(Index As Integer)

Пример:
Создаем простой exe проект и натягиваем на него кнопку, ставим Index=0 и пишем следующий код:
Код
Dim mCount As Integer
Private Sub Command1_Click(Index As Integer)
mCount = mCount + 1
Load Command1(Count) 'Добавляем контрол с индексом на единицу большим, чем последний в массиве
Command1(mCount).Height = Command1(0).Height 'Устанавливаем параметры
Command1(mCount).Width = Command1(0).Width
Command1(mCount).Visible = True 'Делаем видимым
Command1(mCount).Left = Command1(mCount - 1).Left + Command1(0).Width 'Размещаем на форме
Command1(mCount).Top = Command1(0).Top
End Sub

Private Sub Form_Load()
mCount = 0 'Декларируем значение равное индексу первой в массиве кнопки
End Sub

Так мы создаем последовательность кнопок, которая увеличивается при каждом нажатии. Но мало пользы было бы от такой системы добавления если бы нельзя было бы удалять контролы. Делается это соответственно командой Unload{control}(Index As Integer)

Пример;
На нашу форму из предыдущего примера поместим еще одну кнопку, и добавим такой код:
Код
Private Sub delet_Click()
Unload Command1(mCount)
End Sub

Но сразу предупреждаю, что НЕЛЬЗЯ удалить элемент добавленный во время проектирования формы!!!! Поэтому будьте аккуратны.

Есть и второй способ добавления контролов на форму. Он заключается в применении метода Add, который имеется в семействе Controls. Этот способ гораздо лучше, т.к. вам не обязательно создавать первые элементы в массивах. Все уже будет создаваться непосредственно при работе пользователя с программой. Вы можете полностью задать изменение интерфейса программы только лишь добавив соответствующий код.

Выглядит использование этого метода так: Object.Add (ProgID,Name,Container)
Object - Объект в который вы добавляете контролы (хотя обычно говорят для которого добавляются объекты).
ProgID - описатель нового элемента управления
Name - имя нового элемента
Container - ссылка на контейнер для нового элемента, этот параметр можно пропускать.

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

Пример:
Код
'Сообщаем системе что хотим использовать обработчик событий с кнопкой
Private WithEvents NewButton As CommandButton

Private Sub NewButton_Click() 'Код обработки события нажатия на кнопку
MsgBox "Вы нажали на новую кнопку"
End Sub

Private Sub Form_Click()
Set NewButton = Controls.Add("VB.CommandButton", "NewButton") 'при клике по форме появляется новая кнопка
NewButton.Visible = True
NewButton.Height = 1000
NewButton.Width = 1000
NewButton.Top = 0
NewButton.Left = 0
NewButton.Caption = "Нажми на меня!!!!"
End Sub

Удалить элемент управления легко:
Код
Form1.Controls.Remove "NewButton"

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

Список интендификаторов стандартных элементов управления:
VB.ComandButton - Кнопка
VB.ComboBox - Раскрывающийся список
VB.DirListBox - Список директорий
VB.DriveListBox - Список устройств
VB.FileListBox - Список файлов
VB.Form - Форма
VB.Frame - Рамка
VB.HScrollBar - Горизонтальная полоса прокрутки
VB.Image - Изображение
VB.Label - Надпись
VB.Line -Линия
VB.ListBox - Список
VB.MDIForm - MDI форма
VB.Menu - Меню
VB.OLE - OLE Компонент
VB.OptionButton - Выбор
VB.PictureBox - Картинка
VB.Shape - Окружность
VB.TextBox - Текстовое окно
VB.UserControl - Пользовательский контрол
VB.UserDocument - Пользовательский документ
VB.VScrollBar - Вертикальная полоса прокрутки
VB.Timer - Таймер

И это еще не все, но больше не помню. Да вы и сами можете в Object Browser посмотреть в модуле VB. Да и еще, если вы добавляете ActiveX контрол, который требует лицензионных ключей, то не забудьте добавить и ключ.
Динамическое добавление контролов - мощный способ изменения ваших приложений в процессе работы, наиболее удобен метод Add, а метод load применяется обычно при добавлении статических объектов, когда и обрабатывать ничего не надо.

Ответ взят на: www.vbstreets.ru
Автор: unknown
Сайт: http://






Просмотров: 8730

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную