I'm wanting to write a component that uses the mouse wheel to zoom something similar to Google earth.
I have a component using onMouseWheel and I have properties MaxZoom MinZoom and Zoom there is a better option that StretchDraw with the bitmap I'm trying to get the location of the components area in the form
What I understand I have to find each parent until I find the tCustomform and add all Component's top and components left to get the objects location to find my objects location. is there a better way
once I have the location I can zoom a Map from the mouse cursor location if the mouse is over my object and where to zoom from.
has any one seen any code please
If you are writing a component then you should try overriding these 2 methods in your component:
function DoMouseWheelDown( Shift :TShiftState; MousePos :TPoint ) :Boolean; override; function DoMouseWheelUp( Shift :TShiftState; MousePos :TPoint ) :Boolean; override;
which are protected dynamic methods of TControl. They get called whenever the mouse wheel is rotated.
It depends on what kind of content you are going to zoom ; I will only Post here how to get how long the wheel has moved
on private declaration
private
{ Private declarations }
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
on create or any other starting procedure
OnMouseWheel := formMouseWheel; // depends on you
The FormMouseWheel comes like this
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
// your code here
// WheelDelta returns you - or + values (in my computer -120 and + 120 ;
// It depends on control panel mouse wheel settings)
// If it is a font make the font size bigger or
// if it is a image
// strech := true;
// increase width and height of the Timage
//and put them inside a scrollbox
//
end;
I checked it using vcl form (not inside component ), If You want to zoom post us what kind of content you want to zoom
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With