Formularze otwierane w trybie dialog charakteryzują się tym, że wstrzymują dalsze wykonywanie procedury do czasu, aż zostaną zamknięte. To bardzo użyteczna rzecz, na tej zasadzie działają także systemowe okno OtworzPlik lub zwykły MsgBox. W naszym przypadku, gdy korzystamy z własnego formularza dialogowego pojawia się jednak pewien problem... Jak mamy w dalszej części procedury odczytać informacje z naszego formularza, jeśli wcześniej musieliśmy go zamknąć?
W skrócie problem można zilustrować tak:
1 - start procedury
2 - procedura otwiera formularz w trybie dialog
3 - pracujemy na formularzu (procedura jest zatrzymana i czeka na zamknięcie
dialogu)
4 - zamknęliśmy formularz i procedura 'leci' dalej (problem: jak teraz odczytać
co ustawiliśmy na formularzu?)
5 - zamykamy procedurę.
Odpowiedź na pytanie zawarte w punkcie 4 okazuje się dość prosta, ale wymaga
pomysłu. W moim przypadku wykorzystałem pewne spostrzeżenie... Zauważyłem, że
jeśli formularza dialogowego nie zamkniemy, ale tylko go ukryjemy, to procedura
wykonuje się dalej. I już rozwiązanie nasuwa się samo, wystarczy tylko
zmodyfikować ostatnie punkty naszej ilustracji:
4 - ukryliśmy formularz i procedura 'leci' dalej (teraz swobodnie możemy
odczytać co ustawiliśmy na formularzu?)
5 - zamykamy formularz
6 - zamykamy procedurę
Jak to wygląda na przykładzie, można obejrzeć tutaj.
Zobacz też inne rozwiązanie tego problemu dostępne na tej stronie - patrz dział Warsztat (Własny InputBox).
Krzysztof Pozorek