Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   agregar o cargar un evento a un RxDBLookupCombo (https://www.clubdelphi.com/foros/showthread.php?t=12134)

omardelahoz 06-07-2004 22:56:40

agregar o cargar un evento a un RxDBLookupCombo
 
hola que tal....

haber estoy usando un componente RxDBLookupCombo conectado a una base de datos... trabajo con delphi 6.... el resultado son unos 1000 campos que bienen ordenados... la persona encargada de utilizar esta parte del programa me pide que cuando se despliegue el combo y se mueva la ruedita del mouse el combo se mueva... asi como se hace en word con la reuedita...

estuve averiguando y encontre que existe el evento MouseWheel, MouseWheelDown, MouseWheelUp... lo probe utilizandolo en un reporte y funciono ala perfeccion... pero cuando fui al RxDBLookupCombo sorpresa... no tiene el evento onmousewheel......

como hago para que pueda utilizar ese evento en el RxDBLookupCombo ????
o como hago para que se mueva con la ruedita????


este es el codigo que utilizo para el reporte




Código:

procedure TPrevi.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
var
  Info: TScrollInfo; 
begin
Info.cbSize := SizeOf( Info );
  Info.fMask := sif_Pos;
  GetScrollInfo( Preview.Handle, sb_Vert, Info );
Info.nPos := Info.nPos + Mouse.WheelScrollLines;
 //showmessage(inttostr(Info.nPos));
if Info.nPos >= 0 then
  begin
    SendMessage( Preview.Handle, wm_VScroll, MakeLong( sb_ThumbPosition,
                                              Info.nPos ), 0 );
    SetScrollInfo( Preview.Handle, sb_Vert, Info, True );
  end;
Handled := true;

end;

procedure TPrevi.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
var
  Info: TScrollInfo;
begin
Info.cbSize := SizeOf( Info );
  Info.fMask := sif_Pos;
  GetScrollInfo( Preview.Handle, sb_Vert, Info );
Info.nPos := Info.nPos - Mouse.WheelScrollLines;
 //showmessage(inttostr(Mouse.WheelScrollLines ));
if Info.nPos >= 0 then
  begin
    SendMessage( Preview.Handle, wm_VScroll, MakeLong( sb_ThumbPosition,
                                              Info.nPos ), 0 );
    SetScrollInfo( Preview.Handle, sb_Vert, Info, True );
  end;
Handled := true;
end;


tolomeo 07-07-2004 03:32:23

Facil
 
Si no te he entendido mal creo que lo que deseas es anadir el evento OnMouseWheel al RxDbLookupCombo ;), si es asi lo tienes muy facil. Lo puedes de dos formas:

Puedes crear un nuevo objeto que herede de RxDbLookupCombo y añadirle
esa propiedad a tu objeto de la siguiente manera :

Código Delphi [-]
 TMyRxDbLookupCombo = class(RxDbLookupCombo)
 published
    property OnMouseWheel;
 end;

O la otra forma es no heredar y coger la unidad de las RxLib que contiene el RxDbLookupCombo y añadirle tu esa linea, y despues recompilar las RxLib para que te contemple la nueva propiedad. Esto es asi de sencillo porque esta propiedad esta declarada como protected cuando se define el componente TControl, y como TRxDbLookupCombo hereda de este, realmente contiene esa propiedad, lo unico que hacemos con esto es hacerla publica tanto en tiempo de ejecucion como de diseño con la directiva published.

Espero que te sirva.


La franja horaria es GMT +2. Ahora son las 19:52:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi