Vin para que puedan desactivar el boton cerrar (y otros) en los formularios


([N1] aztecmexico) #1

Bueno, a veces hay que ser bien terco y necio y meterse en terrenos desconocidos para uno, pero los resultados son gratificantes.

Aqui les dejo un VIN con el instalable para que puedan inhabilitar el famoso botón cerrar (X) de sus formularios, se hace uso de la librería user32.dll, obvio solo les va a servir para Windows (yo lo probé en W7Profesional).

La implementación es relativamente sencilla, solo comentar lo siguiente:

En el formulario se crea un evento que se activa con la señal de inicializado, a efecto de que establesca el foco en un control determinado.

Al ganar el foco dicho control se dispara el evento que inhabilita el botón cerrar.

Esto es así para garántizar que el (X) que se cierre sea el de nuestro formulario y la ventana ya se haya mostrado, de lo contrario se dispara antes y lo aplica a otra ventana, por eso no hay que disparamlo con la señal de inicializado de formulario ya que el botón que se desactiva es el de la última ventana abierta y no la que está en curso.

También van las constantes para los botones maximizar, minimizar y restaurar.

Espero les sirva.

Un saludo.

Martin Ibarra.

[attachment=23529,1856]


([N1] aztecmexico) #2

Haber, va en .rar


([N3] Juanjo) #3

Gracias Martín. Muy útil mientras Velneo lo soluciona.
Un saludo, Juanjo.


([N1] Pepeto) #4

Muchas gracias, @Martin

un saludo
José Luis
http://www.ascsl.com


([N3] blavan) #5

Me sumo a los agradecimientos, vaya foro, lo que me apena es que yo no sea capaz de aportar, parece que vivo de rentas, pero bueno gracias de nuevo


([N1] Synetic) #6

Gran trabajo Martín. Lo cierto es que es muy útil. Y sobre todo gracias por compartirlo.
Saludos,


([N3] blanyi) #7

Hola Martin, gracias por tu aporte.

Pero no he podido probarlo, yo descargue el zip, lo descomprimí y he instalado el vin en el servidor de la nube, aparentemente lo instala pero no me crea ninguna instancia. Entonces trato de crear la instancia pero no me muestra proyecto que seleccionar.

Si me voy vDevelop cargo la solución pero no me muestra mas nada.

Qjue me falta, o que estoy haciendo mal?

YIMY MORA ACONCHA


([N1] comercial) #8

Gracias. Martín por el trabajo y sobre todo por compartirlo, por cierto ¿has probado si se sigue pudiendo cerrar con Alt-F4 ?, supongo que si.

Saludos.
Miguel.


([N2] gegeo) #9

@blanyi

Parece que esta desarrollado con la 7.9, ¿está tu servidor actualizado a ésta?

_______________
Editado: @aztecmexico.hotmail, gracias por compartirlo


([N3] blanyi) #10

Aun estoy en la 7.8.2, entonces debe ser eso.

Gracias

YIMY MORA ACONCHA


([N3] blavan) #11

Hola Martin, lo probe en una aplicación y me inhabilita la x siempre pero no logro que la x se muestre apagada en la iniciación del formulario.
Es decir la inhabilita pero no se muestra apagada, después al trabajar con el formulario si se apaga
Probe a poner un mensaje en el evento desahabilitarcerrar y así si se apaga en la iniciación.

Creo que tengo un problema con Interfaz Gana Foco, porque no logro visualizar el foco a no ser que ponga el objeto como primero de la lista de tabuladores, sin embargo en la iniciación si se ejecuta el evento desahibilitarcerrar
Gracias


([N1] aztecmexico) #12

Hola a todos,

Yimi, toma en cuenta que el cliente debe ejecutarse desde windows ya que las librerías utilizadas solo funcionan para este SO, para linux y mac ahi si no me meto, jejeje, ya eso lo solucionará Velneo en su momento.

Miguel,
Revisando la documentación de API de windows me encontré que para inhabilitar la combinación de teclas ALT+F4 hay que poder controlar el evento ClosingForm del formulario, dentro del cual hay que poner a False el valor de e.cancel, el cual cancela la combinación de teclas, ojo, más bien cancela la acción de la pulsación de dichas teclas, bueno, entre otras cosas y riesgos pues no encontré la forma de manipular dicho evento desde V7.

Lo que si me encontré es una librería de pago que se llama DWLGINA3.DLL, la cual viene incluida en un software que se llama dWinLock, lo pueden bajar del sitio http://www.kassl.de la misma tiene un precio de 69 euros pero además te da opción para inhabilitar cualquier combinación de teclas, o elementos de windows, y la distribución de la librería para el desarrollador es Royalty-free, sinceramente creo que 69 Euros no son nada comparado con el control sobre nuestras aplicaciones que nos brinda dicha librería.

Y bueno, pues después de tanta publicidad, con la dichosa librería y una de sus funciones ya tambien tengo deshabilitado el ALT-F4 en el vin de muestra que les dejé, el cual nuevamente cuelgo ya actualizado para que lo prueben.

Benito,
Me pasaba lo mismo, lo que pudieras hacer es en el on-innit mediante comandos de interfaz mandar el foco al control que tú quieras que sea el que dispare la desactivación del botón, y luego, medianto los mismos comandos quitar el foco de ese control y redirigirlo al que deba tenerlo según la lógica de tu aplicación, o a ninguno, simplemente quitarlo, creo que con eso funcionaría.

Otra cosa yo solo lo probé sobre win7, se supone que funciona como mínimo con win2000, pero no sé si en algúnas máquinas, o versiones de win tenga algunas variaciones, sobre todo porque podemos tener distintos services pack, o cosas por el estilo.

De cualquier manera espero les sirva.

VA la actualización con lo de inhabilitar el ALT+F4

Saludos.

Martin Ibarra.

P.D. Cuando lo ejecuten les va a mandar un mensaje de que la librería no está registrada con licencia, es una versión trial.

[attachment=23552,1861]


([N2] Daniel) #13

Aun no hay una solución multiplataforma para evitar que se cierre el formulario de login?