Как создать контрол во время работы программы?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Stalker69
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 08.06.2007 (Пт) 11:58

Как создать контрол во время работы программы?

Сообщение Stalker69 » 08.06.2007 (Пт) 12:04

Можно ли как-нибудь создавать новые списки, кнопки, фрэймы и т.д. во время работы приложения? Или хотя бы копировать существующие.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 08.06.2007 (Пт) 12:26

Код: Выделить всё
Dim txt As TextBox
Set txt= Me.Controls.Add("VB.TextBox", "NewID")
txt.Visible=True
Изображение

Stalker69
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 08.06.2007 (Пт) 11:58

Сообщение Stalker69 » 08.06.2007 (Пт) 13:01

Спасибо:)

Edmundo
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 23.06.2006 (Пт) 15:50

Сообщение Edmundo » 11.09.2007 (Вт) 10:58

А у меня не работает, говорит "Value of type string cannot be converted to System.windows.forms.control"

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2007 (Вт) 11:37

.net в соседнем разделе. Вам туда.
Изображение

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 11.09.2007 (Вт) 22:18

И такие (Edmundo) у нас уже появились... :?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.09.2007 (Вт) 23:33

Денис, какие такие? :)

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 12.09.2007 (Ср) 12:29

Amed
Божий дар от пальца не отличают.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Watts[]n!
Постоялец
Постоялец
 
Сообщения: 573
Зарегистрирован: 11.02.2007 (Вс) 0:19

Сообщение Watts[]n! » 12.09.2007 (Ср) 13:27

.Net - это божий дар, получается, а VB6 - палец :D

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: Как создать контрол во время работы программы?

Сообщение Saturn.65 » 14.09.2007 (Пт) 14:04

Stalker69 писал(а):Можно ли как-нибудь создавать новые списки, кнопки, фрэймы и т.д. во время работы приложения? Или хотя бы копировать существующие.

А так нельзя что ли: создать все что нужно, написать к ним код, разместить на форме и сделать visible = False. В нужный момент сделай
visible = True. И делов то. :wink:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.09.2007 (Пт) 14:16

Уф... Я что-то прочитал ник, как Edanmo.
Lasciate ogni speranza, voi ch'entrate.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Как создать контрол во время работы программы?

Сообщение Viper » 14.09.2007 (Пт) 14:45

Saturn.65 писал(а):
Stalker69 писал(а):Можно ли как-нибудь создавать новые списки, кнопки, фрэймы и т.д. во время работы приложения? Или хотя бы копировать существующие.

А так нельзя что ли: создать все что нужно, написать к ним код, разместить на форме и сделать visible = False. В нужный момент сделай
visible = True. И делов то. :wink:

Можно конечно, но представь ситуацию, когда ты изначально не знаешь, сколько контролов тебе нужно. Что ли с запасом делать будешь? Посему, массивы контролов и Load рулят!
Весь мир матрица, а мы в нем потоки байтов!

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: Как создать контрол во время работы программы?

Сообщение Saturn.65 » 14.09.2007 (Пт) 14:51

Viper писал(а):Можно конечно, но представь ситуацию, когда ты изначально не знаешь, сколько контролов тебе нужно. Что ли с запасом делать будешь? Посему, массивы контролов и Load рулят!

Допустим ты нашел метод, как делать контролы во время работы программы. А как ты будешь писать к ним код? Что толку от кнопки на форме без кода? Да и exe как компилировать?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 14.09.2007 (Пт) 14:57

Saturn.65, что значит нашел? Он был, есть и будет. Еще раз зацени смысл слов массив контролов и методы Load и Unload.
Весь мир матрица, а мы в нем потоки байтов!

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 21.09.2007 (Пт) 15:34

Я говорю про код. Если не знаешь, что может возникнуть, то как к этому писать код? На все случаи жизни код ведь не напишешь.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 21.09.2007 (Пт) 23:10

Saturn.65 писал(а):Я говорю про код. Если не знаешь, что может возникнуть, то как к этому писать код? На все случаи жизни код ведь не напишешь.
Если ты не знаешь, что может возникнуть - ты ничего не сможешь написать и другим методом.

А вот если у тебя идет однотипная обработка объектов, но их кол-во может разниться от одного до пары тысяч - то это вполне себе выход из ситуации.
label:
cli
jmp label

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.09.2007 (Сб) 6:15

Saturn.65 писал(а):Я говорю про код. Если не знаешь, что может возникнуть, то как к этому писать код? На все случаи жизни код ведь не напишешь.

Интересно, а как ты вообще код пишешь? Что ли не знаешь, что может произойти в твоей проге, она что ли сама себе высший разум? Если ты предполагаешь, что тебе могут в процессе работы программы может понадобиться добавление контролов, то наверно ты знаешь для чего и какой код будет с ними работать.
Весь мир матрица, а мы в нем потоки байтов!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 23.09.2007 (Вс) 2:51

Saturn.65
еще раз зацени смысл: у некоторых контролов есть свойство index, если его задать, то контрол из переменной превращается в массив и в его события начинает передаваться свойство index. можно на форме сделать три кнопки. все они будут называться btnArray с индексами 0, 1, 2 и к ним будет прилинкована ОДНА процедура
Код: Выделить всё
btnArray_Click(Index as Integer)
вообрази что можно накодить с таким функционалом! а теперь представь - на форме 1 кнопка с индексом 0. при нажатии на нее ты выполняешь код
Код: Выделить всё
Load btnArray(Index + 1)
with btnArray(Index + 1)
.top = btnArray(Index ).top+btnArray(Index).height
.visible = true
end;
Все, теперь ты крут! :lol:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: Как создать контрол во время работы программы?

Сообщение Saturn.65 » 23.09.2007 (Вс) 8:43

Я говорю про этот вопрос:
Stalker69 писал(а):Можно ли как-нибудь создавать новые списки, кнопки, фрэймы и т.д. во время работы приложения? Или хотя бы копировать существующие.

Хотя он мне не совсем понятен. Для интерфейса помоему будет лучше, если они уже будут. Просто если ими в данный момент нельзя пользоваться, то пусть они будут Disabled. Разве лучше, когда неожиданно появится 20 кнопок и 15 списков?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.09.2007 (Вс) 11:04

[offtopic]А ведь именно таким был первый вопрос GSerg-а, заданный на форуме VBStreets.[/offtopic]
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 03.10.2007 (Ср) 22:34

keks-n писал(а):
Код: Выделить всё
Dim txt As TextBox
Set txt= Me.Controls.Add("VB.TextBox", "NewID")
txt.Visible=True


А массив контролов как создать таким способом?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.10.2007 (Ср) 23:14

Абсолютно также, как в случае работы с обычным массивом, или в любом другом случае.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 03.10.2007 (Ср) 23:32

Абсолютно также, как в случае работы с обычным массивом, или в любом другом случае.

Приведите пожалуйста пример обработки события click для масива динамически загруженых CommandButton

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.10.2007 (Ср) 23:36

Массив не может быть WithEvents.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 03.10.2007 (Ср) 23:59

Массив не может быть WithEvents.

Получается, что нелельзя динамически создать функциональный массив CommandButton?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.10.2007 (Чт) 14:30

Можно создать массив объектов-переходников, в каждом из которых будет WithEvents CommandButton, и которые будут дёргать твой обработчик.
Изображение

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 04.10.2007 (Чт) 14:54

tyomitch
Спасибо.

А можно кусок кода.А то,что-то запутался немного.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.10.2007 (Чт) 23:46

NIC, с чем конкретно возникли проблемы?
Изображение

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 05.10.2007 (Пт) 0:28

NIC писал(а):tyomitch
Спасибо.

А можно кусок кода.А то,что-то запутался немного.


Тёмыч спасибо.
Если использовать класс то можно и WithEvents


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

    TopList