En Mi proyecto construyo tablas,querys y campos de forma dinamica en tiempo real algo como
if xpTipoDato ='INTEGER' then begin // CampoMain :=TIntegerField(FindComponent(forma+Tabla+Campo)); nCampoI:=TIntegerField(FindComponent(forma+Tabla+Campo)); if ncampoI = nil then begin nCampoI := TIntegerField.Create(Itabla); nCampoI.Name :=forma+Tabla+Campo; end; with ncampoi do begin nCampoI.FieldName :=Campo; nCampoI.EditMask :=xpMascara; nCampoI.required :=xpbRequerido; nCampoI.ReadOnly :=xpbReadOnly; nCampoI.OnValidate :=xFormaValidate; nCampoI.DefaultExpression :=xpValorDefault; nCampoI.OnChange :=xFormaChange; nCampoI.ConstraintErrorMessage :=xpMensajeErrorValidacion; nCampoI.CustomConstraint :=xpValidacion; nCampoI.MinValue :=xpiValorMinimo; nCampoI.MaxValue :=xpiValorMaximo; ncampoi.DataSet :=Itabla; if xpbActualizaObjetos = true then begin nCampoI.OnChange:=xFormaChangeCampoAV; xpbActualizaOBjetos:=False; end; end; end
y en otro procedimiento trato de cambiarle las propiedades ya asignadas utilizando el procedimiento FindComponent algo como
if xpTipoDato ='INTEGER' then begin nCampoI:=TIntegerField(FindComponent(forma+Tabla+Campo)); if ncampoI = nil then begin ... end; end
Sin embargo el problema es que nCampoI:=TIntegerField(FindComponent(forma+Tabla+Campo)); me trae nil lo cual es falso ya que el campo si exisite, incluso si despues de que no lo encuentra lo trato de crear me manda un error diciendo que ya existe el componente.
alguna sugerencia??
es correcto usar el Findcomponent para encotrar un campo de una tabla??
Gracias
Saludos.