AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man richtig scrollen?

Ein Thema von p80286 · begonnen am 23. Nov 2009 · letzter Beitrag vom 24. Nov 2009
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Wie kann man richtig scrollen?

  Alt 23. Nov 2009, 14:48
Hallo zusammen,

ich habe mir einen Browser für Stringlisten gebastelt, der bis 32.000 Zeilen auch ganz brauchbar ist. (16-Bit Integer)
Da ich manchmal ein paar Zeilen mehr bewegen muß habe ich versucht mit GetScrollPos und GetScrollInfo höhere Werte für meine angezeigte Zeile(n) zu realisieren. In beiden Fällen funktioniert es nicht.
ScrollInfo liefert nur Nullen zurück(!?) und GetScrollPos die letzte Position vor dem Bewegen des Thumb.
Delphi-Quellcode:
case Message.ScrollCode of
    SB_LINEDOWN : Inc(NewTopLine);
    SB_LINEUP : Dec(NewTopLine);
    SB_PAGEDOWN : Inc(NewTopLine, FVisibleLines - 1);
    SB_PAGEUP : Dec(NewTopLine, FVisibleLines - 1);
    {SB_THUMBPOSITION, SB_THUMBTRACK: NewTopLine := Message.Pos;} { funktioniert nutr bis $7FFF }
    //SB_THUMBPOSITION : NewTopLine := GetScrollPos(handle,SB_VERT)+1;
    SB_THUMBPOSITION : begin
                         fillchar(Scrollinfo,sizeof(scrollinfo),#0);
                         Scrollinfo.cbSize := SizeOf(ScrollInfo);
                         Scrollinfo.fMask := SIF_ALL;
                         GetScrollInfo(Handle, SB_CTL, ScrollInfo);
                         NewTopLine := Scrollinfo.nTrackPos;
                       end;
     end;
Kann mir da einer weiterhelfen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Wie kann man richtig scrollen?

  Alt 23. Nov 2009, 17:54
Richtiges Handle für GetScrollInfo benützt? (nimmst du nicht das Handle des Formulars anstelle des Scrollbars?)
Und der Returnwert von GetScrollInfo sollte ausgewertet werden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Wie kann man richtig scrollen?

  Alt 23. Nov 2009, 18:10
Ja das Handle sollte das richtige sein, bei GetScrollPos kommt der korrekte Ausgangswert zurück. (das +1 ist ein Überrest vom Testen).

Hier nicht mehr sichtbar habe ich ein GetLastError eingebaut, das nie einen Fehler zurückgegeben hat.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Wie kann man richtig scrollen?

  Alt 24. Nov 2009, 11:09
Falls es jemanden interessieren sollte, so geht's:
Delphi-Quellcode:
SB_THUMBPOSITION : begin
                     fillchar(Scrollinfo,sizeof(scrollinfo),#0);
                     Scrollinfo.cbSize := SizeOf(ScrollInfo);
                     Scrollinfo.fMask := SIF_ALL;
                     GetScrollInfo(Handle, SB_VERT, ScrollInfo); // die richtige Bewegungsrichtung eintragen!
                     NewTopLine := Scrollinfo.nTrackPos;
                   end;
Augenscheinlich ist SB_CTL in diesem Falle nicht anwendbar.

Grüße
K-H

Nachtrag:

Delphi-Quellcode:
SB_THUMBPOSITION, SB_THUMBTRACK: NewTopLine := Message.Pos; { funktioniert nur bis $7FFF }
SB_THUMBPOSITION, SB_THUMBTRACK: NewTopLine := word(Message.Pos); { funktioniert bis $FFFF }
falls man etwas bescheiderner ist und keine 32Bit braucht.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 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