AGB  ·  Datenschutz  ·  Impressum  







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

Scrollen einschalten beim DBGrid

Ein Thema von blawen · begonnen am 26. Jul 2023 · letzter Beitrag vom 26. Jul 2023
Antwort Antwort
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
654 Beiträge
 
Delphi 12 Athens
 
#1

Scrollen einschalten beim DBGrid

  Alt 26. Jul 2023, 18:24
Wir haben einen Samsung Flip, welchen wir für unser Shopfloor einsetzen.
Auf diesem werden u.a. Daten in mehreren DBGrid's angezeigt und genau mit diesem DBGrid's bin ich im Moment am "Kämpfen".

Standardmässig funktioniert bei einem DBGris das Scrollen durch die Datensätze mit dem Mausrad, nicht jedoch, wenn der Scrollbalken verschoben wird oder mit dem Finger innerhalb der DBGrid-Anzeige nach oben oder unten gewischt wird.

Beim SDC habe ich eine Lösung gefunden, um das Scrollen zu aktivieren.

Die Datensätze werden beim Bewegen des Balkens "live" "durchgescrollt, was grundsätzlich das Ziel ist.

Allerding's hat diese Lösung zwei Unschönheiten:
  • Pro DBGrid muss eine Procedure "GridWindowProc" erstellt werden.
    Wenn in einem Formular mehrere DBGrid's vorhanden sind, wird es nicht übersichtlicher.
  • Eine Wischbewegung innerhalb der angezeigten Datensätze bewirkt nichts.
    Mittels dem Gestenmanager schaffe ich es, jeweils x Datensätze zu skippen - flüssiges scrollen ist anders.


Im Zeitalter der Touchscreen's müsste dies doch schon von Hause aus funktionieren.
Was mache ich falsch, bzw. was übersehe ich?

Delphi-Quellcode:
{ - Here is tip how to scroll DBGrid -}

//...
private
  OldGridProc: TWndMethod;
  procedure GridWindowProc(var Message: TMessage);
//...

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldGridProc := DBGrid1.WindowProc;
  DBGrid1.WindowProc := GridWindowProc;
end;

procedure TForm1.GridWindowProc(var Message: TMessage);
var
  Pos: SmallInt;
begin
  OldGridProc(Message);
  if Message.Msg = WM_VSCROLL then //or WM_HSCROLL
  begin
    Pos := Message.WParamHi; //Scrollbox position
    Table1.RecNo := Pos;
  end;
end;
Roland
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.052 Beiträge
 
Delphi 12 Athens
 
#2

AW: Scrollen einschalten beim DBGrid

  Alt 26. Jul 2023, 22:14
Zu den Gesten kann ich nichts sagen, aber das mit dem Scrollbar kannst du auch mit einer Interposer-Klasse lösen:
Delphi-Quellcode:
type
  TDBGrid = class(Vcl.DBGrids.TDBGrid)
  private
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
  end;

procedure TDBGrid.WMVScroll(var Message: TWMVScroll);
begin
  inherited;
  if not (Focused or (InplaceEditor <> nil) and InplaceEditor.Focused) then Exit;
  if Datalink.Active then begin
    case Message.ScrollCode of
      SB_THUMBTRACK: DataLink.DataSet.RecNo := Message.Pos;
    end;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 22:05 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