Страница: 1 | 2 |
Вопрос: Как создать элемента на форме VB 6.0 динимически
Добавлено: 15.06.07 11:05
Автор вопроса: valera
Не смог создать программно элемент на форме VB 6.0.
Кажется все перепробовал. Неужели действительно нельзя?
Могу предложить взамен программный способ создания элемента на форме VBA Excel.
Ответы
Всего ответов: 22
Номер ответа: 1
Автор ответа:
SAVok
ICQ: 155153916
Вопросов: 2
Ответов: 126
Профиль | | #1
Добавлено: 15.06.07 11:59
А как пробовал?Вроде все должно создаваться как по букварю.
Пишите код.
Номер ответа: 2
Автор ответа:
Yanex
ICQ: 387761649
Вопросов: 32
Ответов: 169
Web-сайт:
Профиль | | #2
Добавлено: 15.06.07 12:48
На примере кнопки.
1. Создайте кнопку с именем cmdE. Присвойте значение Index=1.
2. Когда нужно добавить новую кнопку, используйте следующий код:
NewIndex = cmdE.UBound + 1
Load cmdE(NewIndex)
cmdE(NewIndex).Visible = True
Примерно такой код. Если закралась какая ошибка, исправьте. Пишу без VB.
Вот. И свежесозданный контрол cmd(NewIndex) готов к использованию. Что может быть проще?
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 15.06.07 13:24
Или через API CreateWindow/CreateWindowEx для стандартных контролов
Номер ответа: 4
Автор ответа:
valera
Вопросов: 1
Ответов: 9
Профиль | | #4
Добавлено: 15.06.07 15:01
Спасибо за код! Он действительно работает,
если на форме создан первый элемент массива "контрол".
Однако, вопрос все же остается открытым - как создать первый элемент "контрол" на форме программно?
Номер ответа: 5
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #5
Добавлено: 15.06.07 15:08
Поищи, совсем недавно наткнулся на код на этом форуме. Врать не буду, но интересовался вроде бы Kreator
Номер ответа: 6
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #6
Добавлено: 15.06.07 15:42
Если контрол стандартный, то вызываешь CreateWindow или CreateWindowEx. Этими функциями можно создать и основное окно ("форму" VB) и любые стандартные контролы в любом количестве - от одного до .. до максимального числа HWND в системе. Кажется до 65536 штук, включая уже созданные системой и другими программами, но это ещё может зависеть от версии винды. За примерами - в API Guide!
Номер ответа: 7
Автор ответа:
Nash Bridges
Вопросов: 5
Ответов: 139
Профиль | | #7
Добавлено: 15.06.07 15:44
и создавали они контроли динимически, и продолжалось так без малости 10 зим и 10 лет, и невдомек им было обращать взоры свои на поиск в летописях.
Номер ответа: 8
Автор ответа:
valera
Вопросов: 1
Ответов: 9
Профиль | | #8
Добавлено: 15.06.07 15:48
Неужели нет более простого способа создания
элемента на форме, не прибегая к API?
Номер ответа: 9
Автор ответа:
valera
Вопросов: 1
Ответов: 9
Профиль | | #9
Добавлено: 15.06.07 16:00
Будьте так любезны, не сочтите за труд, дайте ссылку на летопись!
Номер ответа: 10
Автор ответа:
Nash Bridges
Вопросов: 5
Ответов: 139
Профиль | | #10
Добавлено: 15.06.07 16:05
Летопись русьнета ya.ru
Летопись нета google.com
местная летопись - внизу пейджа
Номер ответа: 11
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #11
Добавлено: 15.06.07 16:11
Дожили. Уже кнопку на форму не можем положить.
И какие ещё CreateWindow для VB-контролов!?
Можно вот так.
Dim cb As CommandButton
Set cb = Controls.Add("VB.CommandButton", "NameOfObject", Form1)
cb.Visible = True
Или через VBControlExtender.
Номер ответа: 12
Автор ответа:
valera
Вопросов: 1
Ответов: 9
Профиль | | #12
Добавлено: 15.06.07 16:19
Спасибо за альтернативный выбор направления.
Номер ответа: 13
Автор ответа:
valera
Вопросов: 1
Ответов: 9
Профиль | | #13
Добавлено: 15.06.07 16:29
Большое Спасибо за код!
Класс Controls в окне Object Browser не виден,
также и класс Control не содержит методов и свойств.
Однако, все работает!
Еще раз всех благодарю !!!
Номер ответа: 14
Автор ответа:
valera
Вопросов: 1
Ответов: 9
Профиль | | #14
Добавлено: 15.06.07 16:43
Да, чуть не забыл о своем обещании.
Высылаю код динамического создания элементов на форме VBA:
Private Sub UserForm_Activate()
Me.Controls.Clear
Me.Controls.Add "Forms.Label.1"
Me.Controls(0).Caption = "Это текст Надписи"
Me.Controls(0).Width = 80
Me.Controls(0).Move 10, 10
Me.Controls.Add "Forms.TextBox.1"
Me.Controls(1).Text = "Это текст в Поле"
Me.Controls(1).Width = 80
Me.Controls(1).Move 10, 50
Me.Controls.Add "Forms.CommandButton.1"
Me.Controls(2).Caption = "Это текст на Кнопке"
Me.Controls(2).WordWrap = True
Me.Controls(2).Font.Size = 10
Me.Controls(2).Font.Name = "Arial"
Me.Controls(2).Height = 50
Me.Controls(2).Move 100, 10
End Sub
Номер ответа: 15
Автор ответа:
VisualPaul
ICQ: 402519798
Вопросов: 12
Ответов: 111
Профиль | | #15
Добавлено: 15.06.07 16:55
Можно так
1.Создаёшь невидимую кнопку
2.Настраиваешь её своства
3.Пишешь
Test.Visible = True