Ir al contenido


Foto

Como crear un minimizar o maximizar un Form abierto en ShowModal?


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

#1 V3ct0r

V3ct0r

    Member

  • Miembros
  • PipPip
  • 16 mensajes
  • LocationVenezuela

Escrito 14 septiembre 2009 - 11:01

Hola amigos, tengo un problema que quiero hacer es de que tengo una Form1 que es la forma principal y quiero abrir una Form2 con ShowModal pero esa Form2 tiene la propiedad BorderStyle:= bsNone y dentro de ella yo quiero colocarle tres (3) imagenes que son de "Minimizar - Maximizar - Cerrar" como se podria hacer? es decir como cuando la vea el usuario pareciera que fuera un Skin (piel)
Espero que haya sido claro para que me puedan ayudar en lo que puedan, gracias  :D
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 14 septiembre 2009 - 11:05

Hola he movido el hilo a API.

Salud OS
  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 septiembre 2009 - 11:48

Pues sólo colocas tres botones que pueden ser BitButtons y colocar estos code:



delphi
  1. //Programa
  2. Application.Terminate; //Para cerrar el programa
  3. Application.Minimize; //Para minimizar
  4. Application.Maximize; //Para Maximizar
  5. Application.Restore; //Para Restaurar
  6.  
  7. //Form2
  8. Form2.Close; //conjuntamente con el evento OnClose cierras la ventana
  9. SendMessage(Form2.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0); //Minimizas
  10. SendMessage(Form2.Handle,WM_SYSCOMMAND,SC_MAXIMIZE,0); //Maximizas
  11. SendMessage(Form2.Handle,WM_SYSCOMMAND,SC_RESTORE,0);; //Restauras



Saludos.
  • 0

#4 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 14 septiembre 2009 - 12:07

Pues sólo colocas tres botones que pueden ser BitButtons y colocar estos code:



delphi
  1. //Programa
  2. Application.Terminate; //Para cerrar el programa
  3. Application.Minimize; //Para minimizar
  4. Application.Maximize; //Para Maximizar
  5. Application.Restore; //Para Restaurar
  6.  
  7. //Form2
  8. Form2.Close; //conjuntamente con el evento OnClose cierras la ventana
  9. SendMessage(Form2.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0); //Minimizas
  10. SendMessage(Form2.Handle,WM_SYSCOMMAND,SC_MAXIMIZE,0); //Maximizas
  11. SendMessage(Form2.Handle,WM_SYSCOMMAND,SC_RESTORE,0);; //Restauras



Saludos.


Amigo enecumene, el codigo de Application esta bien pero el del form no, al menos a mi me marca error, yo lo haria de una manera super sencilla.

utilizando la propiedad WindowsState del TForm

es decir



delphi
  1. if Self.WindowState in [wsNormal,wsMaximized] then
  2.     Self.WindowState := wsMinimized;



hay otra forma, mas elaborada y esa se mete con los Msg de windows, alguna ves lo vi en el libro de referencia de Delphi 5 pero no lo tengo a la mano, espero que esto sirva.

saludos.
:cheesy:

  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 septiembre 2009 - 12:08

hay otra forma, mas elaborada y esa se mete con los Msg de windows, alguna ves lo vi en el libro de referencia de Delphi 5 pero no lo tengo a la mano, espero que esto sirva.

saludos.
:cheesy:


Sí ya me di cuenta fue un error de tipeo, ya corregí los codes ;) y es a base de mensajes :D.

Saludos.
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 14 septiembre 2009 - 12:12

Solo una duda, como es que al cerrar una forma quieres minimizarla y luego maximizarla ???, no será que cuando la reestableces hagas lo que quieras ?

Salud OS
  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 14 septiembre 2009 - 12:18

Hola... yo tengo otra duda: ¿Que debo entender por "es decir como cuando la vea el usuario pareciera que fuera un Skin (piel)"?

Por cierto, deberías preguntarte y cuestinarte el querer hacer que una ventana modal tenga la posibilidad de minimizarse o maximizarse. Una ventana modal existe para dar aviso y obligar al usuario a que confirme o deniege una acción o para informarle de ciertos resultados (como por ejemplo: un error, o una confirmación de éxito, etc)

Habría que ver cual es el propósito del form2 y/o que es lo que se busca hacer. Creo que eso sería lo correcto.

Saludos,
  • 0

#8 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 septiembre 2009 - 12:32

Hola... yo tengo otra duda: ¿Que debo entender por "es decir como cuando la vea el usuario pareciera que fuera un Skin (piel)"?


Yo haría lo siguiente (un truco gráfico), con un Timage con la imagen del botón y con un SpeedButton la coloco encima del TImage con su propiedad Flat en True y el control BringToFront para que esté siempre encima, y eso da la sendación de que se trata un Skin o piel.

Saludos.
  • 0

#9 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 14 septiembre 2009 - 12:43

Yo quiero pensar que lo que quiere es darle un formato personalizado a la forma, y el mismo poner sus botones de Maxi, Mini y Sys, creo que es lo que quiere.

Pero para eso estaría bien que mejor programaras V3ct0r con Msg de windows.

saludos

  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 14 septiembre 2009 - 12:54

Pues creo entender la mano... quiere darle cierta apariencia y añadirle sus propios botones.
Eso no es demasiado drama... nada que con la "técnica del pobre" que comenta Enecumene no se pueda lograr ;). Existen suites que generan skins... la gran mayoría es paga pero alguna gratuita y/o libre debe haber por allí. Está torry.net para consultar.

Lo que si considero necesario es evaluar si es deseable que una ventana, que se diseña modalmente deba contar con esa posibilidad. Repito: una ventana modal es para dar avisos y pedir confirmaciones. Creo que resultaría más cómodo si trabajase con una ventana normal y le pone el skin...

No se... yo nomás digo que una ventana modal con posibilidad de minimizarse, maximizarse, etc eso ya es una clara evidencia de que tal vez hay algo del asunto que no se entiende bien.

Saludos,

Saludos,
  • 0

#11 V3ct0r

V3ct0r

    Member

  • Miembros
  • PipPip
  • 16 mensajes
  • LocationVenezuela

Escrito 14 septiembre 2009 - 07:32

Yo quiero pensar que lo que quiere es darle un formato personalizado a la forma, y el mismo poner sus botones de Maxi, Mini y Sys, creo que es lo que quiere.

Pero para eso estaría bien que mejor programaras V3ct0r con Msg de windows.

saludos


Epale amigos disculpen la tardanza, Es como dice Razadi es para darle un toque personal a cada Form, claro me inmagine como tu dices que tengo que meterme con los Msg de Windows para poder implementarlo de manera correcta, yo probe con algunos codigos pero al minimizarlos por ejemplo me da un error.
  • 0

#12 V3ct0r

V3ct0r

    Member

  • Miembros
  • PipPip
  • 16 mensajes
  • LocationVenezuela

Escrito 14 septiembre 2009 - 07:51

Pues creo entender la mano... quiere darle cierta apariencia y añadirle sus propios botones.
Eso no es demasiado drama... nada que con la "técnica del pobre" que comenta Enecumene no se pueda lograr ;). Existen suites que generan skins... la gran mayoría es paga pero alguna gratuita y/o libre debe haber por allí. Está torry.net para consultar.

Lo que si considero necesario es evaluar si es deseable que una ventana, que se diseña modalmente deba contar con esa posibilidad. Repito: una ventana modal es para dar avisos y pedir confirmaciones. Creo que resultaría más cómodo si trabajase con una ventana normal y le pone el skin...

No se... yo nomás digo que una ventana modal con posibilidad de minimizarse, maximizarse, etc eso ya es una clara evidencia de que tal vez hay algo del asunto que no se entiende bien.

Saludos,

Saludos,


Hola Delphius, esta muy bien lo que planteas, para comentar lo que yo quiero hacer los estoy aplicando en un sistema administrativo y no estoy utilizando ventanas Mdi :( y por eso opte en utilizar ventanas Modales, quisiera aplicar yo mismo las implementaciones en la forma de manera de no recargar tanto el proyecto con mas componentes y como tamien lo que quiero hacer es algo sencillo (digo yo :) )que es cambiar solamente para agregar los botones de Maximizar Minimizar y Restaurar. Bueno se que me estoy complicando un poco las cosas pero ademas de aprender a utilizar las API quisiera utilizar los mas que pueda en mis proyectos para hacerlos lo mas rapidos posibles
  • 0

#13 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 septiembre 2009 - 08:30

¿El error te dió con uno de mis code? :(
  • 0

#14 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 14 septiembre 2009 - 09:32


Hola Delphius, esta muy bien lo que planteas, para comentar lo que yo quiero hacer los estoy aplicando en un sistema administrativo y no estoy utilizando ventanas Mdi :( y por eso opte en utilizar ventanas Modales, quisiera aplicar yo mismo las implementaciones en la forma de manera de no recargar tanto el proyecto con mas componentes y como tamien lo que quiero hacer es algo sencillo (digo yo :) )que es cambiar solamente para agregar los botones de Maximizar Minimizar y Restaurar. Bueno se que me estoy complicando un poco las cosas pero ademas de aprender a utilizar las API quisiera utilizar los mas que pueda en mis proyectos para hacerlos lo mas rapidos posibles


Gracias por las aclarar un poco las cosas.
El concepto de ventana modal es independiente de si se trata de MDI o no... Repito por si no queda claro: Cuando uno abre una ventana modalmente lo que consigue es: impedir al usuario hacer uso de cualquier otra ventana, ya que esta no devuelve el control sino es hasta que se cierre ésta.

Es útil y aconsejable cuando se deba mostrar avisos. No tiene sentido lógico ni práctico minimizarla, ni maximizarla.... ¡Algo a sucedido o es de importancia avisar y llamar la atención al usuario!
Lo que tu pretendes va en contra de la lógica y en sentido común y el esperado por el SO convengamos.

Si es como dices, que se trata de un sistema administrativo y/o de gestión con mayor razón hay que mantenerse a lo común y esperado. No te vayas por lo "extraño". ¡Cuando espera una ventana modal que sea y se comporte como una!
Simplemente para que quede más claro: Te sales del estándar.

Y si bien se puede agrandar, maximizar una ventana modal ¿Que hace ésto a los propósitos del sistema?
¿Que debería suceder cuando minimizas una ventana modal? Por defecto minimiza la aplicación. Pero el "aviso" sigue estando... "restaura" la aplicación y "Tatá"... de nuevo la ventana modal.... ¿Maximizarla? Eso ocultará a la vista a las otras pantallas... pero el "aviso" no se moverá... Peor aún: cubrirá toda la pantalla (exceptuando claro está la barra)

Una ventana modal debe ser chica, de un tamaño mediano a pequeño. Dar un simple aviso, tal vez un posible botón de "más detalles" para permitirle que se expanda o habilite un control aportando mayor información.

Y si estás en la idea de skins... ¿tienes pensado como y/o que hacer cuando ésta se expanda? Digo... el skin deberá adaptarse al nuevo tamaño.

Creo que por intentar darle cierta sencillez, vas a terminar complicando algunas cosas.

No se... tal vez soy bastante gallego cuadrao y no veo algo que tu vez.

Saludos,
  • 0

#15 V3ct0r

V3ct0r

    Member

  • Miembros
  • PipPip
  • 16 mensajes
  • LocationVenezuela

Escrito 15 septiembre 2009 - 08:29



Hola Delphius, esta muy bien lo que planteas, para comentar lo que yo quiero hacer los estoy aplicando en un sistema administrativo y no estoy utilizando ventanas Mdi :( y por eso opte en utilizar ventanas Modales, quisiera aplicar yo mismo las implementaciones en la forma de manera de no recargar tanto el proyecto con mas componentes y como tamien lo que quiero hacer es algo sencillo (digo yo :) )que es cambiar solamente para agregar los botones de Maximizar Minimizar y Restaurar. Bueno se que me estoy complicando un poco las cosas pero ademas de aprender a utilizar las API quisiera utilizar los mas que pueda en mis proyectos para hacerlos lo mas rapidos posibles


Gracias por las aclarar un poco las cosas.
El concepto de ventana modal es independiente de si se trata de MDI o no... Repito por si no queda claro: Cuando uno abre una ventana modalmente lo que consigue es: impedir al usuario hacer uso de cualquier otra ventana, ya que esta no devuelve el control sino es hasta que se cierre ésta.

Es útil y aconsejable cuando se deba mostrar avisos. No tiene sentido lógico ni práctico minimizarla, ni maximizarla.... ¡Algo a sucedido o es de importancia avisar y llamar la atención al usuario!
Lo que tu pretendes va en contra de la lógica y en sentido común y el esperado por el SO convengamos.

Si es como dices, que se trata de un sistema administrativo y/o de gestión con mayor razón hay que mantenerse a lo común y esperado. No te vayas por lo "extraño". ¡Cuando espera una ventana modal que sea y se comporte como una!
Simplemente para que quede más claro: Te sales del estándar.

Y si bien se puede agrandar, maximizar una ventana modal ¿Que hace ésto a los propósitos del sistema?
¿Que debería suceder cuando minimizas una ventana modal? Por defecto minimiza la aplicación. Pero el "aviso" sigue estando... "restaura" la aplicación y "Tatá"... de nuevo la ventana modal.... ¿Maximizarla? Eso ocultará a la vista a las otras pantallas... pero el "aviso" no se moverá... Peor aún: cubrirá toda la pantalla (exceptuando claro está la barra)

Una ventana modal debe ser chica, de un tamaño mediano a pequeño. Dar un simple aviso, tal vez un posible botón de "más detalles" para permitirle que se expanda o habilite un control aportando mayor información.

Y si estás en la idea de skins... ¿tienes pensado como y/o que hacer cuando ésta se expanda? Digo... el skin deberá adaptarse al nuevo tamaño.

Creo que por intentar darle cierta sencillez, vas a terminar complicando algunas cosas.

No se... tal vez soy bastante gallego cuadrao y no veo algo que tu vez.

Saludos,


Delphius tienes mucha razon y logica en lo que dices si yo me estoy complicando mucho y deberia hacer esos cambios que tu dices antes de que haga mas grande la aplicación y me sea mas complicado corregirla. Voy a cambiar el entorno a MDI pero me ayudan mucho puesto que con eso puedo crear alguna aplicación sencilla y agregarle un entorno diferente al estilo  del Navegador Google chrome claro que en este caso seria una sola pantallar y las demas pantallas serian ShowModal pero solo para la configuración y mensajes de la aplicación, gracias por tu ayuda y tiempo aportado al post y claro y a todos lo muchachos que me ayudaron, de todas maneras voy a seguir inventando mas cosas para crear nuevas ideas en una interfaz y tambien aportar con la comunidad
  • 0

#16 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 15 septiembre 2009 - 12:22

Hola V3ct0r,
No quiero que tomes mis palabras como un reproche, ni tampoco como la gran verdad.

Yo nomás digo que antes de estar "enchulando" la aplicación que te preguntes si realmente vale el esfuerzo. Por lo general, un sistema administrativo debe ser sobrio y lo más parecido al aspecto visual común y estandar con que se maneja Windows y sus herramientas.

Cuanto más te alejas de ese "estándar" más difícil se hace darle una capacitación al usuario para que se familiarice con el sistema... más de uno se podría sentir confundido si le presentas cosas de otro modo que no le es familiar.

Esto no sólo aplica en cuanto al aspecto estético sino también en cuanto a funcionalidad. Si el usuario recibe un aviso debe estar consciente de que es un aviso y no podrá hacer otra cosa hasta que de visto bueno... si ve un cuadro de texto... lo asimila con otro cuadro de texto común y corriente.

No se si me me entiende.

No te digo que no debas darle cierta estética, es bueno darle una apariencia nueva y fresca. El asunto está en no abusar de ella. No veas a esto como algo prioritario. Dedica tu esfuerzo a la lógica, la interfaz ya saldrá.

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.