Autor Beitrag
saxe66
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Mi 04.04.12 11:28 
Habe ein Problem mit dem Scrollen,

ich würde gern in einem DBGrid die Tabelle scrollen (auch mit der Maus), jedoch soll der Datenbankzeiger auf dem zuletzt gewählten Datensatz stehen bleiben.
Gibt es da eine Eigenschaft, die man setzen muss oder ist Handprogrammierung erforderlich ???

Danke im Voraus
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mi 04.04.12 12:45 
Geht so weit ich weiss, nicht.
Das Grid ist per Datasource mit dem Dataset verbunden ?
Damit übernimmt der Adapter das steuern des Cursors in der Datenmenge.

Ich löse so etwas mit Clientdataset's (1) oder zusätzlichen Edit-feldern (2),
ist immer abhängig vom Anwendungsfall.

(1)
(eine Variante:
Query liest aus DB, die gelesenen Daten werden in ein Clientdataset geschaufelt,
das Clientdataset wird zur Anzeige genutzt. Die Änderungen werden dann
vom Clientdataset wieder in den Query übertragen, der dann letztlich wieder in die DB zurückschreibt).
Clientdatasets kann man auch Clonen, dadurch erhält man einen weiteren Cursor
auf die jeweilige Datenmenge.

(2)
im Editfeld wird sich der eindeutige Key eines Datensatzes gemerkt.
Dies geschieht nur durch eine extra-aktion, nicht durch das scrollen/bewegen in der Datenmenge.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 04.04.12 12:54 
Wenn Du per Ado arbeitest kann Du die Connection abhängen (Disconnected DataSet), ansonsten wie beschreiben eine Clone in ein Clientdataset erstellen.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mi 04.04.12 13:06 
Mann sollte aber schon den Unterschied zwischen duplizieren und Clonen beachten ;)

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 04.04.12 13:22 
@zuma
ja, sorry ... Asche auf mein Haupt ...

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Mi 04.04.12 15:29 
Ein Problem bei Deinem Fall ist auch: Was ist der zuletzt gewählte Datensatz? Wenn Du scrollst, veränderst Du den Zeiger. Das ist klar. Aber welchen Datensatz willst Du als letzt gewählten definieren, den, der vor dem Scrollen angezeigt wird, oder einen genau definierten, den Du selber auswählst. Dann könntest Du ja mit einer Taste (z.B. CTRL M für Markierung des letzten Datensatzes den Datensatz in einer Variablen oder in einem SpinEditfeld speichern, so dass Du diesen Datensatz dann wieder auswählen kannst. Am besten nimmst Du zur Speicherung den Primärschlüssel der Tabelle. Das sollte eine Ganzzahlvariable sein. Mit z.B. CTRL-G kannst Du dann diesen Datensatz wieder anwählen. Alles in der Keydown-Prozedur des DBGrid.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.