Hallo,
ein DBGrid hat z.B. 15 Zeilen.
Wie finde ich heraus, in welcher Zeile der Cursor gerade ist?
(Das dgRowSelect True ist, ist wahrscheinlich egal?)
MfG, Peter
Aktuelle Zeile im DBGrid rausfinden
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Aktuelle Zeile im DBGrid rausfinden
Es häng doch ein Dataset hinten dran. Über das kannst du einfach über die Eigenschaft RecNo gehen, welche den gerade aktiven Datensatz ausgibt.
bspw. SQLQuery1.RecNo
bspw. SQLQuery1.RecNo
Johannes
-
- Beiträge: 77
- Registriert: Fr 27. Jul 2007, 08:43
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Nahe Flensburg
Re: Aktuelle Zeile im DBGrid rausfinden
Es geht um eine DBase-Datei mit z.B. 1000 Einträgen.
Ein DBGrid zweigt z.B. 15 Zeilen davon an. Z.B. Zeile 501..515.
Die aktive Zeile im DBGrid ist z.B: Zeile 5, also RecNo 505.
Dann wird zum Drucken nach einer anderen Spalte sortiert (anderer Index).
Anschliessen soll im DBGrid wieder der alte Zustand hergestellt werden.
Es wird also wieder nach dem vorherigen Sortier-Index sortiert.
Es wird auch per RecNo der alt RecNo wieder angezeigt.
Allerdings steht dieser jetzt in einer anderen Zeile im DBGrid als vor dem Drucken.
Es werden somit auch teiltweise andere Einträge im DBGrid angezeigt.
Unten im Code:
For k:=.....
Das geht schon mal ganz gut, auch wenn es bestimmt bessere Lösungen gibt.
Jetzt wüßte ich gerne, wie groß k sein muss.
Dazu muss ich wissen, welche Zeile im DBGrid vorher aktiv war.
Z.B. Bei 15 Zeilen im DBGrid, vorher war Zeile 5 aktiv: k:=15-5
Vielleicht wäre es sinnvoller, zum Ausrucken eine zweite TDBf zu nehmen.
Es nervt mich aber, dass ich nicht rausfinden kann, welche Zeile des DBGrid gerade aktiv ist.
Ein DBGrid zweigt z.B. 15 Zeilen davon an. Z.B. Zeile 501..515.
Die aktive Zeile im DBGrid ist z.B: Zeile 5, also RecNo 505.
Dann wird zum Drucken nach einer anderen Spalte sortiert (anderer Index).
Anschliessen soll im DBGrid wieder der alte Zustand hergestellt werden.
Es wird also wieder nach dem vorherigen Sortier-Index sortiert.
Es wird auch per RecNo der alt RecNo wieder angezeigt.
Allerdings steht dieser jetzt in einer anderen Zeile im DBGrid als vor dem Drucken.
Es werden somit auch teiltweise andere Einträge im DBGrid angezeigt.
Unten im Code:
For k:=.....
Das geht schon mal ganz gut, auch wenn es bestimmt bessere Lösungen gibt.
Jetzt wüßte ich gerne, wie groß k sein muss.
Dazu muss ich wissen, welche Zeile im DBGrid vorher aktiv war.
Z.B. Bei 15 Zeilen im DBGrid, vorher war Zeile 5 aktiv: k:=15-5
Vielleicht wäre es sinnvoller, zum Ausrucken eine zweite TDBf zu nehmen.
Es nervt mich aber, dass ich nicht rausfinden kann, welche Zeile des DBGrid gerade aktiv ist.
Code: Alles auswählen
//........
If PrintDialog1.Execute then
begin
IndexMerker:=DB_LTax.Indexname;
RecNoMerker:=DB_LTax.RecNo;
DB_LTax.Indexname:='KONTO';
DB_LTax.RegenerateIndexes;
// .............. blah, fasel, drucke was
DB_LTax.Indexname:=IndexMerker;
DB_LTax.RegenerateIndexes;
DB_LTax.RecNo:=RecNoMerker;
for k:= 1 to 7 do
begin
DB_LTax.Next;
end;
for k:= 1 to 7 do
begin
DB_LTax.Prior;
end;
// ..............