Informacja "czekaj trwa operacja..."

Odpowiedz Nowy wątek
2011-02-17 15:44
Look
0

Witam,

Mam takie zagadnienie. Wiem, że było już wiele razy coś podobnego ale nie do końca w taki sposób jakbym chciał.

Mam program, który wiele razy pobiera zestaw danych z bazy lub wykonuje większe obliczenia. Chciałbym modalny komunikat z tekstem "czekaj, trwa operacja..." oraz animacją. Jak w prosty sposób zrealizować taki komunikat aby móc wykorzystywać go jednym poleceniem przed każdą większą operacją, tak aby obliczenia wykonywały się cały czas a komunikat blokował jakiekolwiek działania użytkownika? Proszę o konkretne rozwiązanie albo chociaż pseudokod, ponieważ próbowałem to zrobić przy pomocy osobnej formy z komunikatem i wywołania jej w wątku ale nie działało mi to dobrze (albo obliczenia nie szły albo okno z komunikatem się nie zamykało, itp.)

Z góry dziękuję za info i pozdrawiam

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-02-17 16:00
0

to obliczenia powinny byc w watku a nie forma.
jesli chcesz wykonywac obliczenia jednoczesnie zachowujac plynnosc animacji itd, to musisz to zrobic na wątkach.
a jak robisz na wątkach to musisz sie liczyc ze "jednym poleceniem" tego nie zrobisz. cos za cos.

edytowany 2x, ostatnio: cimak, 2011-02-17 16:16

Pozostało 580 znaków

2011-02-17 17:26
0

W załączniku masz komponent, który popełniłem posiłkując się guglem (źródeł niestety nie pamiętam). Nie jest idealny, trochę mu brakuje (np. okno będzie albo ontopall albo wcale i kupa :/). Możesz jako animację wstawiać animowane gify (2 animacje są w zasobach i są do wyboru we właściwościach), możesz dodać obrazek jako tło i wpisać treść komunikatu.
Do działania będziesz jeszcze potrzebował Graphic32
użycie
pacasz go na formę, ustawiasz co chcesz i

  IThreadedWaitScreen1.Show
  try
    //tu np. zczytanie danych
  finally
    IThreadedWaitScreen1.Hide;
  end;

nie da się dodać archiwum jako załącznika???

link do pobrania http://www.sendspace.com/file/ql3gv4


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
edytowany 1x, ostatnio: Misiekd, 2011-02-17 17:28
@cimak nie bardzo rozumiem aluzję :) - tam wyraźnie napisałem, że jak już to nie formę (w sensie TForm) ale okno w winapi, co uczyniłem w powyższym komponencie. A i sam fakt poczynienia tegoż komponentu był mi niejako narzucony przez userów, którym się nie podobało jak się program 'wieszał' przy np. co bardziej zakręconym zestawieniu. Alternatywą było powkładać wszystkie zapytania w wątki i różniaste kłopoty z tym związane (co mi się nie uśmiechało jeszcze bardziej niż popełnienie komponentu) - Misiekd 2011-02-17 18:33
nie aluzje tylko bardziej pytanie. przyznam ze z lenistwa nie zagladalem do zrodel komponentu a ze wybitnym programista nie jestem to wolalem zapytac i czegos sie nauczyc. dziekuje za wyjasnienie;] - cimak 2011-02-17 18:41

Pozostało 580 znaków

2011-02-17 22:10
Look
0

Dzięki za pomoc ale niestety nie mogę zainstalować Twojego komponentu. Wywala mi błąd z GR32_Misc2.dcu (file not found). To chyba coś z GDI+ ale nie wiem skąd wziąć ten plik...

Pozostało 580 znaków

2011-02-17 22:32
0

wywal GR32_Misc2 z uses - pozostałość po testach


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-02-18 11:07
Look
0

Dzięki, udało się zainstalować i działa OK. Tylko po wywaleniu deklaracji GR32_Misc2 musiałem też usunąć obsługę FAnimation i pewnie dlatego nie działa mi żadna animacja - zarówno domyślne Circle1, Circle2 jak i próbowałem podstawić do CustomAnimation mojego gifa i też nic... Kompoent działa jak chciałem ale bez animacji. Pozdrawiam

Pozostało 580 znaków

2011-02-18 11:44
0

na stronie http://graphics32.org/wiki/Main/ThirdParty masz gr32_lines.zip - ściągnij i wrzuć do katalogu z gr32 i będzie śmigać


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-02-18 12:36
Look
0

Walczę dalej... Wrzuciłem gr32_lines.zip to zaczął burzyć o GDIPAPI. Ściągłem gdiplus i wrzuciłem wszystkie pliki *.pas i dalej nie mogę kompilować Twojego komponentu. Teraz burzy że nie może skompilować przy użyciu DirectDraw.pas. Błędy "Type IDirectDrawSurface needs finalization - not allowed in variant record". Kurcze coś mi się widzi że to droga donikąd...

Pozostało 580 znaków

2011-02-18 12:43
Look
0

Po wywaleniu GR32_Misc2 burzy o TGdipGraphic, a bez tego widzę że nie zadziała animacja...

Pozostało 580 znaków

2011-02-18 13:01
0

http://www.sendspace.com/file/d8ycdb

masz wszystko co jest potrzebne - gr32, gdip, i inne :). Zawartość katalogu Graphic32 po prostu przekopiuj tam, gdzie je zainstalowałeś, a zawartość katalogu IThreadedWaitScreen przegraj tam, gdzie masz plik IThreadedWaitScreen.pas


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-02-18 13:38
Look
0

Dalej ten sam błąd z DirectDraw.pas. Trochę poczytałem w googlach i doszukałem się że DSPack (z niego pochodzi DirectDraw.pas) nie działa w moim środowisku (mam Rad Studio 2007). Pewnie u Ciebie działa bo masz np. Delphi 7...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0