Zrobiłem to w ten sposób że w zdarzeniu ClientDataSetAfterScroll zapamiętuje klucz główny w zmiennej key typu int
- Kod: Zaznacz cały
void __fastcall TmainForm::ClientDataSetAfterScroll(TDataSet *DataSet)
{
key=ClientDataSetid->Value;
}
Następnie w zdarzeniu rysowania komórki zmieniam kolor tła na zielony jeżeli klucze się zgadzają
- Kod: Zaznacz cały
void __fastcall TmainForm::zawodnicyDBGridDrawDataCell(TObject *Sender,
const TRect &Rect, TField *Field, TGridDrawState State)
{
zawodnicyDBGrid->Canvas->Brush->Color=zawodnicyDBGrid->Canvas->Brush->Color;
if(key==ClientDataSetid->Value)
zawodnicyDBGrid->Canvas->Brush->Color=clGreen;
zawodnicyDBGrid->Canvas->FillRect(Rect);
zawodnicyDBGrid->Canvas->TextOutA(Rect.Left,Rect.Top,Field->AsString);
}
Jest mały problem. Wszystko działa jeżeli poruszam się po tabeli strzałkami a klawiaturze ale gdy przekręcę scrollem na myszce to wyjeżdża niebieska ramka:
Co gorsza jeżeli w tym momencie nacisnę strzałkę na klawiaturze to pojawia się drugi oznaczony wiersz:
To samo dzieje się także bez kolorowania wiersza tzn pojawią się dwa czarne trójkąciki z lewej strony:
Idzie jakoś wyłączyć w moim programie scroll z myszki albo go obsłużyć żeby przełączał mi wiersze tak jak strzałki na klawiaturze?





Exe Stealth Packer.