Cita:
Empezado por JoysticK
Gracias Neftali por responder, aunque la verdad no he comprendido mucho, te doy mas datos...
|
Ok. Fallo mío. Al ver el código y los nombres, pensé que estabas utilizando algun sistema de Lógica de negcio, Persistencia o similar.... Nada, ni caso a lo que te he dicho.
Código Delphi
[-]
Cadena := 'Logica.TClientesEmpresa.AsString';
En tu caso tal vez sea más sencillo.
Puedes buscar los formularios de la aplicación haciendo un recorrido por la variables
Screen:
Código Delphi
[-]
for i := 0 to (Screen.FormCount - 1) do begin
if (Screen.CustomForms[i] is TForm) then begin
DM := TForm(Screen.Forms[i]);
MessageDlg('Encontrado el formulario: ' + DM.Name, mtInformation, [mbOK], 0);
Creo que con eso no puedes llegar a un TDataModule, que basta con que lo cambies por un TForm.
Una vez que accedas al formulario, puedes hacer algo similar para acceder a los componentes (entre ellos los campos), utilizando:
Código Delphi
[-]
for i := 0 to (Screen.FormCount - 1) do begin
if (Screen.CustomForms[i] is TForm) then begin
DM := TForm(Screen.Forms[i]);
MessageDlg('Encontrado el formulario: ' + DM.Name, mtInformation, [mbOK], 0);
comp := DM.FindComponent('TClienteEmpresa');
if Assigned(comp) then begin
MessageDlg('Sí encontrado el campo en el formulario: ' + DM.Name, mtInformation, [mbOK], 0);
end
else begin
MessageDlg('No encontrado el campo en el formulario: ' + DM.Name, mtInformation, [mbOK], 0);
end;
end;
end;
Con esto, teniendo "Logica.TClienteEmpresa", suponiendo que Logica sea un formulario (no un datamodule), podrías acceder al TField Empresa.
Para acceder cómo "AsString", sólo se me ocurre que hagas un CASE con las varias posibilidades segun el tipo de campo.
Espero haberme explicado bien.