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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2005
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
Ventanas MDIChild y Normal

Hola a todos los foristas, estoy teniendo un problema y creo que es conceptual, a ver si me puedo explicar bien para que me ayuden.

Tengo un form de consulta de artículos, el cual es MDIChild. Dentro de la aplicación necesito que se llame de esta forma es decir como fsMDIChild y en otras necesito que se llama de la corma fsNormal. Para eso y viendo que esa propiedad (formstyle) no se puede cambiar en tiempo de ejecución luego de creado el form, me he construido un nuevo constructor para el susodicho form que lo que hace es cambiar dichas propiedades.

El código es el siguiente:

Código:
constructor TfrmConsArticulos.ShowSeleccion(Sender: TObject; var pCodArt: Integer);
begin
     inherited create(nil);
     FormStyle := fsNormal;
     Visible := False;
     InicializarEstructuras;  //Ejecuta una consulta en las Base de Datos
     ShowModal;                 //Muestra y espera a que se presione el Boton Seleccionado

     if CodigoSeleccionado //Devuelve el código del articulo.
     then pCodArt := vCodArticulo;
end;
Funciona de maravillas, el problema surge con el evento onFormShow. Resulta que este onFormShow se ejecuta dos veces, una cuando se hace el ShowModal y otra cuando se termina de ejecutar este constructor. ¿Cuál es el problema? Es que en el evento onFormShow especifico algunas consultas que se debe hacer cuando el form se ejecuta como MDIChild y no cuando se ejecuta como Normal. Esto hace que la base de datos se lea dos veces, etc, etc.

Espero haber sido claro al presentar el problema. ¿Alguna sigurencia?
Gracias por todo desde ya.
Responder Con Cita
  #2  
Antiguo 15-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ciertamente no puedes cambiar el estilo de fsMdiChild a fsNormal pero sí puedes hacerlo alrevés.

Deja el formulario como fsNormal en el diseño y simplemente cámbiale el estilo a fsMdiChild cuando requieras mostrarla como MDI. No necesitas un nuevo constructor.

// Saludos
Responder Con Cita
  #3  
Antiguo 15-02-2005
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
Gracias por la respuesta, es cierto, no se me habia ocurrido pensar el problema alreves. Te comento que pude solucionarlo de otro modo... simplemente cree otro constructor por el cual se setean los parametros para el fsNormal y elimine todo lo que estaba en el formshow... asi las cosas se ejecutan una sola vez.

Gracias por todo.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 10:51:03.


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