Bueno realize esto, en un DataModule que es donde tengo el acceso a mi BD declare una variable global llamada NumRegistro y en el evento DataChange del DataSet le asigne valor a esta variable.
Código Delphi
[-]
var
CnxDatos: TCnxDatos;
RutaAPP, RutaDBDatos: string;
NumRegistro: integer;
procedure TCnxDatos.DSTablaDataChange(Sender: TObject; Field: TField);
begin
NumRegistro := ADOTabla1.RecNo;
end;
y en el formulario principal de la aplicacion en el ApllicationEvents:
Código Delphi
[-]
procedure TfrmPrincipal.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
i: SmallInt;
begin
case Msg.message of
WM_MOUSEWHEEL: begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
i := HiWord(Msg.wParam) ;
if i > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;
Handled := False;
if PageControl1.ActivePage = TabSheet1 then
NumRegistroActual;
end;
WM_KEYDOWN,WM_KEYUP: NumRegistroActual;
end;
end;
procedure TfrmPrincipal.PageControl1Change(Sender: TObject);
begin
if PageControl1.ActivePageIndex = 1 then
begin
Label1.Caption := IntToStr(CnxDatos.ADOTabla1.RecNo );
Label2.Caption := IntToStr(CnxDatos.ADOTabla1.RecordCount);
end;
end;
procedure TfrmPrincipal.DBGrid1CellClick(Column: TColumn);
begin
NumRegistroActual;
end;
procedure TfrmPrincipal.NumRegistroActual ;
begin
Label1.Caption := IntToStr(NumRegistro);
end;
procedure TfrmPrincipal.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
case Button of
nbFirst,nbPrior,nbNext,nbLast: NumRegistroActual;
end;
end;
De esta manera me esta funcionando, solo existe un problema cuando avanzo con la rueda del raton y es que el numero de registro siempres es uno menos; por ejemplo estoy en el 38 y el valor en la etiqueta es 37 .
Como siempre se siguen aceptando sugerencias. Gracias.