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