События UserControl - ReadProperties & Parent.Controls

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ФАНТОМНЫЙ ЮЗЕР
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 27.12.2007 (Чт) 20:08
Откуда: phpbb_users

События UserControl - ReadProperties & Parent.Controls

Сообщение ФАНТОМНЫЙ ЮЗЕР » 09.10.2004 (Сб) 14:36

Подскажите, пожалуйста, при инициализации UserControl в подпрограмме Usercontrol_ReadProperties не работает событие UserControl.Parent.Controls :?:
Код: Выделить всё
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    BuddyControl = PropBag.ReadProperty("BuddyControl", "")
End Sub

Public Property Let BuddyControl(ByVal New_Buddy As String)
Dim k As Collection
Dim i As Integer

    Set k = BuddyControls
    For i = 1 To k.Count
        If LCase$(New_Buddy) = LCase$(k(i)) Then
            m_BuddyControl = k(i)
            PropertyChanged "BuddyControl"
            Exit Property
        End If
    Next i
End Property

Friend Property Get BuddyControls() As Collection
Dim sMyName As String
Dim c As Control
Dim sTmp As String
Dim ihWnd As Long

    sMyName = Ambient.DisplayName
    Set BuddyControls = New Collection
    For Each c In UserControl.Parent.Controls
        sTmp = c.Name
        If (TypeName(UserControl.Parent.Controls(sTmp)) = "Object") Then
            sTmp = c.Name & "(" & c.Index & ")"
        End If
        If sTmp <> sMyName Then
            ihWnd = Try(c)
            If ihWnd <> 0 Then
                BuddyControls.Add sTmp
            End If
        End If
    Next c
End Property

Private Function Try(ByVal iObj As Object) As Long
    On Error Resume Next
    Try = iObj.hWnd
End Function


Спасибо.

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

Сообщение tyomitch » 09.10.2004 (Сб) 15:22

Скорее всего, когда происходит UserControl_ReadProperties, контрол ещё не размещён на форме, и UserControl.Parent нету.
Изображение

ФАНТОМНЫЙ ЮЗЕР
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 27.12.2007 (Чт) 20:08
Откуда: phpbb_users

Сообщение ФАНТОМНЫЙ ЮЗЕР » 09.10.2004 (Сб) 19:01

А каким образом заставить инициализировать контроль управления позже, после создания этого родительского окна?
Чьё это было сообщение?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.10.2004 (Сб) 19:03

Обычно на стадии readproperties оно должно быть уже там...
А какая ошибка-то?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ФАНТОМНЫЙ ЮЗЕР
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 27.12.2007 (Чт) 20:08
Откуда: phpbb_users

Сообщение ФАНТОМНЫЙ ЮЗЕР » 09.10.2004 (Сб) 19:08

Нет, ошибки нету. Не работает UserControl должным образом. Следующая команда не инициализирует события UpDown:
Код: Выделить всё
Call SendMessage(m_hWnd, UDM_SETBUDDY, m_BuddyhWnd, ByVal 0&)

где m_hWnd - дескриптор UpDown; m_BuddyhWnd = 0 - дескриптор TextBox.
Чьё это было сообщение?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.10.2004 (Сб) 19:10

0 - это "ни фига".
Конечно не работает.

Тебе какие контролы нужно считать подходящими для прилепливания?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ФАНТОМНЫЙ ЮЗЕР
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 27.12.2007 (Чт) 20:08
Откуда: phpbb_users

Сообщение ФАНТОМНЫЙ ЮЗЕР » 10.10.2004 (Вс) 0:11

В качестве m_BuddyhWnd могут выступать, например TextBox и PictureBox.
Чьё это было сообщение?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 10.10.2004 (Вс) 9:51

Кстати, невеждиво размещать одни и те же темы сразу в нескольких местах. Между прочим, oal, только Вы в последние месяцы были замечены за подобной наглостью.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.10.2004 (Вс) 11:32

Короче...
Принцип перебора неверен изначально.
Тебе нужны только textbox и picturebox? Ты и так знаешь, что у них есть hwnd. Поэтому:
Код: Выделить всё
dim c as control
for each c in me.controls
  if typeof c is textbox or typeof c is picturebox then
    ...
  end if
next
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


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

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

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

    TopList  
cron