FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Facilitando el cargado de datos
En el detalle de nuestras aplicaciones esta la diferencia que podemos hacer a la hora que nos elijan como diseñadores de bases de datos para empresas y ser reconocidos como serios programadores. Simplemente hay que prestarle atencion al usuario final y sus necesidades.
El siguiente truco esta diseñado para facilitar el ingreso de datos desde el formulario. La diferencia la nota el usuario final en aquellos formularios con grandes cantidades de objetos TDBEdit (mas de 7 al menos). Por ejemplo piensese en un formulario donde deben ser anotados los parametros de analisis de laboratorios de pacientes. Se trata de que al terminar de ingresar el dato, al presionar la tecla Enter el foco cambie al siguiente TDBEdit agilizando la tediosa tarea de cargar una base de datos. Normalmente el cambio de foco de un TDBEdit a otro se realiza con la tecla Tab, pero a veces esto resulta incomodo. Asi, para facilitar el ingreso debemos seguir estos pasos. 1) Echele un vistazo al formulario que va a transcribir. Fijese en el orden en que se presentan los datos en el papel escrito asi puede reproducir el mismo en su formulario en pantalla. 2) Coloque los TDBEdit necesarios para tal fin, con sus respectivos TLabel que describen el campo o tipo y estilo de dato que ingresaran. 3) El primer ordenamiento: Ahora va a ordenar la secuencia en que deben tomar foco cada casillero TDBEdit en su propiedad TabOrder del inspector de objetos poniendo el numero 0 para el primero, el 1 para el segundo y asi susecivamente hasta el ultimo TDBedit 4) Seleccione todos sus objetos TDBEdit y coloque True en la porpiedad TabStop del inspector de objetos. 5) Si tiene otros objetos en el formulario que no necesiten recibir foco, coloque el valor False a la propiedad TabStop. 6) Corra el formulario y chequee el orden presionando la tecla Tab. 7) Una vez hecho esto debera escribir muy poco codigo, como el siguiente. 8) Seleccione nuevamente todos sus objetos TDBEdit y en la pagina Events del inspector de objetos busque el evento OnKeyUp y haga doble click en el. Fundamentos: Utilizamos este evento para capturar, no cuando el usuario presiona la tecla, sino cuando la libera tras presionarla. Una vez activado el evento debemos testear que tecla presiono; en nuestro caso nos interesa la tecla Enter o VK_RETURN. Si es afirmativa nuestra condicion haremos que de forma programatica se presione la tecla Tab. Esto hara que cambie de foco al siguiente TDBEdit siguiendo el orden arbritario definido en el Object Inspector segun la propiedad TabOrder. Para presionar teclas a traves del Delphi utilizamos el procedimiento "SendKeyDown" y luego inmediatamente para liberar la 'presion' "SendKeyUp". El procedimiento predefinido es el siguiente: SendKeyDown (AReceiver:TWinControl;Key: Word; Shift: TShiftState);Donde "AReceiver" es la variable que contiene el objeto en el cual deseamos que sea presionada la tecla, "Key" la tecla que deseamos presionar y "shift" el estado de la tecla shift al momento de presionar key. Luego utilizamos "SendKeyUp" en el mismo sentido, pero simplemente para decir que solo presionamos una sola vez la tecla. A veces la utilizacion de "SendKeyUp" puede ser alternativa. Ya lo que queda es pues ver el codigo escrito.
Podemos hacer un agregado final, si es que esto facilitaria mucho mas el ingreso. Suponiendo que nuestra secretaria deba ingresar varios registros de analisis de laboratorio del mismo paciente. Podriamos hacer que al llegar al ultimo TDBedit se desencadene el evento metodo POST de nuestra tabla y seguidamente la pongamos en el estado de dsInsert. Para ello simplemente agregamos el siguiente codigo a nuestro event comunitario, suponiento que DBEdit28 es nuestro ultimo TDBEdit.
ACLARACIONES PARA NOVATOS: Sender es una variable del tipo TOBject que puede convertirse con la ayuda del operador as en cualquier objeto. Cuando un objeto responde ante un evento en el cual esta implicada la variable Sender, como en la mayoria de los eventos; Sender adquiere todas las propiedades del objeto en cuestion (name, parent, classtype, etc.). Asi, antes de convertirlo en el, debemos testear a que clase pertence y es alli cuando entra en juego la palabra reservada "is" que nos sirve para dicho fin. Si sender es de la clase TMaskEdit, se generara un RuntimeError (solo cuando corra el programa) si intentamos convertirlo a TDBEdit utilizamdo "as". |
|
|
|