Как нормально сделать MousePointer - vbHourglass?

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

Как нормально сделать MousePointer - vbHourglass?

Сообщение Nikita » 16.04.2003 (Ср) 18:54

Есть MDI форма, у которой всякие child. Есть модальные формы-диалоги которые создают эти самые child, либо child могут создавать других child. И часто child создаются долго, например минуту, соответственно, хочется пока child создается сделать курсор мыши hourglass

При создании из модальной формы - пишу чего-то вроде

Sub CreateChild()

Screen.MousePointer = vbHourGlass
Unload Me (сначала нужно выгрузить модальную форму, поскольку нельзя создавать не-модальные окна из модальных)
MDIForm.СоздатьChild
Screen.MousePointer = vbDefault

End Sub

при этом - модальное окно застывает полуисчезнув (оно исчезло - но не успело прорисоваться поскольку при генерении Child все сильно тормозит), курсор - не hourglass, окно программы Not Responding, и через минуту модальное окно исчезает полностью, и появляется загрузившийся Child.

Если я в Form_Load у Child поставлю тоже самое, Screen.MousePointer=vbHourGlass в начале и =vbDefault в конце - ничего не изменится, все равно часов видно не будет.

Кстати, а как избавиться от эффекта полуисчезнувшей модальной формы? чтобы она при анлоаде все-таки прорисовалась что исчезла.

Далее, если я Child создаю из другого Child, перед вызовом другой-child-frm.show ставлю сделать курсор HourGlass, после - вернуть на Default - нисколько не помогает, часов не видно.

Если ставить курсор HourGlass не у Screen, а у MDIForm - парента, - часы если и показываются то только над ним, а над child-ами не показываются.

Чего подскажете?

Мне тут говорят "значит копай многопоточность и в параллельном потоке делай курсор часами" - как-то это все смутно представляю, с потоками в VB не работал.

Powersoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 17.04.2003 (Чт) 21:23

Сообщение Powersoft » 17.04.2003 (Чт) 21:33

Просто после каждой строки в процедуре ставь DoEvents и все будет работать.

--
www.powersoftnet.com


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

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

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

    TopList