[ Nikola Radojicic @ 26.09.2005. 14:25 ] @
Koji dogadjaj nastupa kod DBGrid kada se pomeranje po tabeli vrsi ne pritiskom na misa, nego kada se kroz tabelu pomeramo sa kursorima dole-gore. Probao sam sa OnCellClick, ali to nije. |
[ Nikola Radojicic @ 26.09.2005. 14:25 ] @
[ Srki_82 @ 26.09.2005. 16:48 ] @
Imas OnKeyXXX evente pa izaberi koji ti najvise odgovara. OnKeyDown se generise kada se neki taster pritisne, OnKeyUp kada se taster pusti, a OnKeyPress se aktivira kao kad kucas... znaci ako samo kratko pritisnes pa pustis generisace se jedan event, a ako malo duze drzis pojavice se nekoliko eventa sve dok ne pustis dugme.
[ _v!rus_ @ 28.09.2005. 08:27 ] @
Za bilo kakvo track-ovanje promene trenutnog recorda nemoj da se kacis na evente DBGrida ili bilo koje druge DB komponente, kaci se na event dataseta, znaci u tvom slucaju DBGrid.Dataset.OnScroll, tako ces uhvatiti svaku promenu record pointera.
[ Nikola Radojicic @ 28.09.2005. 12:46 ] @
Koristim Delphi 6.
Na DataSource se nalaze 3 eventa: OnDataChange, OnStateChange i OnUpdateData. U helpu za ove dogadjaje ne nalazim kako bih ovo mogao iskoristiti za ispitivanje pritiska kursorskih tastera. Takodje, OnKeyDown na DBGrid izbacuje gresku kod koda: if (Key = VK_UP) then... Tako da problem i dalje stoji. [ Srki_82 @ 28.09.2005. 13:05 ] @
Koju gresku ti izbacuje kod tog koda?
Zasto ti je tako bitno da znas kad je taster pritisnut? Ako ti treba koji je trenutni aktivni rec. u tabeli ili query koristis AfterScroll event Query-a ili Tabele, ili OnDataChange DataSet komponente. [ Nikola Radojicic @ 28.09.2005. 13:59 ] @
Code: procedure TfrmReklamacije.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_UP) then MessageDlg(Key + ' gore pritisnuto', mtInformation, [mbOK], 0); end; [Error] Reklamacije.pas(649): Incompatible types: 'String' and 'Word' Dakle, na obrascu imam DBEdit za prikaz broja dana reklamacije i DBGrid za prikaz cele tabele reklamacija. Ako je broj dana npr.>45 on treba da pocrveni. Na DBgrid na OnCellClick sam dodao proveru i sve lepo funkcionise, dakle kada se kursorom misa pomerite na bilo koji zapis, provera funkcionise, ali kada pomeranje na tabeli DBGrid vrsim sa kursorskim tasterima gore-dole, onda ovo nema efekta tj. nema provere. [ Srki_82 @ 28.09.2005. 14:30 ] @
Code: procedure TfrmReklamacije.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_UP) then MessageDlg(IntToStr(Key) + ' gore pritisnuto', mtInformation, [mbOK], 0); end; Ovaj kod ce da radi. Zasto ne koristis OnDataChange? Ako je polje koje oznacava datum promenjeno desice se ovaj event i samo provaris trenutnu vrednos polja u kojem je datum i odredis da li treba da se crta crveno ili ne. [ Nikola Radojicic @ 29.09.2005. 07:05 ] @
Hvala Srdjene na tvojoj upornosti, bio si u pravu, prethodni kod sada radi. Prevideo sam IntToStr(Key). Ostaje jos samo da umesto poruke dodam proveru vrednosti i promenu boje.
Vec koristim OnDataChange na DBEdit polju, ali to nije dovoljno, jer pomeranje to tabeli na istom obrascu menja i tekuci zapis, tako da kontrolu vrednosti i boja treba osveziti. To je razlog sto sam insistirao na proveri kursora dole-gore. Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|