Aktuelle Zeile im DBGrid rausfinden

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pjensen
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

Aktuelle Zeile im DBGrid rausfinden

Beitrag von pjensen »

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

monta
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

Beitrag von monta »

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
Johannes

pjensen
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

Beitrag von pjensen »

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.


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;
// ..............

Antworten