Stringgrid pixelgenaues scrollen (horizontal)

Rund um die LCL und andere Komponenten
Antworten
jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Stringgrid pixelgenaues scrollen (horizontal)

Beitrag von jeanP »

Hallo,

habe so ein wenig Schwierigkeiten mit dem Stringgrid.

Ich benötige ein pixelgenaues Scrollen der horizontalen ScrollBar. In den Options habe ich goThumpTracking aktiviert. Wenn man also mit der Maus den Scrollbalken an sich bewegt, erfolgt ein pixelgenaues Update auf das Grid.
Klicke ich aber auf die Pfeile rechts und links springt die Anzeige des Grids.

In einem Delphi-Forum habe ich gelesen, dass es aber bei Lazarus möglich sein soll, dieses pixelgenaue Scrollen mit der horizontalen Scrollbar umzusetzen.
Hat jemand eine Idee, was da gemacht werden muss. :shock:

Vielen Dank.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Stringgrid pixelgenaues scrollen (horizontal)

Beitrag von wp_xyz »

Unter Options schon mal goSmoothScroll gesetzt?

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: Stringgrid pixelgenaues scrollen (horizontal)

Beitrag von jeanP »

goSmoothScroll ist gesetzt

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Stringgrid pixelgenaues scrollen (horizontal)

Beitrag von Michl »

Ich weiß zwar nicht wofür das gut sein soll, aber du kannst einen Hack machen (zumindest bei mir unter Windows 7 funktioniert das):

Code: Alles auswählen

uses ..., LMessages, LCLType;
 
type
  TStringGrid = class(Grids.TStringGrid)
    procedure WMHScroll(var message : TLMHScroll); message LM_HSCROLL;
  end;
 
...
 
procedure TStringGrid.WMHScroll(var message: TLMHScroll);
begin
  case message.ScrollCode of
    SB_PAGERIGHT, SB_LINERIGHT:
      begin
        message.ScrollCode := SB_THUMBPOSITION;
        message.Pos := GetScrollBarPosition(SB_Horz) + 1;
      end;
    SB_PAGELEFT, SB_LINELEFT:
      begin
        message.ScrollCode := SB_THUMBPOSITION;
        message.Pos := GetScrollBarPosition(SB_Horz) - 1;
      end;
  end;
 
  inherited;
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: Stringgrid pixelgenaues scrollen (horizontal)

Beitrag von jeanP »

Hallo Michl,

vielen Dank. Werde ich mich morgen dann gleich mal ransetzen.

:D

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: Stringgrid pixelgenaues scrollen (horizontal)

Beitrag von jeanP »

Rueckmeldung:

Hi Michl,

perfekt. Ich arbeite mit Win10. Funktioniert prima, genau wie ich es mir vorgestellt habe. :wink:

Besten Dank.

Antworten