AFAIK ScaleRichView editor doesn't handle the Mouse WheelScroll event, nor the Ctrl+WheeScroll event for zooming.
Tested with the ActionTests demo, without changing any properties to the TSRichViewEdit.
Is there any options to turn on or is it an Lazarus specific issue?
Lazarus: Wheelscroll not handled by editor
Re: Lazarus: Wheelscroll not handled by editor
I tried the compiled ActionTests demo I have and there's no mousewheel action in it. I would assume it was compiled in delphi.
I'm using a plain rve (not the scale version), but I found that in the app I'm currently working on that I had the best luck with putting mouse wheel code in the form:
Then, in my 2 rve's, I added this so they only scroll with the wheel if the mouse is over them:
So, you might try adding code to the form and see if that helps.
Stan
I'm using a plain rve (not the scale version), but I found that in the app I'm currently working on that I had the best luck with putting mouse wheel code in the form:
Code: Select all
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
WinControl: TWinControl;
i: Integer;
Begin
WinControl := nil;
if FindDragTarget(MousePos,false) is TWinControl then
WinControl := TWinControl(FindDragTarget(Mouse.CursorPos,false));
if WinControl <> nil then
Begin
if not ((WinControl is TVirtualStringTree) or
(WinControl is TCustomRichViewEdit)) then exit;
if WinControl.MouseInClient then
For i:= 1 To Mouse.WheelScrollLines
Do
Begin
Try
If WheelDelta > 0
Then SendMessage(WinControl.Handle,WM_VSCROLL,SB_LINEUP,0)
Else SendMessage(WinControl.Handle,WM_VSCROLL,SB_LINEDOWN,0);
Finally
SendMessage(WinControl.Handle,WM_VSCROLL,SB_ENDSCROLL,0);
End;
End;
End;
...
Code: Select all
procedure TForm1.rveMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
Begin
Handled := not PtInRect(rvePanel.ClientRect,rvePanel.ScreenToClient(MousePos));
end;
Stan
Re: Lazarus: Wheelscroll not handled by editor
Thanks Stan for your help,
I did test your code (deleting TVirtualStringTree) but the Form Event is not fired when the mouse is on SRVE.
Anyway, I ended up with this simple code and it works fine for me:
Luc
I did test your code (deleting TVirtualStringTree) but the Form Event is not fired when the mouse is on SRVE.
Anyway, I ended up with this simple code and it works fine for me:
Code: Select all
procedure TFormTextEditor.SRichViewEdit1MouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
var Handled: Boolean);
begin
if SRichViewEdit1.CanScroll then
begin
SRichViewEdit1.ScrollBarV.Position := SRichViewEdit1.ScrollBarV.Position + (WheelDelta*-1);
Handled := True;
end;
end;
Re: Lazarus: Wheelscroll not handled by editor
Makes sense, the srve probably "steals" the mouse message. Glad you got it working!
Stan
Stan
Re: Lazarus: Wheelscroll not handled by editor
Just to give back some code to handle the ctrl+mousewheel to zoom in and out:
Code: Select all
procedure TFormTextEditor.SRichViewEditMouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
var Handled: Boolean);
begin
if (ssCtrl in Shift) then
begin
SRichViewEdit.ViewProperty.ZoomPercent := SRichViewEdit.ViewProperty.ZoomPercent + (WheelDelta);
SRichViewEdit.ViewProperty.ZoomMode := rvzmCustom;
end else
begin
if SRichViewEdit.CanScroll then
begin
SRichViewEdit.ScrollBarV.Position := SRichViewEdit.ScrollBarV.Position + (WheelDelta*-1);
Handled := True;
end;
end;
end;
-
- Site Admin
- Posts: 17564
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
Re: Lazarus: Wheelscroll not handled by editor
Do you mean that mouse wheel scrolling/zooming does not work in TSRichViewEdit in Lazarus?
Sorry, I cannot reproduce this problem (Windows 10, Lazarus 2.2, newest version of TRichView and ScaleRichView)
Sorry, I cannot reproduce this problem (Windows 10, Lazarus 2.2, newest version of TRichView and ScaleRichView)
Re: Lazarus: Wheelscroll not handled by editor
You are right, the wheelscroll is working with the demo but not when I use a panel as parent for all the demo components (I had to use additional panel as I need to add some more side panels in the form holding SRV).
The wheescroll is working for the thumbnail panel though.
Nothing really annoying since the custom event handler does the job but may be something to look after.
For the record, I use win 8.1 on VM but I don't think it is related.
The wheescroll is working for the thumbnail panel though.
Nothing really annoying since the custom event handler does the job but may be something to look after.
For the record, I use win 8.1 on VM but I don't think it is related.