Как добавить элемент управления во время разработки, не используя Drag 'n' Drop? - PullRequest
2 голосов
/ 16 ноября 2008

Я пытаюсь создать элемент управления типа мастера в VB6 и наткнулся на камень преткновения.

Я бы хотел, чтобы пользователи элемента управления могли добавлять CWizardPage (ы) и управлять ими в элементе управления временем разработки, используя страницу свойств.

Первым подходом, который я использовал, было добавление страниц мастера в OCX напрямую с использованием Collection, однако я столкнулся с двумя проблемами, заключающимися в том, что класс Collection не является постоянным (и я не мог найти простой способ сделать это так). ) и что VB6 кажется очень ограниченным в своей способности создавать экземпляры элементов управления во время выполнения - так что, казалось бы, это была попытка фактически восстановить их.

Моей следующей мыслью было просто позволить пользователям рисовать страницы мастера во время разработки. Такого рода работы, однако слишком просто нарисовать одну из страниц мастера внутри другой страницы мастера, а не внутри CWizardContainer.

Так может ли кто-нибудь сказать мне, как добавить элементы управления в форму во время разработки, не используя drag 'n' drop?

Ответы [ 3 ]

1 голос
/ 17 ноября 2008

Вы можете динамически добавлять элементы управления в форму или другой контейнер (например, UserControl), используя метод Add коллекции Controls контейнера. Например, чтобы добавить TextBox с именем myTextBox к форме с именем frmMyForm, вы можете сделать это:

frmMyForm.Controls.Add "VB.TextBox", "myTextBox"

Вот фрагмент из файла справки VB6:

Добавить метод (коллекция элементов управления)


Добавляет элемент управления к Controls коллекция и возвращает ссылку на контроль.

Синтаксис

объект . Добавить (*** ProgID, имя, контейнер *) **

Синтаксис метода Add состоит из следующих частей:

объект (обязательно)

Выражение объекта, которое оценивается как объект в списке Применяется к .

ProgID (обязательно)

Строка, которая идентифицирует контроль. ProgID of большинство элементов управления могут быть определены просмотр обозревателя объектов. ProgID состоит из библиотеки и класса контроля. Например, ProgID элемента управления CommandButton: VB.CommandButton. В случаях, когда ProgID отличается от показанного в Обозреватель объектов, Visual Basic отображает сообщение об ошибке, содержащее правильный ProgId.

имя (обязательно)

Строка, идентифицирующая члена коллекция.

контейнер (опционально)

Ссылка на объект, которая определяет Контейнер контроля. Если не указано или NULL, по умолчанию контейнер, к которому относится элемент управления коллекция принадлежит. Вы можете положить контроль в любом существующем контейнере управление (например, управление кадром) указав этот аргумент. Пользователь элемент управления или документ ActiveX может также быть контейнером.

0 голосов
/ 24 февраля 2009

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

0 голосов
/ 17 ноября 2008

... VB6 кажется очень ограниченным способность создавать элементы управления при запуске время ... * * 1002

Ничто не может быть дальше от истины. Создание элементов управления во время выполнения в VB6 тривиально.

  1. Во время разработки установите индекс свойство элемента управления до 0. Это превращает контроль в контроль массив.
  2. Во время выполнения загружайте новые экземпляры элемента управления по мере необходимости.

В качестве примера, создайте новый проект Standard EXE, перетащите TextBox на форму, установите его Index на 0 и поместите в событие Form_Load следующее:

Private Sub Form_Load()

    Dim newIndex As Integer

    newIndex = Text1.UBound + 1
    Load Text1(newIndex)
    Text1(newIndex).Top = Text1(newIndex - 1).Top + Text1(newIndex - 1).Height
    Text1(newIndex).Visible = True

End Sub
...