hallo leute,
ich lass mir eine zeile aus einer
access tabelle in einer stinggrid ausgeben
Delphi-Quellcode:
procedure TForm1.getDBRow;
var
a, column: Integer; //a ist counter
begin
StringGrid1.EditorMode := true;
getDBRowValue('BW', m_idNorm, m_idNAD);
//ADODataSet1.Open;
//Zeilenanzahl entspricht gleich der Spaltenanzahl im Grid
StringGrid1.RowCount:=ADODataSet1.FieldCount+1;
//Spaltenanzahl entspricht der Anzahl der Einträge (datasets, zeilen) im Grid
StringGrid1.ColCount:=ADODataSet1.RecordCount+1;
//Spaltennamen in die erste Zelle der Zeilen schreiben
for a:=0 to ADODataSet1.FieldCount-1 do
StringGrid1.Cells[0,a+1]:=ADODataSet1.Fields[a].FieldName; //Cells[spalte/zeile]
//laden...
ADODataSet1.First;
column:=1;
while not ADODataSet1.Eof do
begin
for a:=0 to ADODataSet1.FieldCount-1 do
StringGrid1.Cells[column,a+1]:=ADODataSet1.Fields[a].DisplayText;
ADODataSet1.Next;
Inc(column);
end;
end;
mit der folgenden methode färbe ich die zelle, in die gesprungen wird, rot an.
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState);
var outRect : TRect;
// Die Ausmaße der Zelle
Text :
String;
// Der Inhalt der Zelle
begin
Text := StringGrid1.Cells[ACol, ARow];
// Holt sich den Text
outRect:=Rect;
// Holt sich die Größe der Zelle
if (gdselected
in state)
then
StringGrid1.canvas.brush.color := clRed;
StringGrid1.Canvas.Fillrect(Rect);
// markieren der Zelle
DrawText(StringGrid1.Canvas.Handle,PChar(Text),length(Text),outRect,DT_Left
//=Linksbündig, DT_Center=Zentiert, DT_Right=Rechtsbündig
or DT_WordBreak);
//=Umbruch, DT_SingleLine=ohne Umbruch
end;
nun möchte ich die Inhalte der Zellen verändern und diese direkt
in die
access datenbank speichern. goEditing ist auf true gesetzt. Ich glaube ich brauche eine funktion der überprüft
in welchem feld der
access tabelle ich mich genau befinde wenn ich eine bestimmte zelle im sgrid anklicke.
Weis nicht wie ich das anstellen soll :gruebel: Kann mir jemand helfen ??