Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-02-2007
loxod loxod is offline
Miembro
 
Registrado: feb 2007
Ubicación: Mexico
Posts: 45
Poder: 0
loxod Va por buen camino
crear un campo lookup de forma dinamica y mostrarlo en un dbgrid

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

Última edición por roman fecha: 24-02-2007 a las 04:05:33. Razón: Agregar etiqueta [delphi] para mejor legibilidad
Responder Con Cita
  #2  
Antiguo 23-02-2007
Avatar de LordRF
LordRF LordRF is offline
Miembro
 
Registrado: feb 2007
Posts: 71
Poder: 18
LordRF Va por buen camino
Hola,

no se si sera el error pero despues de abrir la table liberas el Create F. y asi lo mandas a nirvana.
Responder Con Cita
  #3  
Antiguo 24-02-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Creo que el error esta en esta linea:

if table1.FindField(fName) <> nil then Exit;

o sea, si lo encuentra, quiere decir que es diferente de nil, entonces se sale del procedimiento

if table1.FindField(fName) = nil then Exit;

un signo de igual arregla el problema
Responder Con Cita
  #4  
Antiguo 24-02-2007
loxod loxod is offline
Miembro
 
Registrado: feb 2007
Ubicación: Mexico
Posts: 45
Poder: 0
loxod Va por buen camino
Lo que pasa es que en la linea

if table1.FindField(fName) <> nil then Exit;

pregunto si existe el campo, si no continua para su creacion
Responder Con Cita
  #5  
Antiguo 24-02-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
coincido en que tambien liberas el campo antes de añadirlo al grid... al destruir la tabla te debe destruir los campos

Última edición por luisgutierrezb fecha: 24-02-2007 a las 18:43:36.
Responder Con Cita
  #6  
Antiguo 28-02-2007
loxod loxod is offline
Miembro
 
Registrado: feb 2007
Ubicación: Mexico
Posts: 45
Poder: 0
loxod Va por buen camino
Volvi a liberar el campo y esta ves si funciono bien.

Gracias a todos por su ayuda.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
DBGRID con campo Lookup nancy OOP 0 25-01-2007 16:39:36
crear componentes de forma dinamica gustavoh .NET 2 24-08-2006 16:31:08
Crear variables de forma dinamica papulo PHP 3 24-11-2005 17:39:20
Crear BD de forma dinamica en Access Coco_jac Varios 2 02-06-2005 19:47:00
Crear Forms en forma DINAMICA Phacko Varios 4 11-09-2004 00:02:18


La franja horaria es GMT +2. Ahora son las 23:26:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi