Ver Mensaje Individual
  #4  
Antiguo 21-01-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por JoysticK Ver Mensaje
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);

      // Buscar el campo
      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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita