Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

automatické uzavření druhého userform po uplynutí času

Kompletní přehled příspěvků v tématu automatické uzavření druhého userform po uplynutí času řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Fojman

Poslat zprávu | Profil
Datum: 26.4. 2015 | Zobrazeno: 8878x
Konfigurace CATIA: v5r21

Text dotazu:
Dobrý den,
mám následující problém - ve VB 6.5 chci vytvořit následující makro s UserForm1 a UserForm2. Po spustění makra se zobrazí UserForm1 s tlačítkem "XXX". Po kliknutí na toto tlačítko se má zobrazit další okno/formulář - UserForm2 kde je otázka, tlačítka "Ano" a "Ne" a odpočet času. Pokud uživatel neklikne na žádné tlačítko během odpočtu, tak se automaticky vybere "Ne" a tento UserForm2 zmizí a v UserFormu1 se objeví informace o volbě "Ne". Vše mám hotové, jen nedokážu definovat uzavření UserFormu2 po uplynutí času.
kód pro odpočet

Public Function fnWait(intNrOfSeconds As Integer)

Dim varStart As Variant
varStart = Timer
Do While Timer < varStart + intNrOfSeconds
Loop
End Function

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()

fnWait (5)
UserForm1.Label2.Caption = "ne"
UserForm2.Hide
End Sub

- 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()

fnWait (5)
UserForm1.Label2.Caption = "ne"
UserForm2.Hide
End Sub

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.