Informacja "czekaj trwa operacja..."

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

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.

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

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...

0

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

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

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ć

0

Walczę dalej... Wrzuciłem gr32_lines.zip to zaczął burzyć o GDIPAPI. ściągnął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...

0

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

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

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...

0

działa na D2k10 - musisz tylko w pliku jedi.inc zaremować te dwie linijki
//{$IFDEF VER150}
{$DEFINE COMPILER7}
{$IFDEF BCB}
{$DEFINE BCB7}
{$DEFINE BCB}
{$ELSE}
{$DEFINE DELPHI7}
{$DEFINE DELPHI}
{$ENDIF}
//{$ENDIF}

a w pliku gr32.inc te dwie
//{$IFDEF VER180}
{$DEFINE INLININGSUPPORTED}
{$DEFINE COMPILER2006}
{$DEFINE COMPILER2005}
{$DEFINE COMPILER7}
{$DEFINE COMPILER6}
{$DEFINE COMPILER5}
{$DEFINE COMPILER4}
{$IFNDEF BCB}
{$DEFINE DELPHI2006}
{$ELSE}
{$DEFINE BCB7}
{$ENDIF}
//{$ENDIF}

Prawidłowo powinno się po prostu dodać sekcje z obsługą D2k7 ale nie chce mi się szukać jaką wersję on zgłasza

0

Misiekd znalazłem chyba w necie ten projekt, z którego korzystałeś. Jeśli ktoś jest zainteresowany to gotowy komponent może go znaleźć na Embarcadero pod adresem http://cc.embarcadero.com/Item/20139. Troszkę go przerobiłem pod moje potrzeby. Na razie jeszcze niestety bez animacji GIF ale w wolnej chwili to może dorzucę.

@cimak: polecam ten sposób obsługi komunikatów dla użytkownika, ponieważ raz definiujesz okno z komunikatem i naprawdę 2 liniami załatwiasz wywołanie i ukrywanie okna komunikatu.

Pozdrawiam, Look.

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