- Код: Выделить всё
- TDBGridFreind = class (TRxDBGrid)
 procedure WMVScroll(var Msg: TLMVScroll); message LM_VSCROLL;
 end;
 ...
 procedure TDBGridFreind.WMVScroll(var Msg: TLMVScroll);
 var
 OldRow: Integer;
 begin
 inherited WMVScroll(Msg);
 ShowMessage(IntToStr(Msg.ScrollCode));
 case Msg.ScrollCode of
 SB_PAGEUP, SB_TOP:
 begin
 OldRow := TDBGridFreind(Form1.dgMemBig).Row;
 if OldRow = 1 then
 begin
 Form1.fGotoFirst := True;
 Form1.fCellClick := False;
 end;
 end;
 end;
 end;
P.S. CodeTyphon 5.7, FPC 3.1.1, Rev. SVN 51797




 Ситуация такая, что надо отлавливать именно клики по скроллеру грида. Долистали до самой верхней видимой строки - заморозили курсор именно в ней. Чтоб всегда была выделена именно первая строка. Для чего: есть список заказов (таксишная прога). Курсор всегда следует за выделенной строкой в зависимости от статуса заказа. То есть, выделен всегда один и тот же заказ. А логику надо поменять так, что если оператор долистает до верха грида (не набора данных! Там может быть совсем иной порядок данных), то всегда будет выделена именно первая строка независимо ни от чего. До тех пор, пока оператор или не уйдет с нее, или не кликнет мышой в гриде. Для кнопок курсора и PgUP я сделал, и оно работает. А вот отловить события скроллера не получается.
 Ситуация такая, что надо отлавливать именно клики по скроллеру грида. Долистали до самой верхней видимой строки - заморозили курсор именно в ней. Чтоб всегда была выделена именно первая строка. Для чего: есть список заказов (таксишная прога). Курсор всегда следует за выделенной строкой в зависимости от статуса заказа. То есть, выделен всегда один и тот же заказ. А логику надо поменять так, что если оператор долистает до верха грида (не набора данных! Там может быть совсем иной порядок данных), то всегда будет выделена именно первая строка независимо ни от чего. До тех пор, пока оператор или не уйдет с нее, или не кликнет мышой в гриде. Для кнопок курсора и PgUP я сделал, и оно работает. А вот отловить события скроллера не получается.

 
  )
 )