![]() |
Decidir que Form abre primero en una aplicación
Buenas noches, estoy realizando una aplicación en la que me abre un form de "Apertura de Caja" en la que coloco el monto inicial de la caja, luego al hacer clic en aceptar me abre el form principal en donde tengo el menú y esas cosas...
El form de "Apertura de caja" debe salir solo al inicio del día, es decir una vez que el usuario haya introducido la cantidad, el cliente puede cerrar la aplicación y volver a abrirla y ya no debería salir mas el Form "Apertura de Caja" sino pasar directamente al Form principal... ¿Hay alguna forma de hacerlo? |
El framework VCL necesita:
1. Se setee el "MainForm" de la aplicacion. Este debe ser una variable global definida en la seccion interface de la unidad del form 2. El form se inicializa no con su constructor Create, sino mediante Application.CreateForm 3. Cuando el MainForm es cerrado, la aplicacion termina Esta implementacion no la podes cambiar Yo creo que la opcion mas sana es, dejar el que tenes como "menu principal" como MainForm; luego realizar la validacion "si no introdujo la cantidad para hoy" --> crear y mostrar form caja, caso contrario, seguir con el principal Ejemplo trivial
|
Hola ZiriusB.
Cita:
Saludos :) |
Cita:
1.- El registro de validacion ¿donde se guarda? es decir, al abrir el programa luego de abrirlo por primera vez, donde revisa el sistema si ya se ha introducido el valor en dailycashBox... 2.- Tenia el Form de "Apertura de Caja" como principal, debo establecer el "Form1" como principal con esta funcion? (Project>>options>>forms) |
Cita:
2 - Si |
Cita:
El ejemplo no contempla si fué efectiva y correctamente inicializada la caja. De esta taréa creo que debería encargarse frmDailyCashBox y desconozco la lógica que tenes pensada para ese punto, por ejemplo ignoro que es el "registro de validación". El lugar de guardado podría ser en el registro de Windows, en tu base de datos, un archivo, etc., depende de como tengas pensado implementarlo. Cita:
O, mirando el código del proyecto, es el primero en crearse; ejemplos:
Saludos :) Edito: No había visto la respuesta de Agustín mientras redactaba este mensaje pero coincido con él. |
Cita:
Cita:
|
Hola ZiriusB.
Cita:
Por otro lado te soy sincero, veo muy inseguro que el primer usuario en ejecutar la aplicación pueda modificar el valor de la caja... ¿ No debería realizarse esa acción de forma automática ? (Esto dicho desde la ignorancia que tengo sobre los detalles de la situación) Saludos :) |
Cita:
Tenes que implementar "X": que es la funcion booleana del esqueleto No sabemos como funciona la logica de negocio ni como se valida la cantidad. Tampoco conocemos la estructura de la tabla en donde estas guardando la informacion Por ejemplo, podrias tener un campo fecha y validar contra esa fecha |
Cita:
Cita:
Agrego, el sistema es para el control de clientes de un gimnasio, ademas de el inventario y control de ventas del mismo, el motivo de ingresar el monto inicial de caja es para que al final del dia cuando se haga el "cierre de caja" el encargado pueda saber cuanto habia en la caja y que cantidad de dinero fue la ganancia del dia. (Igual esto lo puede saber si ve el historial de facturas, pero en caso de que sean varios encargados y por turno pues se lleva mejor el control.) |
Hola ZiriusB.
Cita:
Saludos :) |
Entonces tenes que lanzar un query para obtener la ultima fecha de la caja
Esa fecha la comparas con la de hoy |
Todo esto huele a un mal diseño desde la base de datos...y la implementación igual o peor. Al ejecutar el sistema tenemos que conocer: ubicación de la caja-terminal, sucursal donde trabaja y día en que estamos. Con esos datos hay que ir a la base de datos y pedirle el saldo final del día anterior. El chiste aquí es que el corte se tiene que hacer al final de las operaciones y no al principio. Al finalizar cada día de trabajo se debe cacular y almacenar el saldo final del día (no importa en que fecha real se realice). Si la tienda o negocio permance abierto las 24 horas, se hace un cierre antes de las 24 horas y en su caso cualquier excedente corresponde al dia siguiente. El usuario no tiene por qué capturar cual es su saldo inicial pues eso se puede calcular fácilmente a partir de los datos almacenados. El hacerlo como lo planteas no solo es incorrecto sino que induce a errores, fraudes y demás pues el usuario puede poner lo que le plazca sin que sea validado por nadie.
Revisa mejor tu proceso (sin código) como lo realizan, mejóralo, asegúralo y entonces ya lo programas; de lo contrario es un barril sin fondo informático. |
Cita:
Ahora otro problema que planteo acá mismo ya que tiene que ver con algo parecido, tengo mi formulario de inicio de sesión donde me pide usuario y contraseña (formlogin), si el usuario y la contraseña son correctos entonces se cierra y abre el form donde están los menúes y opciones (formprincipal)
Este es el codigo que tengo en el formprincipal, hasta ahi todo bien, al ejecutar la aplicacion me abre el formlogin y si la contraseña y el usuario son correcto me abre el formprincipal, el problema es que en el formlogin tengo dos botones "Ingresar" y "Cancelar", al darle click al boton cancelar me abre el formprincipal y lo cierra inmediatamente. Asi valido en el formlogin al dar clic en el "boton aceptar":
en el boton cancelar tengo:
¿Que estoy haciendo mal? |
Verifica como estás creando el form principal, si lo tienes en automático ponlo en manual y créalo tu mismo al momento del login exitoso. De esa manera si el usuario nunca se loguea el form principal nunca será creado.
|
La franja horaria es GMT +2. Ahora son las 08:41:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi