Mam pytanko : czy można w jakiś sposób ustawiać aktywne okno
po wysłaniu zapytania do bazy sql, które trwa dość długo (kilka minut) tak by
uzytkownikowi po przełączeniu się na inny program i powrocie do mojego nie pokazywał
się "czysty"ekran tylko "normalne"okno aplikacji ?
Np. wykonuję update który trwa kilka minut, w tym czasie użytkownik
przełącza się np na notatnik a po jego zamknięciu mam biały ekran
i mimo tego że program wykonuje inne instrukcje (zapytania do bazy)
to staje się "aktywnym" dopiero w momencie gdy użytkownik ma coś
wykonać.
Czesc.
Mozesz to zrobic uzywajac Application.ProcessMessages.
Np. w ten sposob:
Query1.Active := True;
Application.ProcessMessages;
Query2.Active := True;
Application.ProcessMessages;
Query3.Active := True;
Application.ProcessMessages;
Oczywiscie to przy zalozeniu, ze te "inne instrukcje" o ktorych mowiles znajduja sie w innych query.
Radze poczytac o Application.ProcessMessages w pomocy, mozesz zastosowac ta instrukcje rowniez w petli:
while not Query.Eof do
begin
//zrob costam
Application.ProcessMessages;
Query.Next;
end;
Zawsze też możesz użyć TThread
niestety jeseli jest to jedno zapytanie to
processmessages nic nie pomoze.
jedyny sposob jaki mi przychodzi to rozdzielic
obsluge zapytania i obsluge interfejsu na dwa watki...
Johny_Morfina napisał(a)
niestety jeseli jest to jedno zapytanie to
processmessages nic nie pomoze.
Napisałem przecież:
Oczywiscie to przy zalozeniu, ze te "inne instrukcje" o ktorych mowiles znajduja sie w innych query.
Mozna tez uruchomic Query asynchronicznie np. korzystając z ADO.
Wodzu napisał(a)
Johny_Morfina napisał(a)
...
Napisałem przecież:
...
spojz na czas - jak zaczynalem pisac to Twojej odpowiedzi jeszcze nie bylo :p
No wlasnie spojrzalem, napisales przeciez ponad godzine po mojej wypowiedzi i nawiazales do processmessages. Oj Johny ;-)
Dziękuję wszystkim za naprowadzenie na właściwe tory.
Na razie processmessages działa ale pokombinuję z wątkami bo mnie zaciekawiły.
Pokombinuj z asynchronicznym query i callbackiem. Bedzie prosciej.
Pozdrawiam.