Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   DBGrid horizontale ScrollBar Position (https://www.delphipraxis.net/157375-dbgrid-horizontale-scrollbar-position.html)

sega84 10. Jan 2011 09:45

DBGrid horizontale ScrollBar Position
 
Hallo,
ist es möglich mit einem TSMDBGrid, welches mit Option RowSelect läuft, die aktuelle horizontale ScrollBar Position zu ermitteln und wieder zurück zu schreiben?
Vielen Dank für eure Antworten...

DeddyH 10. Jan 2011 09:56

AW: DBGrid horizontale ScrollBar Position
 
Wenn Du an das Handle kommst, könnten vielleicht MSDN-Library durchsuchenGetScrollInfo und MSDN-Library durchsuchenSetScrollInfo helfen.

sega84 10. Jan 2011 10:06

AW: DBGrid horizontale ScrollBar Position
 
Das hatte ich bereits versucht.
Die Scrollbars werden auch richtig gesetzt, nur steht das Grid trotzdem immer wieder auf dem ersten Datensatz.

haentschman 10. Jan 2011 10:16

AW: DBGrid horizontale ScrollBar Position
 
Moin...

verwechselst du vieleicht horizontal mit vertikal ? :gruebel:
Du sprichst von Datensatz... Willst du den "letzten markierten" Datensatz wieder markieren ? (vertikal) oder zu einer entsprechenden Spalte scrollen ? (horizontal)

sega84 10. Jan 2011 10:22

AW: DBGrid horizontale ScrollBar Position
 
Oh sorry, da habe ich mir im letzten Post geirrt...
Ich meinte das DBGrid springt automatisch auf die erste Spalte, er sollte allerdings auf die Spalte der ScrollBar Position springen...

Hier ein wenig Code, wie ich es ausführe:
Code:
 
  var TempScrollInfo: SCROLLINFO;
begin
  // Position der horizontalen Scrollbar
  TempScrollInfo.cbSize := SizeOf(SCROLLINFO);
  TempScrollInfo.fMask := SIF_POS;
  GetScrollInfo(grdData.Handle, SB_HORZ, TempScrollInfo );
  //Daten neu laden...
  //..
   
  //Die horizontale Scrollposition wiederherstellen
  SetScrollInfo(grdData.Handle, SB_HORZ, TempScrollInfo, true);

DeddyH 10. Jan 2011 10:35

AW: DBGrid horizontale ScrollBar Position
 
Was gibt GetScrollInfo denn zurück?

sega84 10. Jan 2011 10:38

AW: DBGrid horizontale ScrollBar Position
 
Liste der Anhänge anzeigen (Anzahl: 1)
Folgende Werte erhalte ich:

DeddyH 10. Jan 2011 10:44

AW: DBGrid horizontale ScrollBar Position
 
Zitat:

Remarks

The SetScrollInfo function performs range checking on the values specified by the nPage and nPos members of the SCROLLINFO structure. The nPage member must specify a value from 0 to nMax - nMin +1. The nPos member must specify a value between nMin and nMax - max( nPage– 1, 0). If either value is beyond its range, the function sets it to a value that is just within the range.
Das klingt für mich so, als müsstest Du beim GetScrollInfo-Aufruf die fMask ausweiten auf SIF_PAGE or SIF_POS or SIF_RANGE.

[edit] So müsste es gehen (mit einem Memo getestet):
Delphi-Quellcode:
  var TempScrollInfo: SCROLLINFO;
begin
  // Position der horizontalen Scrollbar
  TempScrollInfo.cbSize := SizeOf(SCROLLINFO);
  TempScrollInfo.fMask := SIF_POS;
  GetScrollInfo(grdData.Handle, SB_HORZ, TempScrollInfo );
  //Daten neu laden...
  //..
   
  //Die horizontale Scrollposition wiederherstellen
  SetScrollInfo(grdData.Handle, SB_HORZ, TempScrollInfo, true);
  grdData.Perform(WM_HSCROLL, Info.nPos shl 16 or SB_THUMBPOSITION, 0);
[/edit]
[edit2] Das SetScrollInfo kann sogar entfallen, schadet aber auch nicht. [/edit2]

-187- 31. Jan 2011 07:38

AW: DBGrid horizontale ScrollBar Position
 
Moin. Ich weiss das Thema ist schon alt aber ich möchte es nochmal aufgreifen und fragen wofür "Info.nPos" steht? Wo wird das deklariert und als was?

DeddyH 31. Jan 2011 07:47

AW: DBGrid horizontale ScrollBar Position
 
Das war ein C&P-Fehler, es muss natürlich TempScrollInfo heißen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Seite 1 von 2  1 2      

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