Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
Problemas crear MDIchild

Antes de nadar confirmar que he estado consultado por el foro antes de colocar este post, pero no encuentro solución a lo que voy a explicar:

Tengo una aplicación con un formulario fsMDIForm, que al pulsar una opción de menu genera un formulario fsMDIChild a través del siguiente código

Código Delphi [-]
If Fchild = NIl Then 
Begin
    Application.CreateForm(TFdevol_cobros,FChild);
    FChild.FreeNotification(Self); 
    FChild.Show; 
    FChild.Free; 
 End;

Pués no me crea el formulario auxiliar, sólo lo hace si previamente a la linea Application.Create... coloco esta otra:

Fchild := TFdevol_cobros.Create(Self);

Algo también curioso es que cuando me muestra el formulario hijo, lo hace con unas dimensiones distintas a las establecidas en tiempo de diseño, algo extraño verdad?
He comprobado que el formulario principal está definido como fsMDIForm y el auxiliar como fsMDIChild.
Me podeís ayudar????,gracias.

Última edición por bbjb fecha: 07-02-2006 a las 09:35:27.
Responder Con Cita
  #2  
Antiguo 07-02-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por bbjb
Tengo una aplicación con un formulario fsMDIForm, que al pulsar una opción de menu genera un formulario fsMDIChild a través del siguiente código

Código Delphi [-]
If Fchild = NIl Then 
Begin
    Application.CreateForm(TFdevol_cobros,FChild);
    FChild.FreeNotification(Self); 
    FChild.Show; 
    FChild.Free; 
 End;
Si lo crea, pero lo destruye inmediatamente. Recuerda que si el formulario no es modal, el hilo de ejecución no se detiene en el show. Reemplaza todo tu código por:
Código Delphi [-]
If Fchild = nil Then 
begin
  Application.CreateForm(TFdevol_cobros,FChild);
end;


Cita:
Empezado por bbjb
Pués no me crea el formulario auxiliar, sólo lo hace si previamente a la linea Application.Create... coloco esta otra:

Fchild := TFdevol_cobros.Create(Self);
En este caso te queda un form porque estas creando dos instancias de la clase y liberando solo una.

Cita:
Empezado por bbjb
Algo también curioso es que cuando me muestra el formulario hijo, lo hace con unas dimensiones distintas a las establecidas en tiempo de diseño, algo extraño verdad?
No, no es extraño es así. Los MDIChild tiene un default size, que es el tamaño que ves cada vez que se crea uno, si queres que tu TForm no adopte ese tamaño y mantenga el de diseño, puedes cambiar el valor de la propiedad Position, por ejemplo ponerlo en poDefaultPosOnly para que mantenga el tamaño de diseño pero no la posición.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 07-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
Chapó para delphi.com.ar

De todas formas, si hago lo siguiente:

Cita:
If Fchild = nil Then
begin
Application.CreateForm(TFdevol_cobros,FChild);
end;
Consigo ver en pantalla el formulario, pero si añado más linea de código continuará ejecutándose.
Entonces, y si no es mucho pedir, ¿como haces tú para continuar con el programa?, no se si me explico, lo que quiero saber es como hacer la llamada al formulario para que se ejecute y mantenga en pantalla y no continue con la programación que pueda haber posterior.

Si no me explico me lo decís, gracias.

Última edición por bbjb fecha: 07-02-2006 a las 16:21:34.
Responder Con Cita
  #4  
Antiguo 07-02-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por bbjb
Chapó para delphi.com.ar
Traducción para eso por favor

Cita:
Empezado por bbjb
Consigo ver en pantalla el formulario, pero si añado más linea de código continuará ejecutándose.
Entonces, y si no es mucho pedir, ¿como haces tú para continuar con el programa?, no se si me explico, lo que quiero saber es como hacer la llamada al formulario para que se ejecute y mantenga en pantalla y no continue con la programación que pueda haber posterior.
¿No necesitaras que el formulario sea modal? (Ver método ShowModal)
Por ejemplo... ¿Qué código quieres agregar despues que se destruye el form?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 07-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
Cita:
chapó.
1. interj. U. para expresar admiración por algo o por alguien.
Seguro que me he equivocado en el planteamiento del programa. Quería tener un programa recogido donde en un formulario principal (MDIForm) se mostrase el menú y poder seleccionar las distintas opciones disponibles.

Estas opciones se abrirían dentro del formulario principal a través de form.auxiliares (MDIChild) y serían pantallas con filtros donde permitirían al usuario sacar listados.
Dicho esto, lo que quiero es sacar una pantalla interactiva con el usuario y que cuando este decida salir de ella, obtener los datos introducidos por este.

Por lo que veo, mi idea estaba muy mal planteada
Responder Con Cita
  #6  
Antiguo 07-02-2006
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
¿Muy mal planteada? Pues no estaría tan seguro. Quizá (digo quizá porque no entiendo del todo lo que deseas) tu problema está sólo en querer destruir el formulario tan sólo lo muestras. Si lo que te preocupas es cúando lo destruyes pues tienes varias opciones. Una es crear el formulario tal como te dice Federico y omitir la llamada a Free. Al crearlo de esa forma, el objeto Application será el dueño del formulario y por tanto se encargará de destruirlo cuando él mismo se destruya- cuando termine la aplicación. También puedes manipular el evento OnClose del formulario y poner Action := caFree con lo que el formulario se destruirá tan pronto se cierre.

// Saludos

Última edición por roman fecha: 07-02-2006 a las 18:23:53.
Responder Con Cita
  #7  
Antiguo 07-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
Cita:
¿Muy mal planteada? Pues no estaría tan seguro.....
Exacto, eso es lo he probado a hacer nada más mandar el correo y creo que es el camino que debo coger para continuar con la aplicación. He aclarado las ideas (gran parte de culpa la tienen ustedes) y he visto la salida al "problema"

Gracias por vuestra ayuda.

Última edición por bbjb fecha: 07-02-2006 a las 23:56:25.
Responder Con Cita
  #8  
Antiguo 07-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
Perdonad de nuevo, pero cuendo creía tenerlo resuelto me surge un problema y seguro que es una chorrada pero llevo un buen rato con el y no consigo solucionarlo.

Estoy definiendo el form.principal como MDIForm, el auxiliar como MDIChild y cuando ejecuto el siguiente código no muestra el form.auxiliar:

Código Delphi [-]
 If Fchild = nil Then
 begin
    Application.CreateForm(TFdevol_cobros,FChild);
 end;

Donde estoy cometiendo el error, puede tratarse de una propiedad que estoy olvidando???
Gracias por la ayuda.
Responder Con Cita
  #9  
Antiguo 08-02-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Mmmm....
Seguro que TFdevol_cobros es MDIChild???..
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 08-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
Cita:
Mmmm....
Seguro que TFdevol_cobros es MDIChild???..
Tan seguro como que el futbolista de tu avatar es Maradona
Responder Con Cita
  #11  
Antiguo 08-02-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por bbjb
Tan seguro como que el futbolista de tu avatar es Maradona
Yo creí que se trataba de Eber Ludueña
Algo tiene que estar mal, si tiene sun MDI en cuanto creas un MDIChild (que su propiedad Visible obligatoriamente tiene que ser True), este se tiene que mostrar dentro del MDI!
¿Puedes subirnos algo de código?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #12  
Antiguo 08-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
Cita:
Yo creí que se trataba de Eber Ludueña
Jejeje , por un momento he llegado a dudar, hasta que he visito la página del personaje en cuestión, todo un fenómeno.

He simplificado el máximo el código, y por supuesto comprobado que el formulario principal sea MDIForm y el auxiliar MDIChild. El valor de la propiedad Visible en el auxiliar es True, y ¿existe alguna otra propiedad que deba tener en cuenta?
Os muestro el código de llamada al formulario auxiliar, por si estuviera utilizando algo mal.

Código Delphi [-]
Procedure TFmenu.pide_datos;
Var Faux :TForm;
Begin
        Application.CreateForm(TForm1,Faux); 
End;

El formulario auxiliar que crea es una chorradilla donde he puesto a modo de comprobación en el evento OnCreate que muestre un mensaje en pantalla.
Pués el mensaje lo muestra pero es lo único que hace porque no aparece el formulario en si.
Para volverse loco!!!!

Última edición por bbjb fecha: 08-02-2006 a las 18:39:32.
Responder Con Cita
  #13  
Antiguo 09-02-2006
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 24
bbjb Va por buen camino
He encontrado el problema .
Resulta que el formulario principal contiene un Tpanel con la propiedad "Align=AlCliente" que impide mostrar cualquier Formulario Auxiliar
Este Tpanel lo utilizaba para mostrar en él una imagen que debía aumentar o disminuir de tamaño conforme lo hiciese el formulario.

¿Alguna vez os habeís encontrado un caso similar???
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Problemas al crear un usuario en Firebird Jesús Pena Firebird e Interbase 2 21-11-2005 10:13:57
Problemas al crear la lista con IdFtp VolaRe Internet 5 16-08-2004 12:49:02
problemas al crear fichero?? vichovi Varios 2 17-10-2003 19:34:05
Problemas al crear un componente TWebBrowser cone220 Internet 4 04-10-2003 00:41:55
problemas para crear archivo texto Manuel Firebird e Interbase 3 12-05-2003 21:08:08


La franja horaria es GMT +2. Ahora son las 20:42:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi