Кнопка на StatusBar, кликаем, почему не вызываетсяcmd_Click?

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

Кнопка на StatusBar, кликаем, почему не вызываетсяcmd_Click?

Сообщение Nikita » 08.10.2003 (Ср) 17:04

форма
есть StatusBar,
есть invisible ToolBar на котором кнопка cmd
переносим кнопку на StatusBar через
SetParent cmd.hwnd, statusbar.hwnd
кнопка видна на statusbar, но когда на нее кликаю, cmd_Click не вывается, почему?

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 13.10.2003 (Пн) 9:11

Есть у объектов метод ZOrder для перемещения на передний и задний план.
попробуй
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Nikita
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.02.2003 (Ср) 15:09
Откуда: Russia

Сообщение Nikita » 13.10.2003 (Пн) 12:56

я нажимаю именно на кнопку, это визуально видно

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

Сообщение alibek » 14.10.2003 (Вт) 13:49

Не могу утверждать, но помоему контролы, которым ты изменил родителя через API не будут нормально работать. События в них не будут вызываться, нужно их отлавливать через сабклассинг. (для примера можешь засунуть кнопку "Пуск" на свою форму -- она будет нажиматься, но меню раскрываться не будет)
Lasciate ogni speranza, voi ch'entrate.

Nikita
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.02.2003 (Ср) 15:09
Откуда: Russia

Сообщение Nikita » 14.10.2003 (Вт) 13:59

но, к примеру, когда я точно так же засовываю на статусбар полоску прогрессбара, то она отлично работает, по progressbar.value=...

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 15.10.2003 (Ср) 8:30

Может, это, конечно, не выход, но
У панели статусбара есть свойство Bevel, по умолчанию его значение равно sbrInsert(вдавленная), поменяй его на на sbrRaised и получишь кнопку

Я делал так.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

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

Сообщение alibek » 15.10.2003 (Ср) 10:51

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

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 15.10.2003 (Ср) 17:00

SetParent cmd.hwnd, statusbar.hwnd приводит к тому, что контейнер объекта меняется. Если этот контейнер написан как контейнер, события будут приходить. Если нет, то нет.

Альтернатива SetParent
Set cmd.Container = statusbar
явно скажет, что statusbar не может быть контейнером.

PS
Set cmd.Container = Text1 не работает, однако SetParent cmd.hwnd, Text1.hwnd работает и события пропускает. Хотя и глючно это!
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 2

    TopList