AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TDBGrid - Datensatz springt bei Refresh / Vertik. Pos ändern
Thema durchsuchen
Ansicht
Themen-Optionen

TDBGrid - Datensatz springt bei Refresh / Vertik. Pos ändern

Ein Thema von DocE · begonnen am 9. Jul 2008 · letzter Beitrag vom 9. Jul 2008
 
DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#1

TDBGrid - Datensatz springt bei Refresh / Vertik. Pos ändern

  Alt 9. Jul 2008, 21:24
Hallo zusammen!

Komme mit dem Problem nicht so richtig weiter, vielleicht wisst ihr Rat...

Wenn ich auf eine mit einem TDBGrid verknüpfte Datenmenge ein Refresh/Requery ausführe bin ich wieder am Anfang der Datenmenge, das ist soweit klar. Also muss man vorher ein Bookmark setzen oder nachher über die ID den aktuellen Datensatz wieder locaten. Soweit so gut. Das Problem ist jetzt, das die (vertikale) Position des Datensatzes im Grid nicht mit der vorherigen übereinstimmt. Bei Bookmark wird über Resync([rmCenter]) der Datensatz in der Mitte des Grids positioniert, bei Locate landet er logischerweise ganz unten.

Wie kann ich die vorherige Position wiederherstellen? Also so, dass der Datensatz im Grid nicht "springt". Das ist irritierend und man vertut sich leicht.

Habe schon daran gedacht mit SendMessage(DBGrid.Handle, WM_VSCROLL, SB_LINEDOWN, 0); solange zu scrollen bis man wieder an der Stelle ist, danach relocaten oder mit WM_KEYDOWN - VK_UP wieder hoch zum Datensatz... (Ich weiß, ziemlich bescheidener Workaround, aber was will man machen?!) Aber selbst dazu müßte man irgendeinen Referenzwert haben. z.B. Welcher ist der erste sichtbare Datensatz im Grid, da würde die RecordNo der DataSet reichen. Aber wie bekommt man die raus?

Die Info welche Pos die Scrollbar hat (GetScrollInfo) reicht hier nicht aus, da sich diese wiederum nur auf die Record-No bezieht, aber nichts über die tatsächliche vertikale Position des DS im Grid aussagt.. Ein SetScrollInfo versagt sowieso vollständig, deshalb obiger Workaround.

Vielleicht hat jemand noch eine Lösung oder eine bessere Idee.

Bereits jetzt vielen Dank!

Grüße
Doc
  Mit Zitat antworten Zitat
 


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 07:21 Uhr.
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