Cambiar Color a Panel
Buenas tardes amigos, soy nuevo en este foro y en Delphi 2007, mi problema es el siguiente:
Me encargaron hacer un pequeño sistema para un hotel, tengo todo los cuartos visualizados en paneles y toda su programacion pare hacer la reservacion y todo lo que ocupa. Cuando se hace la reservacion cambia el color del panel para visualizar directamente que ya tiene reservacion ese cuarto, el problema es cuando se sale del sistema y entra de nuevo el cuarto que tenia hecha la reservacion aparece nuevamente como si no tiene ninguna reservacion... De antemano les agradesco a quien me pueda ayudar!!! |
Hola
Hay muchas formas de hacer lo que necesitas. 1- me imagino que usas una base de datos para guardar la reservacion, si es asi, simplemente crea un campo para ese fin y dependiendo de su estado cambie el color o no. 2- puedes usar un archivo INI y guardar ese dato. saludos |
Se trata de que los componentes, cuando vuelves a abrir el programa están como los diseñaste, no como los dejaste la última ejecución.
Lo que debes hacer, al abrir el programa, es volver a refrescar todos los paneles (al estado correcto) según los datos que tengas de las reservas. Como dice Caral, lo normal es que esos datos los tengas en la Base de Datos. |
Hola, sin tener que usar bases de datos, una forma sencilla sería guardarlo en un txt, podrías poner un objeto memo con visible=false y utilizarlo para cargar y guardar el archivo txt de la siguiente forma.
Faltaría, claro está, un paso intermedio antes de guardar el archivo con los datos contenidos en el memo, que sería introducir en el memo el estado de cada panel, "ocupado/libre" para luego poder rescatar ese estado al abrir el programa. Saludos. |
Cita:
Te muestro una imagen (que data de 2007) pero que muestra exactamente lo que quieres aunque yo lo hago con un TStringGrid y con imagenes incrustadas dependiendo de los servicios que tiene asignados. Saludos |
egostar tienes algo parecido a lo que necesito... la cuestiones que yo los agarro con panel, segun el estado de la habitacion es el color que debe de tener el panel... si la habitacion esta ocupada debe tener color rojo y desocupada color verde... solo que no se como poner ese estado al abrir la ventana donde se encuentra los paneles...
|
Cita:
Por ejemplo algo así:
Aquí lo único es asignar el panel correspondiente dependiendo de la habitación. Saludos |
Cita:
Aqui te muestro el codigo que estoy poniendo para mandar llamar los datos de la base de datos...
Pero no me está funcionando!!! |
Bueno, me parece que el problema es mas de concepto que de otra cosa, estás intentando que cambie el color del panel cuando haya un cambio en el registro, pero yo lo haría en el evento OnShow de la forma para que se "actualice" cuando se muestra la pantalla, y claro, dejaría el proceso que tienes para que se ejecute cuando se registre otra reservación.
Saludos |
Cita:
|
Hola rotsen26.
Otra opción puede ser usar el evento OnDataChange del TDataSource: Asigno el evento por código para darle mayor claridad al ejemplo. Pero lo podés hacer desde el Object Inspector, en tiempo de diseño, diréctamente desde la pestaña Events del componente TDataSource relacionado al DBGrid. Saludos. |
Cita:
Parecido a esto, tengo un sistema de combis que llevan pasajeros entre 2 ciudades, y los asientos pueden estar libres, reservados o vendidos. En la pantalla que muestro los asientos tengo un procedimiento que "revisa" los asientos en la base de datos para pintarlos del color correspondiente. Cuando abro la ventana llamo a este procedimiento para mostrarlos... y cuando reservo o vendo un pasaje, primero inserto la operacion correspondiente en la base de datos y luego vuelvo a llamar a ese procedimiento para que me vuelva a actualizar la pantalla. Espero te sirva, abrazo! |
Cita:
|
Como hacerlo???
Cita:
Bueno, perdón por preguntar tanto... Pero como puedo hacerlo, tengo una tabla llamada Checin, en donde tengo el campo llamado estatus, y en se guardan los estados Reservado=RES, Check=OCU y Desocupado=DES, pero no se como llamarlos para que cuando esten según el estado se pongan los páneles en el color correspondiente, RES=Amarillo, OCU=Rojo y Des=Verde... Se le agradece la ayuda!!! |
Es de suponer que cada panel que tienes en pantalla corresponderá con uno de los registros que tienes en la tabla. El panel se llamará de alguna forma concreta y en la propiedad TAG habrás puesto algo (entero) que permita "identificarlo" y hacerlo "cuadrar" con uno de los registros de la tabla.
¿Es así? ¿Me explico? ¿Puedes explicar cómo lo has hecho? Si es así, basta con que hagas un recorrido por la tabla y para cada registro, identifiques el panel que le corresponde y según el valor le asignes el color. Para ser más concreto debes: 1) Poner las estructura de la tabla (para que veamos los campos) 2) Decirnos cómo llamas o identificas los paneles para que "cuadren" con los registros de la tabla. P.D: Si la respuesta a la pregunta es que NO (es decir, que no tienes forma de identificar los paneles con los registros de la tabla), esto es lo primero que hay que hacer. |
Hola rotsen26.
A diferencia de los compañeros, yo había interpretado mal lo que estabas buscando, pensé que mostrabas una habitacion por vez. Si son mostradas todas, podrías usar un procedimiento para actualizar los estados y llamarlo cuando sea necesario:
Un ejemplo de llamada: Otro: Para simplificar, en el procedimiento ActualizarPaneles, asumo que los paneles se llaman: Panel1, Panel2, Panel3, ... (*) Saludos. (*) Edito, me falto agregar: y el órden de los Paneles se corresponde al órden de las habitaciones en la tabla |
Solucionado
Buenas tardes amigos, les comento que ya solucioné el problema del cambio de colores en los paneles... Gracias a todos los que se dieron tiempo para poder ayudar!!!
|
La franja horaria es GMT +2. Ahora son las 23:36:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi