Witam wszystkich,
mam taki oto problem...
Piszę aplikację, która przerzuca dużo danych pomiędzy bazą MySQL, a RAMem i robi spore obliczenia.
Do tej pory po wciśnięciu przycisku, który powodował uruchomienie odbierania i przeliczania dużej partii danych ustawiałem jego wartość Disabled na 2 i był spokój. Klient nie naklikał mi ani razu dopóki nie zakończyło się zadanie.
Teraz odpalam wszystko w eventach i gdy dam Disabled na 2 to i tak po zakończeniu importu, gdy Disabled idzie na 0 zostaje ponownie wywołana uciążliwa operacja, gdy Klient kliknął wcześniej w nieaktywny guzik.
Pomysł jest taki, aby na czas wszystkich ciężkich operacji pokazać jakieś okienko modalne, jakiś wait frame, (żeby nie dało się nic grzebać na panelu głównym aplikacji) z jakimś paskiem zajętości i etykietą tekstową, której zawartość może być na bieżąco aktualizowana przez aplikację. Tak samo powinna być możliwość wysłania do okienka sygnału, że może się już zamknąć.
Myślałem nad jakimś wątkiem, który pracuje do czasu gdy jakieś inne zdarzenie jest w toku.
Jak to się robi?
Czy ktoś wykonywał już coś podobnego?
pozdrawiam
Jak stworzyć okienko modalne jako wątek z komunikacją?
Re: Jak stworzyć okienko modalne jako wątek z komunikacją?
Czy dobrze się domyślam, że na tym nieszczęsnym przycisku wywołujesz event Mouse Up (ew. Down...)? W takim przypadku modyfikowanie własności Disabled nie ma znaczenia, przycisk tam jest i da się nad nim kliknąć ;)
Proponuję zmienić event na Value Change. Powinno to działać bardziej po Twojej myśłi. Gdy ustawisz Disabled na 2, nie da się wywołać Value Change, przez co klikanie nie będzie kolejkowane. Rzuć okiem na załączony przeze mnie przykład (sorry za bałagan, chwilowo korzystam z touchpad'a ;) )
Proponuję zmienić event na Value Change. Powinno to działać bardziej po Twojej myśłi. Gdy ustawisz Disabled na 2, nie da się wywołać Value Change, przez co klikanie nie będzie kolejkowane. Rzuć okiem na załączony przeze mnie przykład (sorry za bałagan, chwilowo korzystam z touchpad'a ;) )
- ky3orr
- Posty: 149
- Rejestracja: 10 gru 2006 00:00
- Wersja środowiska: LabVIEW 8.6
- Lokalizacja: Siechnice
- Kontakt:
Jak stworzyć okienko modalne jako wątek z komunikacją?
Dzięki za odpowiedź coolfon.
Akurat korzystam z Value Change i nie mam pojęcia dla czego jak kliknę w button gdy jest disabled to jak się zmieni na enabled to leci event... Może coś pokaszaniłem.
Stworzyłem sobie małego dialoga, który chcę wywołać jakoś w programie, aby pojawiał się jako modal, ale by aplikacja pod spodem dalej działała. Za pomocą notifiera np. chcę przesyłać komunikaty do wyświetlenia na string indykatorze (np. pobieranie danych, przetwarzanie itd.) + specjalny kod który zamknie dialoga.
Jak to zrobić?
taki patent skutecznie uniemozliwi dostęp do panelu poniżej i nie będę muysiał kombinować z blookowaniem przycisków.
Akurat korzystam z Value Change i nie mam pojęcia dla czego jak kliknę w button gdy jest disabled to jak się zmieni na enabled to leci event... Może coś pokaszaniłem.
Stworzyłem sobie małego dialoga, który chcę wywołać jakoś w programie, aby pojawiał się jako modal, ale by aplikacja pod spodem dalej działała. Za pomocą notifiera np. chcę przesyłać komunikaty do wyświetlenia na string indykatorze (np. pobieranie danych, przetwarzanie itd.) + specjalny kod który zamknie dialoga.
Jak to zrobić?
taki patent skutecznie uniemozliwi dostęp do panelu poniżej i nie będę muysiał kombinować z blookowaniem przycisków.
Re: Jak stworzyć okienko modalne jako wątek z komunikacją?
Kombinowaniem będzie właśnie tworzenie dodatkowych vi, komunikacji z nimi itp... Wrzuć swój kod, albo chociaż kawałek z Eventem. Znajdziemy błąd i problem z głowy.
- ky3orr
- Posty: 149
- Rejestracja: 10 gru 2006 00:00
- Wersja środowiska: LabVIEW 8.6
- Lokalizacja: Siechnice
- Kontakt:
Re: Jak stworzyć okienko modalne jako wątek z komunikacją?
Postanowiłem nie przynudzać z kodem, bo aby aplikacja wystartowała musiałbym usunąć sporo kodu
Podam jednak rozwiązanie - protezę - które udało mi się wykonać po przeglądnięciu kilku tematów na LAVIE.
To co udało się stworzyć to pojawiające się okienko z informacją o przetwarzaniu danych i dwa jeżdżące status bary.
Rozwiązało to mój problem na tyle, że Klient nie naklika mi niczego gdy aplikacja zajęta jest odczytem i przetwarzaniem dużej porcji danych, a w dodatku widzi, że program się nie zwiesił i coś się dzieje.
Kod wywołania VIaja i efekt działania na poniższych rysunkach.
Dalej jednak nie uporałem się z przekazywaniem danych do takiego otwartego i działającego VIaja, żeby na przykład zmienić tekst o przetwarzaniu danych na dowolny inny w dowolnym czasie.
Widziałem implementację uruchamiającą VI z User Eventem i jakoś działało to tak, że program wywołujący zmieniał wpis swojej kontrolki i to samo działo się w tym nowo otwartym okienku...
magia...
za wszelkie pomysły i krytykę z góry dziękuję
pozdrawiam
Podam jednak rozwiązanie - protezę - które udało mi się wykonać po przeglądnięciu kilku tematów na LAVIE.
To co udało się stworzyć to pojawiające się okienko z informacją o przetwarzaniu danych i dwa jeżdżące status bary.
Rozwiązało to mój problem na tyle, że Klient nie naklika mi niczego gdy aplikacja zajęta jest odczytem i przetwarzaniem dużej porcji danych, a w dodatku widzi, że program się nie zwiesił i coś się dzieje.
Kod wywołania VIaja i efekt działania na poniższych rysunkach.
Dalej jednak nie uporałem się z przekazywaniem danych do takiego otwartego i działającego VIaja, żeby na przykład zmienić tekst o przetwarzaniu danych na dowolny inny w dowolnym czasie.
Widziałem implementację uruchamiającą VI z User Eventem i jakoś działało to tak, że program wywołujący zmieniał wpis swojej kontrolki i to samo działo się w tym nowo otwartym okienku...
magia...
za wszelkie pomysły i krytykę z góry dziękuję
pozdrawiam
- Pitol
- Moderator
- Posty: 982
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: Jak stworzyć okienko modalne jako wątek z komunikacją?
Jak już korzystasz z referencji do okna dialogowego to możesz gdzieś sobie upchnąć metodę ControlValue.Set. Podajesz tylko nazwę kontrolki i jej nową wartość w postaci Variant.
Coś w ten deseń... Mógłbyś to również zrobić na kolejkach. Wystarczy, że w obu VI (Dialog i główny) zadeklarujesz kolejkę o tej samej nazwie. W głównym VI będziesz pakował do kolejki a w Dialogu odbierał z kolejki informacje.
Coś w ten deseń... Mógłbyś to również zrobić na kolejkach. Wystarczy, że w obu VI (Dialog i główny) zadeklarujesz kolejkę o tej samej nazwie. W głównym VI będziesz pakował do kolejki a w Dialogu odbierał z kolejki informacje.
- ky3orr
- Posty: 149
- Rejestracja: 10 gru 2006 00:00
- Wersja środowiska: LabVIEW 8.6
- Lokalizacja: Siechnice
- Kontakt:
Re: Jak stworzyć okienko modalne jako wątek z komunikacją?
Dzięki Pitol!
to się nazywa rzeczowa podpowiedź
pozdrawiam
to się nazywa rzeczowa podpowiedź
pozdrawiam