Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie Smooth-Scrollen in TJvPreViewControl? Jedi (https://www.delphipraxis.net/68606-wie-smooth-scrollen-tjvpreviewcontrol-jedi.html)

BrunoT 2. Mai 2006 15:29


Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Hi DPler,

Problem: in TJvPreViewControl (Jedi-Jvcl) will ich mit der Wheel-Maus langsam scrollen.
ich habe folgendes versucht:

Delphi-Quellcode:
procedure TFStBerechng.JvPreViewMouseWheelDown(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
  with (Sender as TJvPreViewControl) do
    VertScrollBar.Position:= VertScrollBar.Position+10;
end;

procedure TFStBerechng.JvPreViewMouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
  with (Sender as TJvPreViewControl)Do
    VertScrollBar.Position:= VertScrollBar.Position-10;
end;
aber irgendwie ignoriert TJvPreViewControl diese Anweisungen und springt seitenweise.
Kennt jemand eine Lösung?

mfg

BrunoT 9. Mai 2006 10:15

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Hi,

weiss da keiner eine Lösung? :wall: :wall: :wall:

mfg

Robert Marquardt 9. Mai 2006 10:25

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Setz doch mal Handled auf True, damit die VCL auch weiss das du die Message selber behandelt hast.

BrunoT 9. Mai 2006 10:37

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Hallo Robert,

Handled auf TRUE und jetzt tut sich erst mal gar nichts mehr(Wheelmausmäßig). Habe ich da noch nen Fehler drin? :gruebel:

mfg

Robert Marquardt 9. Mai 2006 11:15

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Das bedeutet zumindest das die Zuweisung in den Methoden nichts bewirkt.
Das Scrollen kam also wie vermutet von der Standardbehandlung.

BrunoT 9. Mai 2006 11:33

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Hi Robert,

ich habe mal den Jedi-Quelltext angeschaut:
Delphi-Quellcode:
function TJvCustomPreviewControl.DoMouseWheel(Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint): Boolean;
var
  Msg: TWMScroll;
  SI: TScrollInfo;
begin
  Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
  if not Result then
  begin
    FillChar(SI, SizeOf(TScrollInfo), 0);
    SI.cbSize := SizeOf(TScrollInfo);
    SI.fMask := SIF_ALL;
    GetScrollInfo(Handle, SB_VERT, SI);
    if SI.nMax = 0 then
      Exit;
    Msg.Msg := WM_VSCROLL;
    if WheelDelta > 0 then
      Msg.ScrollCode := SB_PAGEUP //Hier
    else
      Msg.ScrollCode := SB_PAGEDOWN;
    Msg.Pos := FScrollPos.Y;
    Msg.Result := 0;
    WMVScroll(Msg);
    Refresh;
    TDeactiveHintThread.Create(500, HintWindow);
    HintWindow := nil;
    Result := True;
  end;
end;
eventuell kann man da was tun?

mfg

Robert Marquardt 9. Mai 2006 11:58

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Das duerfte die Stelle sein an der man Aenderungen vornimmt.
Mal SB_LINEUP bzw SB_LINEDOWN ausprobieren.
Am besten nach der Aenderung die JVCL per Installer neu uebersetzen.

BrunoT 9. Mai 2006 12:02

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Kann man das auch ohne direkte Änderung an Jedi tun?

(ich meine über Vererbung) sonst müsste ich diese Änderung bei jeder Jedi-Version nachvollziehen.

mfg

Robert Marquardt 9. Mai 2006 12:43

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Probier doch erst mal aus ob das so funktioniert.
Ansonsten mal in englisch in unserer Newsgroup news://forums.talkto.net:119/jedi.vcl nachfragen.
Bitte die urspruengliche Frage fragen (ob man das im MouseWheelDown hinkriegen kann) und ob man die Komponente fuer ein SmoothScroll erweitern kann (deshalb die Bitte das SB_LINEDOWN zu probieren).

BrunoT 11. Mai 2006 08:28

Re: Wie Smooth-Scrollen in TJvPreViewControl? Jedi
 
Hi Robert,

ich werde das mir mal nächste Woche anschauen, im Augenblick ist das nicht lebenswichtig und nächste Woche habe ich dazu Zeit. Rückmeldung folgt.

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz