jeje... nos falta Zipi y Zape :)
|
Después de unas cuantas horas buenas os pongo el código de dos componentes que se usaran en el módulo que estamos, son iguales, uno para integer y otro para double, son Spinedit para tablas
El otro
Espero os sean de utilidad. |
Hola compañeros, estoy un poco liado y en breve se supone que saldré de viaje, intentare poneros algo más antes de irme, pero de momento aquí tenéis un cambio que hay que realizar en la tabla documentos, hay que añadir el campo
Cita:
|
El trabajo es lo primero, y más hoy en día ^\||/
|
Bueno comencemos describiendo y poniendo el código de diferentes partes, ya que el código entero no lo pondré hasta el final. Es muy probable que el código de una función o procedure vaya modificándose según avancemos, ya iré explicando por que. Lo ire haciendo en diferentes post, para que quede un poco más esquematizado.
Lo primero será la forma de llamarlo, ya hemos visto la function Acceso, que nos habré los form, según sea nuestro nivel de usuario, con lo que evitamos mayores controles de usuarios y tener que estar poniendo o quitando accesos y ademas gracias al nivel de usuario, también podemos ocultar o mostrar ciertos datos en nuestro form de una manera bastante simple. Veamos la llamada a facturas
como podemos ver la linea Cita:
Ademas nos aseguramos de colocar los Pagecontrol en página general, ya que podemos haber cambiado de una página/documento a otra al salir y volver a entrar. |
Vamos ahora con el botón nuevo, este es el código
Como podemos ver lo primero es activar el pagecontrol en datos, abrimos inserción de registro en la tabla, ponemos el TNewSpinEdit (NSESerie) en value a 1*, y pasamos a comprobar si en configuración hemos dicho de usar el año como serie, si es así cogemos los 2 últimos dígitos del año en curso, en caso contrario cogemos el valor de la serie por defecto que es la del campo Serie de la tabla de configuración, hecho esto pasamos a mostrar el número de documento perteneciente y pasamos el foco. * este componente lo activamos o desactivamos ya que su uso es solo para poder elegir entre los tres seriales, por lo que si usamos el año como serie no nos es útil. También hacemos un llamada a nuestra function VerNumeroDocumento, aquí su código.
El primer parámetro que le pasamos es el valor de nuestra variable que nos indica el tipo de documento y que la cargamos al entrar desde el menú o otro lado al documento, el segundo es la serie. Esta function lo que hace es comprobar el numerador de cada tipo de documento, si es cero cargamos como 1, en caso contrario, sera el número actual más 1, al devolvernos el resultado, nos aseguramos que nos lo devuelva relleno de ceros a la izquierda, y descontamos los espacios que va a ocupar la serie. |
Pongo nueva mente la imagen del formulario para ir orientándonos
Estamos en el campo serie, al lado esta el spinedit, que activamos o desactivamos, según nos es necesario, de aqui pasamos al número de documento que tiene los dos siguientes eventos,
El 1º de los eventos, nuestra como queda el número de documento con la serie, el 2º evento crea una búsqueda en un querry para comprobar si el documento ya existe, para ello debemos comprobar, el tipo de documento, el número, asignado y la serie ala que pertenece, ya que recordemos, que es la misma tabla para varios documentos diferentes. pasamos a la fecha, que al usar el componente DbNewEditJl y estar en Onlydate, controla que sea una fecha válida, nos permite que al entrar tenga la fecha actual y que podamos cambiar la fecha pulsando flecha arriba o abajo. |
Seguimos entrando en el código del cliente, que tiene los siguientes 3 eventos
En el 1º evento, comprobamos que el form este activo, para evitar errores y si el código del cliente no esta vació, creamos una búsqueda con un querry, esta nos permitirá tener otros datos a la vista del cliente, tanto en los siguientes campos, como en la pagecontrol de datos extendidos (PC3). En el 2º evento, colocamos los datos visibles del cliente en el PC3. y en el 3º evento, hacemos varias cosas, primero que no se quede vació, en caso contrario si hemos puesto una B únicamente llamamos al módulo de búsqueda para el cliente, en caso contrario al de la búsqueda, comprobamos si existe, si no es asi nos avisa y posiciona nuevamente, en caso de que exista, comprueba si ya tenemos relleno uina descripción o forma de pago del cliente, si no existe la pone y si existe comprueba si cuadra con la que tiene el cliente, en caso de ser diferentes, nos da la opción de modificarla por la que tiene el cliente o mantener la que ya tiene. Pasaríamos al Nombre del cliente, este campo ha de ser editable y guardado independiente al del la tabla clientes, imaginemos el siguiente caso, tenemos el cliente código 0 (contado) y en un día de reparto tenemos 3 clientes con este código, en cambio podríamos editar en cada documento con Contado, Juan, Contado limpiadora Hotel XXXxxx, etc. De aquí pasamos a la forma de pago que pasa con lo mismo que con el nombre del cliente, el caso típico es un cliente que tiene una forma de pago x y quiere en una factura determinada pagarla de contado. En cuanto alos botones de nuevos y búsqueda, ya los veremos más adelante. Creo que ya es bastante por hoy. |
Pequeñas correcciones en
y en
Os pido disculpas pues he visto varias faltas de ortografía, pero es el corrector de texto, que no se que problema tiene pero ha incluido varias palabras en el diccionario y me las cambia automáticamente, ya por defecto escribo y suele comerme o poner alguna letra demás y se que cometo varias faltas ortográficas. |
Supongo va quedando todo claro, ya que no veo preguntas, ni a nadie con la antorcha corriendo detrás de mi :D:D:D:D.
Por cierto espero vuestras valoraciones |
Ahora seguimos con el comercial o agente, comenzamos con el código del comercial con los siguientes tres eventos
El 1º evento, como podemos ver el primero según escribimos, nos va buscando el agente, pero sólo si es un agente ya que esta en la misma tabla que el resto de empleados El 2º evento, posiciona la pestaña de datos auxiliares en los datos del comercial Y el 3º evento, comprueba a la salida , si no esta vacio, si debemos buscarlo y si no tiene datos el campo nombre lo rellena y si lo tiene pero es diferente, nos pregunta si deseamos cambiarlo. |
Ups!, se me olvidó en la tabla de empleados, el campo NIF, lo tendréis que añadir
Cita:
|
Tenemos que cambiar un procedure, de los anteriores por este
ya que si no no podíamos mostrar la imagen del comercial |
Este es el evento para cuando cambiamos de ´numero de serie, al lado de la serie, se me había pasado
|
Otra modificación esta vez en SbNuevoClick
|
Cambios en mis componentes spinedit en el create, dentro de la creación de lo botones añadimos a cada uno la siguiente linea
Con esto evitamos que los botones UP y Down, reciban el foco. Pongo el código del create de uno de ellos, sabéis lo que tenéis que hacer para cambiarlos en los demás
|
Claro esta también debemos adapta el evento KEypress de nuestro formulario
|
y ya por último hoy el siguiente evento
|
Pido disculpas por tantas rectificaciones, pero es que según voy haciendo en caso lo voy subiendo, muchas veces sin haber probado el código primero :o
|
Vamos a hora por el botón "Escribir nota" con el siguiente código
y como no estoy seguro de si puse esta function aquí os la pongo
Ahora pasamos al desglose de la factura, explicare la función de algunos botones, el resto son iguales a los de siempre |
Otra modificación
|
y otra
|
más y más modificaciones
|
Gracias por tu esfuerzo que te aseguro seguimos muchos con interes
|
Muchas gracias Kokorski, pero si quieres ayudarme haz una valoración del tutorial como solicito en post anteriores, esto me permitirá, junto con la valoración de otros compañeros, a mejorar mis puntos débiles como ya exprese en el siguiente post
Cita:
|
Cita:
Explicaciones....... 8 Claridad ........ 8 Código ....... 7 Tablas ...... 7 Descripciones ...... 8 Diseño ........ 5 (esto es muy personal jejeje) Conceptos ......... 9 forma de aplicar los conceptos ........ 8 y utilidad ...... dependera de cada uno Saludos |
Cita:
Supongo que quieres decir "a crearlos para venderlos". Si es así, entonces sí que puedes, el usuario final sólo quiere que haga bien lo que tiene que hacer, que lo haga rápido y que sea fácil de hacerlo. Y si es barato, mejor :) Ahora bien, si lo dices por entrar a formar parte de un equipo de programación, pienso que lo principal que tendrías que cambiar es a usar la nomenclatura que utilicen en ese sitio. En algunos sitios son más estrictos y en otros son más abiertos a que cada uno use su forma habitual. Ya sabes, la nomenclatura, la notación para las variables, componentes, etc., la forma de escribir el código, incluso los espacios de tabulación para las sangrías del código. Pero todo eso es informarse y usarlo, nada más. En cuanto a la estética, como siempre, te tienes que habituar a lo que usen en ese lugar, aunque también es normal que haya una persona encargada de "dar el toque" a las pantallas, así cada programador no tiene que esmerarse mucho en ese aspecto. En general, claro que sí tienes nivel. Si hacemos una división muy genérica de niveles, podría ser:
Puedes crear una encuesta y comparar según lo que contesten los demás :) En cuanto a las explicaciones, es como siempre, alguien novato o aficionado puede que no lo entienda muy bien, es normal. Sin embargo, alguien medio o avanzado te entenderá perfectamente. |
Cita:
Cita:
En cuanto a mi aportación, debo decir que la mayor parte que aporto yo son los conceptos y la aplicación (a mi forma) de ellos al programa, pero no considero que en ningún momento este descubriendo la pólvora, en cuanto al código, ya que este en su mayor parte, es de compañeros del club de libros y de otras páginas en Internet, que mio propio, lo que si he hecho yo es interpretar este y adaptarlo a mis necesidades. Lo mismo pasa con mis componentes. Claro Casimiro que las explicaciones, dependerán de quien las lea sean más claras o no y estoy seguro de que más del 90% le interesa más el concepto que el código en si, ya que lo piensan aplicar a su propio estilo, pero también considero, que tener un punto de partida, es fundamental. Ya esto lo he contado en el club, cuando comencé con Clipper compre un libro (Que aún conservo), para iniciarte en el mundo de este lenguaje, los primeros capítulos, eran conceptos, pero de ahí en adelante era una aplicación sencilla pero completa y debo decir, que me enseño muchísimo, cosa que hasta la fecha no he visto en Delphi. y no no es que me vaya con un equipo de programación, me refiero a que si me sale la oportunidad de hacer algún programa que me soliciten, si creis que tengo suficiente nivel como para vender al público mis programas. En cuanto al diseño, se que debo mejorarlo, pero espero a que alguno de los maestro, escriba alguna guía o tutorial, con los conceptos y reglas a respetar, de hecho puse el tema http://www.clubdelphi.com/foros/showthread.php?t=83663, para intentar aprender de los compañeros y aún por desgracia no ha participado nadie. Disculparme como siempre por la verborrea, pero para todos los años que llevo en el club no participo mucho. |
Siguiendo con el tutorial, lo siguiente es
y estos son los cambios más significativos hechos en UFbusquedaFP
Como podéis ver al tratarse de una tabla auxiliar que va vinculada a los módulos y el código, el tratamiento es un poco diferente. |
Como va quedando el botón nuevo documento
|
Bueno empezamos con la botonera de detalles del documento, explicaremos algunos botones, los otros, son iguales a los anteriores
Se que el código cliente y otros, tienen control de salida, por lo que no permite quedarse vacio, pero puede pasar que el cliente con el ratón salte los pasos y lo coloque en otra posición dejando en blanco o nulos, campos que deben tener datos. Para evitarlo creamos la variable VarIPaso y la iniciamos a 0, si se mantiene a 0 todo va bien, en caso contrario según su valor nos indica donde se encuentra el error. |
Ahora los botones Modificar y borrar de detalle
|
Cita:
Cita:
De todas formas, hay información por internet y libros que hablan de ese tema, aunque no soy muy partidario de seguirlos "al dedillo" porque prefiero hacer las cosas a mi manera. Por ahí tenemos un hilo, creo recordar que 2 hilos, que hablan sobre ese asunto y los foreros pusieron capturas de pantallas de sus programas, por si acaso te sirve de algo echarles un vistazo. Por comentarte algo personal, prefiero ponerlo todo muy recogido, ocupando el menor espacio posible. Sin embargo eso va en contra de una pantalla táctil o de alguien que tenga algún defecto ocular y prefiera todo más grande. Creo que en estas cosas cada uno tiene sus gustos y pueden ser totalmente diferentes al del resto. |
Debido a que voy a usar este método más de una vez he modificado el código del botón nuevo y creado una nueva función para este módulo
Después del cambio es como queda este procedure y ahora la function
|
Cita:
|
Te entiendo, José Luis, aunque lo que trataba de decirte es que ese diseño variará dependiendo de muchos factores, tanto personales como preferencias del cliente, técnicos, etc.
Es lo que te comentaba, yo prefiero hacer las pantallas muy reducidas, ajustadas, lo más pequeña posible, etc. pero si me dicen que el el programa es para usar en una pantalla táctil, entonces cambio mis preferencias y me adapto a esa cuestión técnica. O lo mismo si el cliente me dice que prefiere las letras grandes porque en su empresa están todos cegatos. O sea, que hacer esa pantalla que indicas, si fuese para mí, creo que la reduciría tanto que entrarían 4 pantallas en el tamaño que ocupa solo una :D |
Cita:
Oye te vamos a cambiar el nick (Don Cicuta Supertacañon) y el avatar por este A ver si adivinas por qué :D:D:D:D |
Ahora insertar un comentario
|
Cita:
|
La franja horaria es GMT +2. Ahora son las 01:10:35. |
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