automatické uzavření druhého userform po uplynutí času
Uživatel | Příspěvek |
Fojman ![]() ![]() Poslat zprávu | Profil |
Datum:
26.4. 2015
| Zobrazeno:
9249x Konfigurace CATIA: v5r21 Text dotazu: Public Function fnWait(intNrOfSeconds As Integer) A ted nevím při jaké události odpočet spustit - pri inicializaci UserFormu2 to po kliknutí na tlačítko "XXX" NEJPRVE čeká a POTOM ho zobrazí, ale už nikdy nezmizí. Private Sub UserForm_Initialize() - pri aktivaci UserForm2 vše se běží jak má ve smyslu, že UserForm2 se objeví a za 5 vteřin zmizí, ale toto okno je prázné - jen bílá výplň bez ničeho (pozadí, textu, tlačítek "ANO" a "NE". Private Sub UserForm_Activate() v druhém případě (při aktivaci) při použití repaint je formulář vidět a okno i zmizí, ale pokud před uplynutím odpočtu kliknu na "ano" nebo "ne" tak tlačítka neragují/nefungují a okno zmizí až po vypršení času jako bych na nic neklikl. Co dělám špatně? Samozřejmě už nevím jak dál:(, jestli existuje lepší způsob rád se něco přiučím. Díky |
František Němec ![]() ![]() Poslat zprávu | Profil |
[#5102]
| Publikováno:
27.04. 2015 - 07:49 Pekný deň,
1. možno by pomohlo timer smyčku použiť v udalosti Object.DoEvents - počas procesu sa vykonávajú aj systémové a iné procesy alebo 2. okno UserForm2 použiť ako modeless |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#5103]
| Publikováno:
27.04. 2015 - 11:34 Dobrý den,
nevím jak ve VBA, ale v .NET je se pro tyto účely hodí komponent Timer (časovat). Nastavíte mu interval a na začátku (událost při zobrazení formu - zde Load) ho nastartujete. On běží na pozadí nezávisle na ostatním. Pak stačí při jeho události Tick, tj. když uplyne daný interval, kontrolovat kolik času už uplynulo a podle potřeby spustit další funkce. Ve vašem případě vždy funkce čeká na vykonání procedury fnWait, proto se nic neděje anebo se naopak form nevykreslí. |
Uživatel nepřihlášen
Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.