Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2018
juniorSoft juniorSoft is offline
Miembro
 
Registrado: abr 2005
Posts: 178
Poder: 20
juniorSoft Va por buen camino
Cómo modificar las propiedades de una clase en Runtime antes de ser instanciada

Hola nuevamente amigos,

Les planteo lo que deseo realizar:

Tengo un método para realizar tareas de modificación de reportes (fastReport) que están en distintos contenedores ya sean formularios o módulos de datos, dichos contenedores son creados en ejecución y la intensión es que estos contenedores solo estén creados no que sean visibles, lo único visible sera el diseñador de fastReport para modificar el reporte en ejecución.

les muestro aquí el código realizado

Código Delphi [-]
procedure TMDConfigReportes.ModificarReporte(ClassCReport: TComponentClass;
  NombreReporte: string);
var
  Rep:TFrxReport;
  RutaRep:string;
begin
  with ClassCReport.Create(Self) do
    begin
      try
         Rep:=TFrxReport(FindComponent(NombreReporte));

         RutaRep:=ExtractFilePath(GetModuleName(HInstance))+Rep.EngineOptions.TempDir;
         if FileExists(RutaRep) then
           Rep.LoadFromFile(RutaRep)
         else
           raise Exception.Create('No se encontro el reporte en el directorio '+RutaRep);
          Rep.DesignReport(True);
      finally
         Free;
      end;
    end;
end;


En el caso de los Módulos de datos no hay inconvenientes ya que no son visibles, pero los formularios se visualizan una vez creados.

una solución seria asignar la propiedad visible de los formularios a false y luego en el método show del formulario ponerlo a true, pero esto me trae otras consecuencias para algunos detalles de visualización, ademas tendría que modificar la clase base para que todos los formularios que hereden realicen el mismo comportamiento.

y la idea que tengo es, aunque no se implementarla sospecho que con RTTI puedo hacer algo como sigue para asignar la propiedad visible de la clase de formulario a false solo para acceder a los componentes de reportes, pero me falta el detalle mas importante

Código Delphi [-]
if ClassCReport.InheritsFrom(TForm) then
  begin
      //cambiar la propiedad visible a la clase del formulario
  end; 
  ....

//luego se crearía el objeto del formulario o modulo de datos para acceder a los reportes y evitaría el efecto de que se muestre si es un formulario aunque sea por segundos, porque ya con la instancia si puedo acceder a la propiedad visible pero el efecto anterior no es el deseado.


Saludos,

Última edición por Casimiro Notevi fecha: 28-10-2018 a las 14:28:25.
Responder Con Cita
 



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
habilitar una clase antes de su uso en un componente José Luis Garcí OOP 3 09-12-2013 12:55:48
Acceder modificar propiedades publicas de una clase desde otra unidad nsd OOP 1 08-08-2013 04:20:48
Crear una clase y asignar objetos como propiedades leanfreue OOP 4 13-04-2007 00:08:33
Entrar a Propiedades Tchar en runtime ? Pascual Montes Gráficos 0 06-12-2004 19:05:10
Como puedo Modificar los valores de las propiedades de un ejecutable DML Varios 4 07-05-2003 21:39:03


La franja horaria es GMT +2. Ahora son las 12:48:01.


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