Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

OnPaint

[es] :: Pascal / Delphi / Kylix :: OnPaint

[ Pregleda: 2613 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dragan_v
Dragan Vasic
\Telekom\It\
batocina

Član broj: 9084
Poruke: 131
*.telekom.yu

Jabber: Vaske@elitesecurity.org
ICQ: 48390397
Sajt: www.bestcentar.com


Profil

icon OnPaint12.06.2003. u 10:27 - pre 253 meseci
Pitanje:
ideja je bila da se posle svakog upisa u jednu tabelu pokrene prozor (formx, recimo) koji na sebi ima samo jedan progressbar i da on nesto ispremesta u bazi (interbase) te da se nakon toga taj prozor zatvori...
Resenje sam nasao tako sto uspesan upis u prvu tabelu pokrene formx.showmodal;
taj formx u svom OnPaint dogadjaju ima samo dve linije:
pokrece proceduru sredi();
i posle toga formx.close;

e sad ide kvaka...
hteo sam da taj formx bude bez captiona (borderstyle:=none)
ali tada se desava da procedura sredi() jednostavno ne krene......
ako stavim breakpoint neposredno pre pokretanja te funkcije (jos na formx.showmodal) sve prodje ok, ali u normalnom radu se formx pojavi, progressbar ostane na 0% i tu sve stane.....vratio sam caption na formx i sve radi ok....

ima li ovde logike ?
postavio sam application.processmessages na kljucna mesta u kodu = bez efekta .

napominjem da je sve moralo da se dogodi na OnPaint jer onShow ne moze da ''ugasi'' prozor na kraju...

gde gresim ?
 
Odgovor na temu

silverglider

Član broj: 651
Poruke: 218
*.batalpha.de

Sajt: www.benchmark.co.yu


Profil

icon Re: OnPaint12.06.2003. u 11:13 - pre 253 meseci
Cekaj, a sto mora da se poziva na OnPaint forme? Nije li to malo suvise frekventni event koji okida dzaranje po bazi? Sta fali recimo ovome:

formx.Show;
(formx.BringToFront;)
formx.Sredi();
formx.Hide;

koji stavis u event objekta baze, tipa tabela.OnNewRecord ili tabela.AfterPost. Naravno, ne mora sa show/hide, moze i sa create/close i ostalo - poenta je u tacci iz koje se taj Sredi() poziva, u ovom slucaju stvarno samo kada se izvrsi upis, a ne kada forma dobije WM_PAINT.
Ili ja nisam dobro razumeo sta tebi treba? :)
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
80.93.225.*



+62 Profil

icon Re: OnPaint12.06.2003. u 11:37 - pre 253 meseci
Ocigledno je problem u redosledu izvrsavanja. Kada je forma sa Caption-om, prvi poziv OnPaint se desi kada je default iscrtavanje vec zavrseno, tako da forma na tom mestu 'ume' da se zatvori. Bez Caption-a, OnPaint se prvi put 'okine' za mrvu prerano, to jest forma jos nije 'kompletirana', i poziv Close() samo zamrzne sve (citaj: nesto uleti u mrtvu petlju, verovatno bas message handler).

Prvo: obavezno da premestis svoj kod u OnActivate, jer se taj event desava samo jednom (obzirom na ShowModal), a OnPaint svaki put kad sistem posalje WM_PAINT poruku. (Ili da uvedes neki svoj boolean flag fDone)
Drugo: skoro sam siguran da ni to nece pomoci, zato probaj i ovo

if not(csLoading in ComponentState) then begin
sredi();
formx.close;
end;

Na ovaj nacin, tvoj kod ce biti izvrsen tek kad forma zavrsi sopstveno ucitavanje.
Poz

Rajko
 
Odgovor na temu

Dragan_v
Dragan Vasic
\Telekom\It\
batocina

Član broj: 9084
Poruke: 131
*.telekom.yu

Jabber: Vaske@elitesecurity.org
ICQ: 48390397
Sajt: www.bestcentar.com


Profil

icon Re: OnPaint12.06.2003. u 13:39 - pre 253 meseci
ma taj form ciji OnPaint sam koristio je samo tu da prikaze progres....takoreci sminka...citavu proceduru sam mogao da pozovem i bez tog forma....
svestan sam da OnPaint nije najsrecnije resenje.....
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: OnPaint

[ Pregleda: 2613 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.