dbGrid columns.fieldname

Rund um die LCL und andere Komponenten
Antworten
MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

dbGrid columns.fieldname

Beitrag von MBickel »

Hallo,

sehe ich das richtig, das man bei Lazarus die
Eigenschaft fieldname irgenwo vergessen hat? Im OI geht es ja, aber wenn ich zur Laufzeit so was wie

dbgrid.Columns.Insert(0); ;
dbgrid.Columns[0].fieldname:=mytable.Fields[0].FieldName;

mache, dann erhalte ich

Error: identifier idents no member "fieldname"

Oder übersehe ich da was?
Gerade bei einem DB-Grid ist Fieldname ja doch nicht ganz unwichtig :)

Viele Grüße
Michael

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: dbGrid columns.fieldname

Beitrag von monta »

über das darunter liegende Dataset kommst du an die Spaltennamen:

Code: Alles auswählen

DBGrid.Dataset.FieldDefs.Items[i].Name
Johannes

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: dbGrid columns.fieldname

Beitrag von MBickel »

monta hat geschrieben:über das darunter liegende Dataset kommst du an die Spaltennamen:

Code: Alles auswählen

DBGrid.Dataset.FieldDefs.Items[i].Name
Danke!!

Problem ist nur, dass ich der Spalte ein Feld zuweisen möchte, den Feldnamen habe ich ja.
Was ich möchte ist ein Grid zur Laufzeit zusammenzubauen.
Also Spalten zuweisen, Spaltenbreite, DB-Feld etc.

dbgrid.Columns.Insert(i); ;
dbgrid.columns.fieldname:=table.Fields.FieldName;
dbgrid.Columns.title.Caption:=table.Fields.FieldName;
dbgrid.Columns.width:=100;

hapern tut es hier dran:
dbgrid.columns.fieldname

dieses fieldname existiert unter Delphi, scheinbar aber nicht unter Lazarus

Viele Grüße
Michael

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: dbGrid columns.fieldname

Beitrag von monta »

so sollte es gehen:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    Colum: TColumn;
begin
      i := 2;
 
      //Colum := TColumn(DBGrid.Columns.Add);
      //Colum.Title.Caption := 'Test';
      //Colum.FieldName := 'test';
 
      Colum :=  TColumn(DBGrid.Columns.Insert(i));
      Colum.FieldName := 'test2';
      Colum.Title.Caption := 'Test2';
end;
Johannes

MBickel
Beiträge: 16
Registriert: Fr 2. Okt 2009, 10:11
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hessen

Re: dbGrid columns.fieldname

Beitrag von MBickel »

monta hat geschrieben:so sollte es gehen:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    Colum: TColumn;
begin
      i := 2;
 
      //Colum := TColumn(DBGrid.Columns.Add);
      //Colum.Title.Caption := 'Test';
      //Colum.FieldName := 'test';
 
      Colum :=  TColumn(DBGrid.Columns.Insert(i));
      Colum.FieldName := 'test2';
      Colum.Title.Caption := 'Test2';
end;
Super! das hat einwandfrei geklappt, auch der CSV/TXT-Import/Vorschau klappt einwandfrei. Nur SDF selber macht mir noch Probleme - trotz des Namens SDFDataset.... :)

Viele Grüße
und nochmal Danke
Michael

Antworten