События для динамически созданных контролов.

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

События для динамически созданных контролов.

Сообщение QguR » 17.02.2005 (Чт) 2:54

Посоветуйте, требуется среагировать на обращение к динамически созданному объекту. Основные свойства конечно задются при созданиии, а как например удалить одну из кнопок, когда ее имя уже "забыто"?

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 17.02.2005 (Чт) 4:40

В каком смысле "забыто"?
На бумажку записывать надо! ;)
Можно подробнее как создается, как забывается?
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

QguR
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 17.02.2005 (Чт) 2:35

Сообщение QguR » 18.02.2005 (Пт) 1:24

Private Sub Command1_Click()
mCount = mCount + 1
ControlName = "Controls" & Str(mCount)
/*следующие 5 строк извращений для того чтобы имя без пробела было, а то зараза автоматом добавляет */
stroka$ = ""
For i% = 1 To Len(ControlName)
If Mid(ControlName, i%, 1) <> " " Then stroka$ = stroka$ + Mid(ControlName, i%, 1)
Next i%
ControlName = stroka$
Set NewButton = Controls.Add("VB.CommandButton", ControlName)
NewButton.Visible = True
NewButton.Height = 500
NewButton.Width = 1000
NewButton.Top = (mCount - 1) * 500 + 50
NewButton.Left = 50
NewButton.Caption = "Баттон"
End Sub

//При
Private WithEvents NewButton As CommandButton
//и
Private Sub NewButton_Click()
MsgBox "Кликед!"
End Sub
//работает только последняя созданная кнопка

А как сделать обработчик событий для остальных кнопок, ведь мы заранее не знаем сколько их будет и как они будут обзываться. ЗЫ: Я и Private WithEvents NewButton As CommandButton не больно понял.

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 18.02.2005 (Пт) 3:07

1) А не легче ли использовать Index? (если трафик не закончится - через пару минут выложу)
2) Насчет 5 строк извращений - :shock: :shock: :shock: ! Ничего автоматом добавляться не должно! А вот каким методом от гипотетических пробелов избавляетесть - вот тут, действительно, малость, изврат.
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 18.02.2005 (Пт) 3:35

Раз обещал:
Код: Выделить всё
Option Explicit

Private Sub Command1_Click(Index As Integer)
Dim counter%
counter% = nControl.count
Load nControl(counter%)
With nControl(counter%)
    .Width = 1000
    .Height = 500
    .Left = 50
    .Visible = True
    .Top = (counter% - 1) * 500 + 50
    .Caption = "Control" & counter% ' <-- так никаких пробелов нету
    'А если через Str$ то пробелы действительно появляются, но бороться с ними
    'можно с помощью Trim$:
    '.Caption = "Control" & Trim$(Str$(counter%))
End With
End Sub

Private Sub nControl_Click(Index As Integer)
    MsgBox "Control" & Index
End Sub
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

QguR
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 17.02.2005 (Чт) 2:35

Сообщение QguR » 19.02.2005 (Сб) 0:05

Большое спасибо! Счас еще научусь индексы менять будет вообще хорошо.


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

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

Сейчас этот форум просматривают: AhrefsBot, Majestic-12 [Bot] и гости: 49

    TopList