Announcement

Collapse
No announcement yet.

DBGrid und MultiSelect/RangeSelect

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DBGrid und MultiSelect/RangeSelect

    Ich möchte in einem DBgrid mehrere Zeilen auf einen Click selektieren
    (wie beim StringGrid oder auch im Explorer).

    Leider fehlt dem DBGrid die Option RangeSelect.
    Ich habe auch keine Möglichkeit gefunden, per Funktion eine Zeile
    der Selektion hinzuzufügen.

    Hat jemand eine Idee? Falls es ohne Ableitung nicht möglich ist,
    könnt Ihr mir den groben Weg sagen (von was muß ich ableiten, wie
    muß ich die Funktionalität hinzufügen).

    Ich würde mich über eine Lösung freuen!

    Stephan

  • #2
    Hi Stephan!

    Ich denke mit den folgenden beiden Anmerkungen siehst du gleich wie du dein Problem lösen kannst!

    (aus der Delphi Hilfe)
    Das folgende Beispiel kopiert markierte Zeilen eines DB-Gitters in ein Listenfeld.
    <pre>

    procedure TForm1.Button1Click(Sender: TObject);
    var
    i, j: integer;
    s: string;
    begin
    if DBGrid1.SelectedRows.Count>0 then
    with DBGrid1.DataSource.DataSet do
    for i:=0 to DBGrid1.SelectedRows.Count-1 do
    begin
    GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
    with DBGrid1.DataSource.DataSet do
    for j := 0 to FieldCount-1 do
    begin
    if (j>0) then s:=s+', ';
    s:=s+Fields[j].AsString;
    end;
    Listbox1.Items.Add(s);
    s:= '';
    end;
    end;

    </pre>

    Diese Eigenschaft wird aber wahrscheinlich eher deine Frage beantworten:

    <b>TDBGrid.SelectedRows.CurrentRowSelected: Boolean;</b>

    Wenn du gewisse Datensätze (oder alle) aus einem TTable oder TQuery, welche in einem
    DBGrid angezeigt werden, markieren willst, dann brauchst du nur in de Query oder im
    Table herumnavigieren und dann folgende Codezeile ausführen:

    <b>DBGrid1.SelectedRows.CurrentRowSelected := TRUE;</b>

    und somit erscheint der Datensatz als markierte im DBGrid auf! Falls du das zweimal für
    den selben Datensatz ausführst, macht das nix! Wenn du diese Eigenschaft auf FALSE setzt,
    dann wird die Markierung aufgehoben!

    mfg
    -Thoma

    Comment


    • #3
      Hallo Thomas!

      Vielen Dank, das ist in der Tat das, was ich wissen wollte.
      Ich hatte in der Delphi-Hilfe gesehen, daß DBGrid1.SelectedRows
      eine Nur-Lesen-Eigenschaft ist, und infolgedessen gar nicht daran
      geglaubt, daß eine Unter-Eigenschaft änderbar ist.

      Das wird mir eine Lehre sein!

      Gruß Stepha

      Comment

      Working...
      X