tienes razon .. en eso me di cuenta ,, aca les pongo un a actualizacion del codigo, diciendole a los componentes que si el padre es scrollbox lo haga .. aun se puede mejorar , ve probandolo aver si llegas a mejorarlo..
pero bueno a mi me funcioina perfectamente..
Código Delphi
[-]
procedure TForm1.MouseWheel(var Msg: tagMSG; var Handled: Boolean);
var
FControl: TWinControl;
i: SmallInt;
o: integer;
Scom: TComponent;
begin
FControl:= FindVCLWindow(Mouse.CursorPos);
i:= HiWord(Msg.wParam);
if Assigned(FControl) and (Msg.message = WM_MOUSEWHEEL) then begin
try
if ( FControl.Parent is TScrollBox) then begin
if i > 0 then begin
with TScrollingWinControl(FControl.Parent).VertScrollBar do begin
if TScrollBox(FControl.Parent).VertScrollBar.Range > 0 then begin
Position:= Position - Increment;
end;
end;
end else begin
with TScrollingWinControl(FControl.Parent).VertScrollBar do begin
if TScrollBox(FControl.Parent).VertScrollBar.Range > 0 then begin
Position:= Position + Increment;
end;
end;
end;
end else begin
if ( FControl.Parent.Parent is TScrollBox) then begin
if i > 0 then begin
with TScrollingWinControl(FControl.Parent.Parent).VertScrollBar do begin
if TScrollBox(FControl.Parent.Parent).VertScrollBar.Range > 0 then begin
Position:= Position - Increment;
end;
end;
end else begin
with TScrollingWinControl(FControl.Parent.Parent).VertScrollBar do begin
if TScrollBox(FControl.Parent.Parent).VertScrollBar.Range > 0 then begin
Position:= Position + Increment;
end;
end;
end;
end;
end;
except
next;
end;
end;
Handled := False;
end;