Ir al contenido


Foto

Lazarus Mostrar un formulario en posicion especifica


  • Por favor identifícate para responder
10 respuestas en este tema

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 14 septiembre 2012 - 08:21

Compañebrios:

Algo estoy haciendo mal y no lo veo......

Mi formulario de entrada es frmInicio, dentro de el tengo un boton que llama a un segundo formulario llamado frmEntradas el cual quiero crear en una posicion especifica dentro o en el area de  frmInicio



delphi
  1. procedure TfrmInicio.btnEntraNuevaClick(Sender: TObject);
  2. begin
  3.   with TfrmEntradas.Create(Application) do
  4.     Parent := frmInicio;
  5.     try
  6.       Top := frmInicio.Top + 150;
  7.       ShowModal ;
  8.     finally
  9.       free;
  10.     end;
  11. end;




al ejecutar me aparece este mensaje

[Content]
TCustomForm.ShowModal for frmInicio:TfrmInicio impossible, because already visible (hint for designer forms: set Visible property to false).

Press OK to ignore and risk data corruption.
Press Cancel to kill the program.



El detalle aqui es que el frmInicio intenta desplazarse hacia abajo y aparece el mensaje anterior.


Algo esta mal. Y no son las "cheves" de festejo que llevo ¿me ayudan?



Felices fiestas!!!!  (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b)
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 septiembre 2012 - 05:22



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   with TForm2.Create(Application) do
  4.       try
  5.         Top := Form1.Top;
  6.         ShowModal ;
  7.       finally
  8.         free;
  9.       end;
  10. end;



Form2 como disponible (No autocreado)
No se le asigna Parent a una ventana modal.

Saludos.
  • 0

#3 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 15 septiembre 2012 - 10:04

gracias escafandra, ya habia probado ese codigo y el resultado no es el esperado, por eso habia probado tratando de asignar el parent.  De hecho me crea el segundo formulario en la posicion por default de la esquina superior izquierda del monitor. En alguna pagina lei que en vez de asignar el Primer Form deberia de asignar algun control dentro del mismo lo he intentado y tampoco funciona.



delphi
  1. procedure TfrmInicio.btnEntraNuevaClick(Sender: TObject);
  2. begin
  3.   with TfrmEntradas.Create(Application) do
  4.     try
  5.       Top := PageControl1.Top  + 50;
  6.       ShowModal ;
  7.     finally
  8.       free;
  9.     end;
  10. end;



Algo falta, no se si es mi codigo o es Lazarus 1.1 (CodeTyphon 2.80)

Se siguen aceptando sugerencias.


Gracias por el tiempo.
  • 0

#4 pcicom

pcicom

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 267 mensajes
  • LocationMéxico

Escrito 15 septiembre 2012 - 10:12



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. Var xForm : TfrmEntradas;
  3. begin
  4.  
  5.   try   
  6.       xForm := TfrmEntradas.Create(Application)
  7.       xForm.Top :=  frmInicioTop; + 150;
  8.       xForm.ShowModal ;
  9.   finally
  10.       xForm.free;
  11.   end;
  12.  
  13. end;



  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 septiembre 2012 - 10:16

...ya habia probado ese codigo y el resultado no es el esperado...


Pues entonces no se cual es el resultado que tu esperas. Ese código coloca el Top del segundo formulario justo donde yo espero.

Ahora lo que no entiendo es lo que has añadido:


delphi
  1. Top := PageControl1.Top  + 50;



¿Que pretendes conseguir exactamente?


Saludos.
  • 0

#6 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 15 septiembre 2012 - 10:35

El resultado esperado es ese exactamente: Colocar el top del segundo formulario donde yo quiero; pero no, el formulario se crea en la posicion por default (esquina superior izquierda)

El codigo mas nuevo que postee es :

En alguna pagina lei que en vez de asignar el Primer Form deberia de asignar algun control dentro del mismo lo he intentado y tampoco funciona.


La plataforma de desarrollo Lazarus32 (Lazarus 1.1) (CodeThypon 2.80) sobre Windows7 64 bits

p.d. pcicom pruebo tu sugerencia y comento.

Gracias
  • 0

#7 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 septiembre 2012 - 10:44

Pues te subo el ejemplo que hice con proyecto y binario en la versión 0.9.30.4

Saludos.
  • 0

#8 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 15 septiembre 2012 - 11:22

:sad:  El binario funciona bien, el source tambien  :embarrassed:

Modifique posiciones en el source y le añadi la posicion de Left y todo funciona ok.

El mio no funciona!  (li)  :

pcicom tu sugerencia me da el mismo resultado, se crea el segundo form en la posicion esquina superior izquierda.


  • 0

#9 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 15 septiembre 2012 - 11:43

no será un bug de la versión amigo fgarcia?

qué versión usas?
  • 0

#10 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 15 septiembre 2012 - 11:54

Amigo Poli:

La plataforma de desarrollo Lazarus32 (Lazarus 1.1) (CodeThypon 2.80) sobre Windows7 64 bits



Por otra parte revisando el codigo de escafandra y el inspector de objetos observe que el dejo la propiedad Position en poDesigned mientras que yo habia dejado el frmInicio en poScreenCenter y el frmEntradas en poDesigned, cambie la propiedad a designed en los dos forms y ¡¡Funciono!! Si señores solo ese cambio hice y funciono perfectamente, probe varios top, añadi left y funciono.

Como no me quise quedar con dudas volvi a cambiar Position a poScreenCenter en frmInicio y volvi a probar, hasta este momento esta funcionando.

Continuare viendo que sucede antes de decir que es un bug.

Saludos y felices fiestas!
  • 0

#11 mightydragon_lord

mightydragon_lord

    Advanced Member

  • Miembros
  • PipPipPip
  • 73 mensajes

Escrito 15 septiembre 2012 - 06:09

No es un bug, es un error frecuente de programación, lo que debes hacer es abrir el archivo lpr del proyecto, y eliminar la línea donde está creando el formulario, es decir, el error ocurre tratando de crear un formulario ya creado, y si no recuerdo mal, la propiedad visible en el editor de propiedades del formulario que vas a crear en tiempo de ejecución debe estar en False.

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.