Entwickler-Ecke

Datenbanken - alle Zeilen per Knofdruck im DBGrid markieren


bockwurst - Mo 09.05.05 12:00
Titel: alle Zeilen per Knofdruck im DBGrid markieren
Hallo,
wie kann ich alle Zeilen per Knofdruck in einem DBGrid markieren, so als wenn ich mit der Maus jede einzele Zeile markiert hätte.
Gibt es dafür einen Befehl: so in der Art "DBGrid.markAll"

Gruß Andreas


OlliWausD - Mo 09.05.05 12:17

naja, so einfach ist es nicht.

aber schau mal hier:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure tfFenster.selektierung;
var 
  myRect: TGridRect;
begin
  MyRect.Left := 0;
  myRect.Top := 0;
  myRect.Right := //Columncount/Fieldcount, je nach dem;
  myRect.Bottom := table.recordcount-1;
  stringgrid.Selection := myRect;
end;


mfg

Olli W

ps.: spontan geschrieben. Nicht getestet


Lannes - Mo 09.05.05 12:37

Hallo,

@OlliWausD
Selection gibt es doch nur beim StringGrid, oder :?

Um alle Datensätze zu markieren kann folgender Code eingesetzt werden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
with Table1 do
  begin
  First;
  while (not Eof) do
    begin
    DBGrid1.SelectedRows.CurrentRowSelected := True;
    Next;
    end;
  end;


//edit: in Options muss natürlich dgMultiSelect = TRUE sein.


bockwurst - Mo 09.05.05 13:10

Vieln Dank an euch beide,
ich werde es gleich mal testen.

Lg. Andreas


bockwurst - Mo 09.05.05 13:46

ich habe "leider eine Query (SQL-Abfrage für mein Grid)) die die Tabelle schon "gefiltert" hat. Die Daten sind auch schon auf dem Grid.

Ich würde es gerne so in dieser schreiben, eben nur für alle Datensatzen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  with DBGrid1.DataSource.DataSet do
    for i:=0 to DBGrid1.SelectedRows.Count-1 do
    begin
      GotoBookMark(pointer(DBGrid1.SelectedRows.Items[i]));
      s:=Fields[0].AsString;
      ....


bockwurst - Mo 09.05.05 14:04

ich weiß zwar nicht genau warum, aber es funkt. Ich habe einfach folgendes ausprobiert:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
with DBGrid1.DataSource.DataSet do
begin
  First;
  while (not Eof) do
  begin
    DBGrid1.SelectedRows.CurrentRowSelected := True;
    Next;
  end;
end;