Объекты на форме(Access2000)

Программирование на Visual Basic for Applications
Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Объекты на форме(Access2000)

Сообщение Mao » 19.05.2005 (Чт) 9:24

Как создать какой нибуть объект на форме(типа ComboBox, ListBox etc) чтобы этот объект наследовал все свойства существующего аналогичного объекта на форме??

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 10:17

В смысле наследовал???
Такой-же можно загрузить Load "Имя класса объекта", а по другому писать свой контрол, который будет поддерживать существующую функциональность + возможность добавления других свойств или методов.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 10:21

Igor_123 писал(а):В смысле наследовал???

Т.е. чтоб созданый элемент выглядел и обладал всеми свойствами уже существующего аналогичного объекта на данной форме.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 10:31

Имеющемуся в свойстве индекс ставиш 0
а все последующие загружаешь, например TextBoxы:
Load TextBox
потом не забудь выгрузить что загрузил.
Получишь массив контролов.
Будет один обработчик на всех, в параматр будет передаваться индекс контрола, для идентификации к какому контролу относиться событие
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 10:57

А можна небольшой кусочек кода? Заранее спасибо.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 11:43

Пардон, заврался!
Вот код который на UserForm загружает CommandButton
Код: Выделить всё
Private Sub CommandButton1_Click()
Dim a As Control
Set a = Me.Controls.Add("Forms.CommandButton.1", "cb1", True)
End Sub
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 14:02

Igor_123 писал(а):Пардон, заврался!
Вот код который на UserForm загружает CommandButton
Код: Выделить всё
Private Sub CommandButton1_Click()
Dim a As Control
Set a = Me.Controls.Add("Forms.CommandButton.1", "cb1", True)
End Sub

Выдает ошибку: Не найти метод Add

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 14:22

Ну так правильно, я тебе смачала для ВБ рассказывал, потом для ВБА Эксель. А что ты хочешь сделать, для чего это все надо
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.05.2005 (Чт) 14:30

Application.CreateControl - вот ведь заставил тряхнуть стариной :P

Код: Выделить всё
Sub NewControls()
    Dim frm As Form
    Dim ctlLabel As Control, ctlText As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer

    ' Create new form with Orders table as its record source.
    Set frm = CreateForm
    frm.RecordSource = "Orders"
    ' Set positioning values for new controls.
    intLabelX = 100
    intLabelY = 100
    intDataX = 1000
    intDataY = 100
    ' Create unbound default-size text box in detail section.
    Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _
        intDataX, intDataY)
    ' Create child label control for text box.
    Set ctlLabel = CreateControl(frm.Name, acLabel, , _
         ctlText.Name, "NewLabel", intLabelX, intLabelY)
    ' Restore form.
    DoCmd.Restore
End Sub

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 14:35

Вот то что нужно. Огромный сенкс.

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 14:39

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

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 14:46

Дык, эта, так добавляються контролы на новую форму.

Я же думал надо на текущую форму добавить. А как потом показать эту новую форму?
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 14:51

Мне и надо на текущую форму добавить контролы, и форма эта открыта в обычном режиме.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 15:00

Могу сделать предположение:
1 - Открыть другую форму
2 - Закрыть исходную форму
3 - В открытой форме выполнить код по добавлению элементов на закрытую форму
4 - Закрыть другую форму
5 - Открыть исходную форму

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

Аватара (с) Тёмыч

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 15:06

Мда, лучше уж создать эти элементы и сделать их невидимыми и с минимальной высотой.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.05.2005 (Чт) 15:10

открой справку по акцесу и посмотри - там все понятно написано, что только в режиме конструктора формы, раньше я помню мы делали так: блокировали вывод на экран, открывали форму в режиме конструктора, делали изменения на форме, показывали, обновляли экран

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 15:11

А что ты хочешь сделать???
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 15:30

Igor_123
У меня есть форма Отчет по счетам.
На этой форме указывается период и в комбике выбирается счет, если счет рублевый то в листбоксе выводится движения по этому счету за указанный период. А если счет мультивалютный то этих листбоксов должно быть столько сколько валют у этого счета. ну и соответственно в каждом листбоксе указывается движение по этому счету по каждой валюте.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 16:32

А если сделать так:
На каждую из валют создать по подчиненной форме со всеми необходимыми элементами, и по необходимости показывать их.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 19.05.2005 (Чт) 16:38

Igor_123
Дык трабл в том что если валюты будут прибавлятся, то и эти подчиненные формы тож нуна добавлять.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 19.05.2005 (Чт) 16:57

Ну так и в чем проблема???
Konst_One дал код для добавления формы с элементами управления.
Можно сделать так: при добавлении в базу новой валюты, автоматом создавать новую форму для отчета по этой валюте.
И при построении отчета вызывать уже существующие формы.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч


Вернуться в VBA

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

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

    TopList  
cron