Cita:
Empezado por michal
El tema es que no puedo buscar los campos en el Field Editor porque mi consulta es creada mediante código, o sea, no está en la propiedad SQL del TADOQuery, y por supuesto, al intentar extraer los campos, me da error pq todavia no existe la consulta, me explico?
|
Correcto.
Pues si la consulta la montas en ejecución, esto también lo montas en ejecución. Si funciona lo uno, también funciona lo otro.
Mantienes el procedimiento anterior para el evento y lo defines en la parte privada del form:
Código Delphi
[-]...
private
procedure ChangeMemoGetText(Sender: TField; var Text: string; DisplayText: Boolean);
...
Y luego después de asignar la SQL, creas las definiciones de campos y "enganchas" el evento.
A partir de ahí el funcionamiento es el mismo que si lo hubieras hecho en diseño.
Código Delphi
[-]...
var
fd:TFieldDef;
f:TField;
begin
if not ADOQuery1.Active then begin
ADOQuery1.SQL.Text := 'Select * from Tabla1';
ADOQuery1.FieldDefs.Update;
fd := ADOQuery1.FieldDefs.Find('memo');
if Assigned(fd) then begin
ADOQuery1.FindField('memo').OnGetText := ChangeMemoGetText;
end;
...
Activo la query...
end;