Ver Mensaje Individual
  #6  
Antiguo 08-06-2006
crack_neon crack_neon is offline
Miembro
 
Registrado: abr 2006
Posts: 28
Reputación: 0
crack_neon Va por buen camino
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 [-]
 
{ Private declarations }
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.

Última edición por dec fecha: 09-06-2006 a las 01:17:39.
Responder Con Cita