Quiero crear un campo lookup de forma dinamica y mostrar este nuevo campo en un dbgrid.
Tengo el siguiente procedimiento
**************************************************************************************************** *****************************
Código Delphi
[-]
Procedure TForm.AddCalcStringField(Table1, Table2: tDataset; fName,fDisplay:String;
Size:Integer; Keyfield1, Result : String);
var
f : TField;
i : integer;
begin
table1.Close;
for i := 0 to table1.FieldDefs.Count - 1 do
if table1.FindField(table1.FieldDefs[i].Name) = nil then
table1.FieldDefs.Items[i].CreateField(table1);
if table1.FindField(fName) <> nil then Exit;
f := TStringField.Create(Table1);
f.DisplayLabel := fDisplay;
f.DisplayWidth := Size;
f.fieldKind := fkLookup;
f.FieldName := fName;
f.Index := Table1.FieldCount;
f.Keyfields:= Keyfield1;
f.lookupDataSet:=table2;
f.LookupKeyfields := Keyfield1;
f.LookupResultField:= Result;
f.Name := Table1.Name+fName;
f.Size := Size;
f.Visible := True;
f.DataSet := Table1;
Table1.Open;
f.Free;
dbgrid.Columns.Add;
dbgrid.Columns[Table1.FieldCount].FieldName := fName;
dbgrid.Columns[Table1.FieldCount].Title.Caption :=fDisplay;
dbgrid.Columns[Table1.FieldCount].Title.Alignment := taCenter;
dbgrid.Columns[Table1.FieldCount].Title.Font.Style := [fsbold];
dbgrid.Columns[Table1.FieldCount].Width := 100;
end;
**************************************************************************************************** *****************************
Cuando yo ejecuto la aplicacion el campo lookup no se muestra en el dbgrid.
Alguna idea de que es lo que esta mal.
Table1 y Table2 son generados en runtime
De antemano les agradesco su ayuda