Hola, tengo un formulario con varios marcos dentro.Delphi 7 - Manejo de eventos MouseWheel para marcos incrustados en formularios?
Para algunos de los marcos, deseo desplazar los contenidos (o al menos manejar el evento de la rueda del mouse).
He intentado lo siguiente:
simplemente asignar un controlador de eventos OnMouseWheel para cada cuadro
Anulación del evento MouseWheel para el formulario principal:
procedure TFmReview.MouseWheelHandler(var Message: TMessage);
var Control: TControl;
begin
Control := ControlAtPos(ScreenToClient(SmallPointToPoint(TWMMouseWheel(Message).Pos)), False, True);
if Assigned(Control) and (Control <> ActiveControl) then
begin
ShowMessage(Control.Name);
Message.Result := Control.Perform(CM_MOUSEWHEEL, Message.WParam, Message.LParam);
if Message.Result = 0 then
Control.DefaultHandler(Message);
end else inherited MouseWheelHandler(Message);
end;
Desafortunadamente tanto no se parecen a trabajar.
- En el caso 1, el evento nunca se desencadena, sin embargo, se desencadena el controlador de rueda del mouse padre de formularios.
- En el caso 2, el control que recibe el foco es el panel que contiene el cuadro al que deseo enviar el evento de la rueda del mouse.
Así que, en pocas palabras, ¿cómo puedo dirigir el evento mousewheel al control más alto que el cursor del mouse (independientemente de qué frame/parent/form etc. el cursor está)?
Tome un vistazo a [estos SO respuestas] [ 1] probablemente lo ayuden. [1]: http://stackoverflow.com/questions/2472743/what-is-the-best-method-for-implementing-mouse-wheel-activity-in-delphi-vcl-form –
posible duplicado de [¿Cómo dirigir la entrada de la rueda del mouse para controlar debajo del cursor en lugar de enfocar?] (http://stackoverflow.com/questions/2251019/how-to-direct-the-mouse-wheel-input-to-control -under-cursor-instead-of-focused) – Kromster