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/)
-   -   Richedit Scrollbar Event (https://www.delphipraxis.net/153991-richedit-scrollbar-event.html)

martin_ 24. Aug 2010 10:40

Richedit Scrollbar Event
 
Hallo,
wie kann ich in einer Richedit Komponente feststellen, ob sich die Scrollbarposition verändert hat? Name des Event in der Scrollbar ist "OnScroll". Nur wie kann ich auf das Event zugreifen?
Danke.

DeddyH 24. Aug 2010 11:04

AW: Richedit Scrollbar Event
 
Ich habe gerade kein Delphi verfügbar, aber sollte es nicht genügen, im RichEdit die Messages WM_HSCROLL bzw. WM_VSCROLL zu behandeln?

barese 24. Aug 2010 11:57

AW: Richedit Scrollbar Event
 
Ich tu das immer mit 'GetScrollPos'...

etwa so...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var pos,min,max:Integer;
begin
  GetScrollRange(RichEdit1.Handle,sb_vert,min,max);
  pos:=GetScrollPos(RichEdit1.Handle,sb_vert);
  showmessage(inttostr(pos)+' '+inttostr(min)+' '+inttostr(max));
end;
die Variable 'pos' gibt dann einen wert den man mit den bisherigen vergleichen kann.
Hoffe es klappt.

DeddyH 24. Aug 2010 12:00

AW: Richedit Scrollbar Event
 
Dazu müsstest Du aber pollen, oder täusche ich mich? Schöner wäre es IMHO, wenn beim Scrollen einfach ein Event ausgelöst wird.

martin_ 24. Aug 2010 12:26

AW: Richedit Scrollbar Event
 
Habe es so gemacht:
Delphi-Quellcode:
procedure FormCreate(Sender: TObject);
procedure redtWndProc(var Message: TMessage);

procedure TFormxx.FormCreate(Sender: TObject);
begin
  FOldMemoProc := redt1.WindowProc;
  redt1.WindowProc := redtWndProc;
end;

procedure TFormxx.redtWndProc(var Message: TMessage);
begin
  if ((Message.Msg = WM_VSCROLL)or (Message.Msg = WM_HSCROLL)) then
  begin
    ShowMessage('scroll');
  end
  else
    FOldMemoProc(Message);
end;
Das funktioniert allerdings nur, wenn ich mit der Maus die Scrollbar auswähle. Scrollen mit dem Mausrad funktioniert nicht. Benötige ich da noch weitere Nachrichten? oder ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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