2016-03-29 9 views
-2

Gibt es eine Möglichkeit, einen ausgewählten DBGrid-Datensatz in einem Memo anzuzeigen? Ich habe diese Art von Code versucht, aber das zeigt die Titel der Spalten und ich möchte den Text der Felder anzeigen.DBGrid-Zeilen in einem Memo angezeigt

procedure TForm6.btnShowClick(Sender: TObject); 
    var 
     l: String; 
     p: Integer; 
     i: Integer; 
     m: String; 
    begin 
     m:=''; 

     for p := 0 to dbGrid1.Columns.Count - 1 do 
     m:=m+(format('%s',[dbGrid1.Columns[p].Title.Caption]))+lm; 
     Memo1.Lines.Add(m); 

     if Dbgrid1.SelectedRows.Count>0 then 
     begin 
      with dbgrid1.DataSource.DataSet do 
      begin 
      l:=' '; 
      GoToBookMark(tBookmark(dbGrid1.SelectedRows[i])); 

      for p := 0 to Dbgrid1.Columns.Count - 1 do 
      begin 
       l:=l+(format('%s',[dbgrid1.Columns[p].Field.AsString])); 
      end; 

      Memo1.Lines.Add(l) ; 
      end; 
     end;   
     end; 
    end. 

Ich versuchte, die [DBGrid1.Columns [p] .Field.AsString] zu ändern, so dass es den Text des Feldes verwendet, aber es funktioniert nicht. Hinweis: Dies ist der Vorlagencode, den ich zu verwenden hoffe.

Gibt es einen einfacheren Weg ohne Sql, um einfach einen ausgewählten Datensatz in einem Memo anzuzeigen?

+2

Entschuldigung, ich kann Ihre Frage nicht verstehen. Erstens liefert dbgrid1.Columns [p] .Field.AsString] ** ** den Wert in der Spaltenzelle, nicht den Titel, und zweitens, was hat Sql mit dem zu tun, was Sie fragen? – MartynA

+0

Ist Ihnen der Unterschied zwischen der _current row_ und _selected rows_ bekannt? Die 'SelectedRows'-Eigenschaft ruft die Liste der Zeilen ab, die als _selected_ markiert sind. Das ist nicht dasselbe wie die aktuelle Zeile, die dem aktuellen Datensatz des zugrunde liegenden Datensatzes entspricht. Ich bin mir nicht sicher, ob Sie 'SelectedRows' wirklich hier haben wollen. –

+0

Sie scheinen den 'i' -Index von' GoToBookMark (tBookmark (dbGrid1.SelectedRows [i])) nicht an einer beliebigen Stelle zu setzen. –

Antwort

-1

Verwenden Sie ein StringGrid anstelle eines Standardgitters, da sie Zeichenfolgedaten in ihrer Zellen [x, y] -Eigenschaft speichern können. Alles andere ist sehr ähnlich.

+0

Was hat diese Antwort mit der Anzeige von irgendetwas in einem TMemo zu tun? –