Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Что такое "Ме" в UserControl? / 24 сообщений из 24, страница 1 из 1
15.05.2006, 14:16
    #33727187
Tanny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
скажите, пожалуйста, раньше у меня было 2 формы, теперь сделала из них 2 юзерконтрола. Имплементировала нужный мне класс. Дело в том, что есть еще модуль, который обрабатывает одинаковые тесктовые поля (чистит, присаивает значения), их много, потому хочется обощить в одном месте. Раньше я передавала просто как параметр "Ме" из формы, и обращалась к текстовым полям. Что тперь передать из юзерконтрола? Что такое "Ме" в юзерконтроле?
...
Рейтинг: 0 / 0
15.05.2006, 14:25
    #33727229
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
В контроле Me - это форма, на которой этот самый контрол лежит. А вам нужно передавать объект UserControl.
...
Рейтинг: 0 / 0
15.05.2006, 14:31
    #33727265
Tanny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
когда я передаю UserControl, получаю сообщение компилятора "Invalid use of a base name"
...
Рейтинг: 0 / 0
15.05.2006, 14:36
    #33727299
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Покажите, как вы передаете и принимаете его.
...
Рейтинг: 0 / 0
15.05.2006, 14:47
    #33727367
Tanny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
передаю из UserControl
If modAOLAdressDaten.Initialize(UserControl) = True Then

получаю в модуле
Public Function Initialize(ByRef pi_ UserControl As UserControl) As Boolean
...
и использую
With pi_UserControl
For i = 0 To l_lCount - 1
If Not l_sBez(i) = l_sDefaultAdrTyp Then
.cboAdrTyp.AddItem l_sBez(i)
.cboAdrTyp.ItemData(.cboAdrTyp.NewIndex) = l_lID(i)
End If
Next i

end with
...
Рейтинг: 0 / 0
15.05.2006, 15:20
    #33727572
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Мда, действительно не работает. Простите, что я вас обманул.
...
Рейтинг: 0 / 0
15.05.2006, 15:23
    #33727590
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Вместо
pi_ UserControl As UserControl
пишите
pi_ UserControl As ИмяКонтрола
...
Рейтинг: 0 / 0
15.05.2006, 15:31
    #33727641
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Ламер ЛамеровичВместо
pi_ UserControl As UserControl
пишите
pi_ UserControl As ИмяКонтрола
Так их же два разных, какой писать-то?
...
Рейтинг: 0 / 0
15.05.2006, 15:45
    #33727707
Tanny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Имя контрола или Имя контрола.Object? Не помогает...
...
Рейтинг: 0 / 0
15.05.2006, 15:54
    #33727752
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
контролы на Form объявлены как public
контролы на UserControl объявлены как private
Поэтому вы их не увидите передав имя UserControl-а.
Для этого надо выполнить одно из двух:
- Написать интерфейс для набора контролов на UserControl. Здесь можно использовать мастер.
- Или "научить" юзерконтрол получать источник данных, Рекордсет, Объект домена, или каую-л. другую структуру данных.
...
Рейтинг: 0 / 0
15.05.2006, 15:54
    #33727755
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Melkiades Ламер ЛамеровичВместо
pi_ UserControl As UserControl
пишите
pi_ UserControl As ИмяКонтрола
Так их же два разных, какой писать-то?
As Object :-)

А передавать из UserControl можно, используя Me:
If modAOLAdressDaten.Initialize(Me) = True Then
...
Рейтинг: 0 / 0
15.05.2006, 16:07
    #33727811
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Worobjoffконтролы на Form объявлены как public
контролы на UserControl объявлены как private
Поэтому вы их не увидите передав имя UserControl-а.

Но можно передать функции из UserControl сам контрол (ы), которые должны быть обработаны в функции, например, для выше приведенного примера:
Вызов из UserControl:
Код: plaintext
If modAOLAdressDaten.Initialize(cboAdrTyp) = True Then
В модуле:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function Initialize(ByRef rControl As Control) As Boolean
...
With rControl
    For i =  0  To l_lCount -  1 
        If Not l_sBez(i) = l_sDefaultAdrTyp Then
            .AddItem l_sBez(i)
            .ItemData(.NewIndex) = l_lID(i)
        End If
    Next i
end with
...
Рейтинг: 0 / 0
15.05.2006, 16:24
    #33727886
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Ламер ЛамеровичНо можно передать функции из UserControl сам контрол (ы), которые должны быть обработаны в функции ...А вы пробовали?
Я же именно об этом и сказал: контролы UserControl-а недоступны извне.
Но есть мастера для создания интерфейсов типа
Код: plaintext
Public property get ComboBox1 as ComboBox
И, лишь "завернув" эти контролы в такой интерфейс их удастся использовать.
Но Wiard вобщем-то поможет сэкономить время на его создание.
...
Рейтинг: 0 / 0
15.05.2006, 16:27
    #33727893
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Tanny,
Me - ссылка на данный экземпляр класса (визуального или не визуального) внутри методов класса.

Если нужно реализовать одной процедурой полиморфную обработку свойств разных классов, пользуйтесь либо Object и поздним связыванием, либо описанием абстрактного класса и его реализацией в конкретных классах через Implements, что даёт раннее связывание.
В данном случае, идя у вас, так сказать, на поводу, поскольку Microsoft прямо не рекомендует давать ссылки на внутренние элементы управления (constituent controls), можно выставить наружу коллекцию Controls:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Property Get Controls() As Object
 Set Controls = UserControl.Controls
End Property
'...
'в модуле
Public Function Initialize(UCControls As Object) As Boolean
 '...
 'и использую
 With UCControls

Впрочем, народ уже почти всё сказал...
...
Рейтинг: 0 / 0
15.05.2006, 16:28
    #33727898
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Worobjoff Ламер ЛамеровичНо можно передать функции из UserControl сам контрол (ы), которые должны быть обработаны в функции ...А вы пробовали? ...


Да, сейчас работаю с таким проектом.
...
Рейтинг: 0 / 0
15.05.2006, 16:35
    #33727923
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
А я создаю UserControl-ы которые привязываются к какому-л. полю данных или объекту данных. Например, набор OptionButton - прямой кандидат на создание UserControl для привязки единственного Value, например, к рекордсету.
Есть более крупные UserControl-ы. Например, Паспортные данные получают строку из рекордсета (или объект домена).
Поэтому структуризация проекта идет немного в другой плоскости.
...
Рейтинг: 0 / 0
15.05.2006, 16:41
    #33727953
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Кстати, раз уж разговор об этом зашел, добавлю свой вопрос:
Можно ли сделать так чтобы контрол на форме не был доступен извне?
Иногда это очень нужно.
...
Рейтинг: 0 / 0
15.05.2006, 16:49
    #33727977
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Worobjoff Ламер ЛамеровичНо можно передать функции из UserControl сам контрол (ы), которые должны быть обработаны в функции ...А вы пробовали?
Я же именно об этом и сказал: контролы UserControl-а недоступны извне.
...
И, лишь "завернув" эти контролы в такой интерфейс их удастся использовать.

Небольшой пример, по поводу доступны контролы UserControl-а извне или нет ...
...
Рейтинг: 0 / 0
15.05.2006, 17:07
    #33728056
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Ламер ЛамеровичКто-то из нас не правильно понял автора темы.
Я понял что Tanny надо передать UserControl как параметр, а уже написанный код сам обратится к контролам на этом UserControl. А иначе зачем был нужне Me. ?
Вы поняли что в модуле есть набор универсальных процедур к которым UserControl сам обратиться и передаст в качестве параметра какой-л. контрол, например ComboBox.
...
Рейтинг: 0 / 0
15.05.2006, 17:15
    #33728093
Tanny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Нельзя передать "Ме", с этого все и началось, т.к. внутри модуля контролы не известны. VB дает ошибку. А контролов очень много, если бы был один Комбобокс, конечно его можно передать.
Благодаря обсуждению, я пришла к выводу, что надо менять логику. Сама идея упаковки контролов в нарушена. Видимо, не остается ничего другого, как писать все в "лоб"
...
Рейтинг: 0 / 0
15.05.2006, 17:23
    #33728123
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Вообще-то UserControl нужен как раз для того чтобы вместо этих двух форм создать один UserControl, и уже его поместить на каждую из этих форм.
Прямое назначение UserControl - многократне использование кода.
...
Рейтинг: 0 / 0
15.05.2006, 17:31
    #33728148
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
TannyНельзя передать "Ме", с этого все и началось, т.к. внутри модуля контролы не известны. VB дает ошибку. А контролов очень много, если бы был один Комбобокс, конечно его можно передать.
Благодаря обсуждению, я пришла к выводу, что надо менять логику. Сама идея упаковки контролов в нарушена. Видимо, не остается ничего другого, как писать все в "лоб"
Да почему ж нельзя-то?
Второй пример
...
Рейтинг: 0 / 0
15.05.2006, 17:34
    #33728158
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Забыл пример-то
...
Рейтинг: 0 / 0
15.05.2006, 17:46
    #33728189
Tanny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что такое "Ме" в UserControl?
Интересный пример, спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Что такое "Ме" в UserControl? / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]