Zdar,
nejak jsme se debilne zasek na asynchronnim dotazem do db (postgresDac) a naslednym vykreslenim vyslekdu do flowlayout.
Na formu mam Edit a v eventu OnChangeTracking spoustim dva dotazy do db. Prvni vyhleda slova podobna zadanemu, pro kazde vytvori label (idealne pak v rectangle) a mrskne ho na flowlayout. Nejak ovsem zapasim s tTask.Run vlakny, synchronizaci apod (seznam labelu se vzdy pred dotazem komplet maze (vyslekdy se dost lisi i s pismenem, tudiz neni duvod to nejak cachovat). Dotaz do db trva nekdy par vterin, proto ho nechci poustet primo v hlavnim vlakne. Na druhou stranu, kdyz napisu dalsi pismeno, bylo by prima ten task ukoncit (ve while muzu mit podminku).
Druhy dotaz do db je +- podobny, na druhy tlayout se doplni panel se 2 labely a jednim obrazkem (ten se dotahuje pres synapsi z https). Toto by take slo udelat jako spesl tasky (pak je ale otazka, jak nalozit s jiz zmizelymi timage (protoze uzivatel pise dale a tudiz jiz data nejsou platna)). Cele to ma byt jednoducha utilitka, takze jsem si chtel ujednodusit praci, nez vytvaret sve vlakna, frontu pozadavku apod).
Je mozne nejakej nakopnuti ?
UpdateWords:
smaz obsah
task.run
(
criticalsection.acq;
pust dotaz do db
tthread.synchronize
(
words.beginupdate;
try
while not eof do
.
.
.
finally
words.endupdate;
end;
)
criticalsection.leave;
)
Jako ono to +- funguje, akorat ze i pres begin/end update se obcas proste labely prekreslujou pres sebe a pomuze jen resize okna formulare.
P.S.> GUI aplikace skorem nedelam, max obcas nejakou takovouhle utilitku, tak s tim zapasim..