El problema del dbgrid lo solucione con esto:
En las Private declarations agregue un procedimiento (PillaLaRueda) con el nombre del dbgrid antecediendolo.
Código Delphi
[-]
procedure DBGClientePillaLaRueda(var Message: TMessage);
Y debajo de la implementación :
Código Delphi
[-]
implementation
{$R *.dfm}
type
TomaInvento = class(TControl);
procedure TfrmClientes.DBGClientePillaLaRueda(var Message: TMessage);
var
Cuanto : short;
begin
if (Message.Msg = WM_MOUSEWHEEL) then begin
Cuanto:=HIWORD(Message.WParam);
Cuanto:=Cuanto div 120;
DBGCliente.DataSource.DataSet.MoveBy(-Cuanto);
frmClientes.DBGClienteCellClick(nil);
end else TomaInvento(DBGCliente).WndProc(Message);
end;
Por ultimo en el FormCreate se le asigna al dbgrid el procedimiento.
Código Delphi
[-]
procedure TfrmClientes.FormCreate(Sender: TObject);
begin
DBGCliente.WindowProc := DBGClientePillaLaRueda;
end;
Nota: soy novato, disculpen mi mala explicación, pero pueden estar seguros que el código funciona, ojala les sea de utilidad.
Mi problema con poder usar la ruedita en un Form ya lo solucione:
En el evento OnMouseWheelDown del Form escribi:
Código Delphi
[-]
FormCrearCocina.ScrollBy(0,-20);
En el evento OnMouseWheelUp del Form escribi:
Código Delphi
[-]
frmCrearCocina.ScrollBy(0,20);
Nuevamente les mando un saludo.