Программное создание объектов

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

Программное создание объектов

Сообщение DJScalpel » 08.01.2008 (Вт) 20:45

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

программно сделал добавление нужного количества закладок к SSTab

нужно чтобы содержимое одной из закладок было скопировано во вновь создаваемые закладки

кто знает как это сделать - подскажите плз

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 08.01.2008 (Вт) 23:00

Me.Controls.Add("VB.имя_класса", "имя")
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 09.01.2008 (Ср) 0:44

Me.Controls.Add(VB.ComboBox,"test")
пишет - нужен знак =
VB6

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 09.01.2008 (Ср) 1:32

Код: Выделить всё
Dim hTextBox As TextBox
    Set hTextBox = Me.Controls.Add("VB.TextBox", "txtMain")
    With hTextBox
        .Move 0, 0, ScaleWidth, ScaleHeight
        .Text = "Example"
        .Visible = True
    End With

так работает

а можно как нибудь именно скопировать из одной формы в другую с переносом всех свойств?
например копировать form1.frame1(0) в form1.frame1(1)

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

Сообщение Хакер » 09.01.2008 (Ср) 2:01

а можно как нибудь именно скопировать из одной формы в другую с переносом всех свойств?

Скопироовать - нет. Перенести можно, поменяв парента.
а можно как нибудь именно скопировать из одной формы в другую с переносом всех свойств?
например копировать form1.frame1(0) в form1.frame1(1)

Эээ... Так в другую, или всё таки в ту же самую?
Последний раз редактировалось Хакер 09.01.2008 (Ср) 2:03, всего редактировалось 1 раз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 09.01.2008 (Ср) 2:03

Если у тебя уже имеется элемент который надо добавить, то имхо лучше сделать так: Делаешь индекс у элемента 0, а затем пишешь Load Text1(n), где n >= 1 - индекс элемента управления в массиве, а затем Text1(n).Visible = true. Как раз и свойства скопируются.

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 09.01.2008 (Ср) 10:08

Хакер писал(а):
а можно как нибудь именно скопировать из одной формы в другую с переносом всех свойств?

Скопироовать - нет. Перенести можно, поменяв парента.
а можно как нибудь именно скопировать из одной формы в другую с переносом всех свойств?
например копировать form1.frame1(0) в form1.frame1(1)

Эээ... Так в другую, или всё таки в ту же самую?

смотри, анкета состоит из 4 частей ( вернее - заяление+ 3 анкеты-форма 1, форма 2, форма 3 - не путать с формой в VB - это форма приложения к заявлению) + если есть дополнительные участники договора, то дополнительно заполняются еще форма 3 по количеству дополнительных участников
у меня для удобства пользователя сделано через TABы - каждая вкладка - заявление или одна из форм, при добавлении дополнительных участников договора создается дополнительные вкладки и нужно СКОПИРОВАТЬ содержимое формы 3 в вновь создаваемые вкладки
с парентом пробовал - но что то не получилось - можешь привести пример?
например в форма1 содержит SSTab на первой вкладке воткнут Frame1, в котором и содержатся все нужные для копирования элементы

LOAD text1(1) вставляет его в первую вкладку, воткнуть во вторую например никак не выходит


Если у тебя уже имеется элемент который надо добавить, то имхо лучше сделать так: Делаешь индекс у элемента 0, а затем пишешь Load Text1(n), где n >= 1 - индекс элемента управления в массиве, а затем Text1(n).Visible = true. Как раз и свойства скопируются.


так пробовал - элемент копируется в первую закладку

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 09.01.2008 (Ср) 10:40

Динамически связять контрол с нужной закладкой не получится. Отказывайся от SSTab в пользу TabStrip.
Лучший способ понять что-то самому — объяснить это другому.

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 09.01.2008 (Ср) 10:52

Antonariy писал(а):Динамически связять контрол с нужной закладкой не получится. Отказывайся от SSTab в пользу TabStrip.

приведи пример, скопируй text1(0) из TabStrip первой закладки во вторую, если можно - фрейм со всем его содержимым скопировать

ЗЫ в чем преимущество TabStrip перед SSTab???

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 09.01.2008 (Ср) 11:13

TabStrip не является контейнером; то, что контролы находятся "на закладке" - всего лишь видимость. Контролы находятся над TabStrip'ом. По клику на закладке нужно показывать соответствующую группу контролов и прятать остальное.

С ходу назову два преимущества: поддежка стилей XP и отсутствие бага при перемещении по контролам tab'ом - в SSTab фокус уходит на невидимые контролы.
Лучший способ понять что-то самому — объяснить это другому.

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 09.01.2008 (Ср) 16:47

КОД в Студию

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

Сообщение Хакер » 09.01.2008 (Ср) 16:58

Код чего? Кредитки?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение alibek » 09.01.2008 (Ср) 17:05

DJScalpel, ты ничего не перепутал?
Lasciate ogni speranza, voi ch'entrate.

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 09.01.2008 (Ср) 17:28

юмористы ) :D насмешили
Код для VB как скопировать все контролы из Frame1(0) в Frame1(1)

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

Сообщение alibek » 09.01.2008 (Ср) 17:38

Помедитируй над Container.
И поскольку ты явно перепутал форумы, топик закрываю.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение alibek » 11.01.2008 (Пт) 9:51

По результатам переписки тему открыл.
Lasciate ogni speranza, voi ch'entrate.

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 11.01.2008 (Пт) 23:45

Итак, сам отвечу на свой же вопрос
напоминаю условие -
мне нужно было скопировать МНОГО уже имеющихся контролов ( около 100) и у каждого своя позиция, размер, значения итд итп)

ларчик просто открывался
в коллекции МСДНовских примеров есть проект AXData? так вот там используется так называемый юзер контрол

итак, я создал новый проект только не стандартный EXE а ActiveData
в нем набросал свою форму анкеты, сохранил проект, закрыл.
в основном проекте добавил свой созданный юзер контрол и все - теперь при необходимости создания копии данной формы ( юзер контрола)
причем не надо "лоад" каждый объект в отдельности, все объекты создаются в обычном порядке - взял, разместил, подвинул...

Код: Выделить всё
Load CLS_NS1(item) ' мой юзер контрол с кучей контролов
With CLS_NS1(item)
.Move 0, 0, ScaleWidth, ScaleHeight
.Visible = True
End With


подобная тема не раз поднималась на этом форуме (в поиске находил с 10 топиков и нигде такого предложения решения вопроса не было) но там решался вопрос о добавлении нескольких новых контролов, а тут можно клонировать существующую группу сколько угодно

Всем Спасибо, в том числе alibek

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

Сообщение Денис » 12.01.2008 (Сб) 23:59

DJScalpel
Юзерконтрол хорошо... для контрола. А для группы контролов... возможны сложности с обращением к свойствам и событиям у контролов внутри.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 13.01.2008 (Вс) 0:21

если указанные трудности возникнут - то скажу -пока небыло - все через индекс сделаны и в основной проге обработанны


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

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

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 94

    TopList  
cron