Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Demo programa táctil (https://www.clubdelphi.com/foros/showthread.php?t=83837)

José Luis Garcí 04-08-2013 08:45:07

Demo programa táctil
 
Hola compañeros, el compañero A-CLICK me solicito en una serie de mensajes privados que le ayudara en un programa TOUCH (táctil), para ello le he montado una demo de un programa totalmente táctil, no tendremos por que usar para nada ni teclado ni ratón, pero si una pantalla de este tipo.

Primero os pongo los mensajes que me ha mandado

Cita:

Hola Jose 1/2
Disculpa que te escriba por aquí en privado, pero considero que cuando lo haga por el foro que inicie sea aportando información jejeje...

Te cuento en mis inicios con Delphi ya logre conectarme a la base de datos y hacer la primera parte del pequeño sistema que estoy programando... pero me quede en la parte mas importante del sistema touch... te lo explico de nuevo por pasos

1.- Introduzco el numero de "Tarjeta" ( esto es simplemente un numero de pedido manual asignado a un cliente)

2.- Muestra: "Nombre del Cliente" y Numero de la "Tarjeta" asociada perfecto, abajo abra un grid que muestra en blanco si no se le a asignando un servicio o si ya tiene servicios cuales tiene...

Ejm:

Cliente: Maria Mora
Trajeta:1121

Servicio - Servidor
Lavado - Ana Pachecho
Corte - Jesus Aguilera

pero aquí debe haber un botón que diga [AGREGAR SERVICIO]

"AQUI COMIENZA MIS DUDAS"

3.- En un Formulario Nuevo o Ventana Nueva me da las opciones

Formulario Servicios

[LAVADOS] [CORTES] [TINTES] [COMBOS] [PROMOCIONES]

//Pueden ser muchos mas... aquí me gustaría un botón adelante y atras com me dijiste se podia hacer y que muestre por pagina max 10 botones por decir algo...


Bien....

3.- Selecciono [TINTES]

desaparecen el primer grupo de botones y aparecen

[TINTE BÁSICO] [MECHAS] [REFLEJOS]

Selecciono la opción [TINTE BASICO] y allí sale un menú con todos los servicios de ese tipo

-Tinte cabello corto
-Tinte Cabello largo
-Tinte Marca WELLA
-Tinte Marca STILE
-Tinte blablabla

recuerda que es en touch

Ingrese su "Código de Servidor" (es la persona que hace el servicio)

// TOMO EL VALOR DEL BOTON Y EL CODIGO DEL SERVIDOR Y LO ANEXO EN EL GRID ASOCIADO AL CLIENTE

// Puede llegar a haber un nuevo nivel antes de asignar el servicio ojo
Cita:

Hola Jose 2/2
MUUUUY FACIL JAJAJAJAJA (PARA TI )
Ahora te explico de donde provienen
TABLA CLASIFICACION DE SERVCIOS
CodInsta - Descripcion - Nivel - InsPadre
1 LAVADOS - 1 - 0
2 CORTES - 1 - 0
3 TINTES - 1 - 0
4 COMBOS - 1 - 0
5 PROMOCIONES - 1 - 0
6 TINTE BASICO - 2 - 3
7 MECHAS - 2 - 3
8 REFLEJOS - 2 - 3

HAY OTRA TABLA DE SERVICIOS

CodServ - DescServ - Insta - Precio
TC01 - Tinte cabello corto - 2 - 700,00
TC02 - Tinte Cabello largo - 2 - 900,00
TC03 - Tinte Marca WELLA - 2 - 1500,00
TC05 - Tinte blablabla - 3 - 1650,00
CC01 - Corte de Cabello Corto - 2 - 180,00
CC02 - Corte de Cabello largo - 2 - 250,00

Fíjate que los servicios pueden estar asociados a un Nivel 1 ó 2
Pero no mezclados eso es una condición que yo pondré

Me comentaste de unos controles pero la verdad o no se o me perdi
me dijiste q agrupara los botones... pero te soy sincero no se como hacerlo

Me gustaría que los caption de los botones provengan directamente de los valores de las tablas de la base de datos y que la cantidad de botones sea definida al espacio del formulario ejemplo máximo por decir 10 botones x pantalla, si son mas de 10 aparezca el botón siguiente. cuando seleccione el nivel 1 del menu paso al menu 2 o al menu de servicios selecciono el q voy a agregar... paso a una pantalla de confirmacion donde me muestra

JESUS AGUILERA (EL SERVIDOR)

DESEA AGREGAR: Tinte Marca WELLA

AL CLIENTE: Maria Mora
[CONFIRMAR] [ANULAR]

si anulo voy a la pantalla principal obvio si Confirmo allí es cuando guardo en la base de datos que se muestra en el grid principal

me ayudas paso a paso???

Gracias de Antemano
Cita:

Re: Hola Jose 1/2
Buenisimo... estas autorizado... todo lo que venga de ayuda es bueno... luego de todo eso voy a construir un turorial en word o pdf paso a paso con las pantallas identificando cada componente o cada cosa... que haga, eso si... colocandote los creditos que te mereces...

bueno manos a la obra...

nota: el delphi 2010 es el Embarcadero XE2 ???
He de decir, que la demo esta hecha de manera rápida, así que es probable, que pueda tener algún error, que la he hecho en firebird, que esta con componentes estándar + el imagengrid de los componentes del Clubdelphi y los míos propios, tanto los del ccd como los míos son totalmente gratuitos.

La demo es eso una demo, lo que muestro es como aplicar un programa a los sistemas táctiles, el tamaño de las pantallas es de 800 x 1000, me he basado en el texto del compañero A-CLICk sólo en ciertos puntos, lo que he hecho es una visión personal de como hacer este tipo de programas, espero os sea útil y sirva para algo.

Os pondré algunas pantallas y comentarios, así como la estructura d las tablas, y subiré al final el programa al FTP del club.

José Luis Garcí 04-08-2013 08:48:19

Comenzamos con las 12 tablas, no haré comentarios, si existe alguna duda ya sabéis comentar, e intentare ser explicito

Cita:

CREATE TABLE CITAS (
ID INTEGER NOT NULL,
FECHA DATE,
HORA TIME,
CLIENTE VARCHAR(20),
TRABAJO VARCHAR(80),
OPERARIO VARCHAR(20)
);
Cita:

CREATE TABLE CLIENTES (
ID INTEGER NOT NULL,
NOMBRE VARCHAR(80) NOT NULL,
TELEFONO VARCHAR(20),
ANOTACION VARCHAR(150),
CODIGO VARCHAR(20)
);
Cita:

CREATE TABLE TRABAJOSDETALLE (
ID INTEGER NOT NULL,
IDENTIFICADOR INTEGER,
TRABAJO VARCHAR(20),
OPERARIO VARCHAR(20),
FECHA DOUBLE PRECISION,
HORA TIME,
CANTIDAD INTEGER,
IMPORTE NUMERIC(15,4),
DESCUENTO NUMERIC(15,4),
IMPUESTO NUMERIC(15,4)
);

José Luis Garcí 04-08-2013 08:50:46

Seguimos con la segunda tandada de tablas

Cita:

CREATE TABLE CONFIGURACION (
ID INTEGER NOT NULL,
IMPUESTO1 NUMERIC(15,4),
IMPUESTO2 NUMERIC(15,4),
IMPUESTO3 NUMERIC(15,4),
IMPUESTO4 NUMERIC(15,4),
NOMBREDELIMPUESTO VARCHAR(20),
NOMBREIMPUESTO1 VARCHAR(20),
NOMBREIMPUESTO2 VARCHAR(20),
NOMBREIMPUESTO3 VARCHAR(20),
NOMBREIMPUESTO4 VARCHAR(20),
NUMERO VARCHAR(20),
SERIE VARCHAR(3),
COLORA VARCHAR(20),
COLORB VARCHAR(20),
COLORACTIVO VARCHAR(20),
COLORNOACTIVO VARCHAR(20)
);
Cita:

CREATE TABLE CORTES (
ID INTEGER NOT NULL,
CODIGO VARCHAR(20) NOT NULL,
CORTE VARCHAR(80) NOT NULL,
IMPORTE NUMERIC(15,4) NOT NULL,
IMAGEN BLOB SUB_TYPE 0 SEGMENT SIZE 80
);
Cita:

CREATE TABLE EMPLEADOS (
ID INTEGER NOT NULL,
CODIGO VARCHAR(20),
NOMBRE VARCHAR(80),
COMISION NUMERIC(15,4),
IMAGEN BLOB SUB_TYPE 0 SEGMENT SIZE 80
);

José Luis Garcí 04-08-2013 08:53:08

La tercera de tablas

Cita:

CREATE TABLE LAVADOS (
ID INTEGER NOT NULL,
CODIGO VARCHAR(20) NOT NULL,
LAVADO VARCHAR(80) NOT NULL,
IMPORTE NUMERIC(15,4) NOT NULL
);
Cita:

CREATE TABLE PEINADOS (
ID INTEGER NOT NULL,
CODIGO VARCHAR(20) NOT NULL,
PEINADO VARCHAR(80) NOT NULL,
IMAGEN BLOB SUB_TYPE 0 SEGMENT SIZE 80,
IMPORTE NUMERIC(15,4)
);
Cita:

CREATE TABLE PROMOCIONES (
ID INTEGER NOT NULL,
CODIGO VARCHAR(20),
PROMOCION VARCHAR(80),
IMPORTE NUMERIC(15,4)
);

José Luis Garcí 04-08-2013 08:56:07

A por la última de tablas

Cita:

CREATE TABLE TINTES (
ID INTEGER,
CODIGO VARCHAR(20),
TINTE VARCHAR(80),
IMPORTE NUMERIC(15,4)
);
Cita:

CREATE TABLE TRABAJOS (
ID INTEGER NOT NULL,
NUMERO VARCHAR(20) NOT NULL,
CLIENTE VARCHAR(20) NOT NULL,
FECHA DATE,
HORA TIME,
PAGADO VARCHAR(1),
SUBTOTAL NUMERIC(15,4),
IMPUESTOS NUMERIC(15,4),
DESCUENTOS NUMERIC(15,4)
);
Cita:

CREATE TABLE TRABAJOSDETALLE (
ID INTEGER NOT NULL,
IDENTIFICADOR INTEGER,
TRABAJO VARCHAR(20),
OPERARIO VARCHAR(20),
FECHA DOUBLE PRECISION,
HORA TIME,
CANTIDAD INTEGER,
IMPORTE NUMERIC(15,4),
DESCUENTO NUMERIC(15,4),
IMPUESTO NUMERIC(15,4)
);
Estas dos últimas están con un FORINGKEY del IDENTIFICADOR=ID

José Luis Garcí 04-08-2013 09:02:48

Como podemos ver son tablas muy simples, cortas, ya que debemos tener en cuenta que al ser un programa táctil, debe contener la menor cantidad de datos a rellenar por el usuario, ni estoy usando todos los campos en el programa, pero sería los menos que necesitaríamos, por supuesto, para un programa comercial, faltan campos e incluso más tablas, pero recordar que es una demo.

Ahora comenzare con las pantallas, ya se que no estáis muy de acuerdo con el diseñe de las mismas, pero diré que en este caso, no podemos usar componentes pequeños.

El código, esta casi sin comentarios y si pongo algo en los siguientes post, será algo muy determinado.

Si existen dudas, ya sabéis, preguntar aquí e intentaré explicarme.

José Luis Garcí 04-08-2013 09:21:07

he subido la demo, la encontrareis en http://terawiki.clubdelphi.com/Delph...oriales_Demos/
con el nombre DEMOTOUCH-2, dentro veréis, varios zip los DEMOTOUCH y DEMOTOUCH-1, son el ejecutable y la base de datos, las fuentes e imágenes usadas están en los otros dos zip

José Luis Garcí 04-08-2013 09:32:57

Comenzamos con el menú



como es un programa táctil, no podemos usar un menú convencional, por lo que he optado, por botones directos, pero se pueden usar componentes para ellos como el ouctloockbar, toolbar, coolbar, Rainbow, etc para nuestros menús, recordar que sólo estoy dando ciertos concejos.

Como veréis puse un MonthCalendar, al pulsar en un día nos dirá las citas que tenemos en el Listiview, seria mucho más practico poner un Calendar y cambiar con Botones SPIN tanto el mes como el año, pero ya tenia esto avanzado cuando me acorde, así que os lo dejo así, pero ya comento que no es lo más adecuado.

También podéis a preciar, que sólo tenemos dos opciones de trabajo, que son citas y facturar/cobrar, ya iremos comentando cada una

José Luis Garcí 04-08-2013 09:37:17

Ahora toca al módulo de empleados



Como podéis ver sencillo y sin pretenciones, como siempre tiene los botones cargar imagen y pegar desde el clipboard la imagen, fuera de esto nada que destacar

José Luis Garcí 04-08-2013 09:40:59

El módulo clientes



en esta destacar aún menos, si acaso, que aquí al igual que la anterior si deberíamos tener algún dato más si fuera un programa terminado y no una demo.

José Luis Garcí 04-08-2013 09:46:14

El módulo de cortes de pelo



Como veis es casi siempre más o menos lo mismo, lo único, es que yo no me di cuenta hasta más tarde, en los códigos, debería haber usado un sistema más identificativo, despues lo arregle pero los código debían haber sido como "Cor-xx"

José Luis Garcí 04-08-2013 09:53:04

Módulo lavar



muy básico

José Luis Garcí 04-08-2013 09:56:53

Módulo de peinados



debo decir¡que a mi generalmente me gusta pantallas grandes y que ocupen toda la pantalla, también es cierto que yo trabajo con resoluciones muy altas, pero creo que estas pantallas son bastante proporcionales a los componentes que estamos usando.

José Luis Garcí 04-08-2013 10:01:10

Módulo de tintes



por cierto, como siempre los botones de impresión no tienen código asociado.

José Luis Garcí 04-08-2013 10:05:10

módulo de Combos



Si os dais cuenta en el Statusbar, sigue apareciendo a las 8:20 de la mañana buenas noches, se trata de cambiar los indices de tiempos en el evento timer, referidos a este apartado, seguro que de este tipo de errores encontrareis varios

José Luis Garcí 04-08-2013 10:07:09

El módulo promociones


José Luis Garcí 04-08-2013 10:10:52

el módulo configuración



Los módulos que vienen ahora son un poco más extensos.

José Luis Garcí 04-08-2013 10:41:04

el módulo citas, que lo vamos a dividir en varias partes



Esta es la pantalla principal, como podemos ver tenemos varios datos y acciones posible



1) Como podemos ver rellenamos la fecha, hora y el operario (empleado) y damos al botón buscar cita

2) Si encuentra la cita nos posiciona, en caso contrario, nos da la opción de crearla



Veamos ahora las diferentes pestañas, de trabajo posibles, iguales a estas las usaremos en el siguiente módulo, a excepción de la primera

1) nos muestras las citas del día según el registro de citas y donde estemos posicionados, es la pestaña por defecto de este pageControls, en varias opciones de este módulo

2) los botones nos permiten movernos por las pestañas del pageControl, con más facilidad que pulsando en sus pestañas

3) Pestaña de cortes, este es el componente imagenGrid de los componentes ccd podéis bajarlos de http://componentes.clubdelphi.com/

4) Pestaña de lavados

5) Pestaña de Peinados

6) Pestaña de Tintes

7) Pestaña de Combos

8) Pestaña de promociones


Claro esta en algunas tenemos un DBNavigator, podríamos poner un campo edit y hacer búsquedas o filtros, pero esa es una opción

Casimiro Notevi 04-08-2013 10:48:23

Trabajo extra y además en domingo, esto se cobra al doble de su precio ;)

José Luis Garcí 04-08-2013 10:58:15

Vamos con el último módulo Facturar




como podemos ver lo hemos dividido en varias partes

1) botones de la tabla maestro

2) Botones para cambiar entre las pestañas de maestro y detalle y botones de la tabla detalle

3) Datos a rellenar para la tabla maestro

4) Pagecontrol con varias pestañas, que vimos en el módulo anterior, salvo la primera, que nos muestra la tabla detalle en grid y el apartado 6

5) Datos del trabajo actual y descripción del operario y el cliente

6) Cálculos del presente trabajo y si esta cobrada o no

7) Datos necesarios para el detalle

8) Botones con el valor de los impuestos que hemos puesto en configuración

9) Subtotal del detalle activo en ese momento

10) botonera para las pestañas, ya la vimos en el módulo anterior

A parte de esto tenemos en la parte inferior izquierda dos botones, el de impresión (para imprimir) y el de cobrara, este lo único que hace es marcar como cobrada el presente trabajo (Factura)

José Luis Garcí 04-08-2013 10:58:55

Cita:

Empezado por Casimiro Notevi (Mensaje 464982)
Trabajo extra y además en domingo, esto se cobra al doble de su precio ;)

Quita quita lo multiplico por 10 :D:D

José Luis Garcí 04-08-2013 11:16:03

Bueno hemos dicho que ya estaban todos los módulos, pero no hemos dicho como introducimos los datos, para ello usamos la unidad Ueditor, que se divide en las siguientes partes, este módulo esta dividido en 3 partes muy claras,

un page control (no veréis las diferentes pestañas que ya las comentaremos por qué el tabheight y el tabWidth estan a 1),

un teclado (viene por defecto en delphi 2010 en adelante (no estoy seguro de versiones anteriores) pero en la que no lo tengan, se pueden usar componentes de teclados virtuales, he incluso montar uno con sppedbuttos)

Un panel con cuatro botones, estos tienen asignadas teclas, pero como se supone que usamos un sistema táctil no podremos usarlas esta teclas son:

Borrar- borra el contenido, si esto es posible claro, permitiendo devolver vacio un contenido o rectificar simplemente.

Texto- Nos permite poner el texto por defecto, que hemos asignado por código

Pasar y salir- Sale de la actual pantalla, pero nos devuelve el contenido que hemos modificado a nuestro componente

Cancelar y Salir - Sale y no modifica nada.

José Luis Garcí 04-08-2013 11:17:52

Vamos con la primera que es para introducir textos



nada más que comentar

José Luis Garcí 04-08-2013 11:26:35

Ahora para introducir enteros



Como podemos ver podemos usar los botones para subir y bajar y podemos usar el teclado (en numpad) para introducir la cantidad, sólo enteros

José Luis Garcí 04-08-2013 11:46:31

Ahora para comisiones



Como podemos ver tenemos una serie de botones que nos permite meter una cantidad (la que marca su caption)

despues tenemos el RadioGroup, con cantidades, para variar el incremento de mi componente NewSpineditDouble con el valor que marquemos (por defecto 0,01) cada vez que pulsemos el botón subir o bajar, aumentara o disminuirá según su propiedad incremento

Y por ultimo el numpad

José Luis Garcí 04-08-2013 11:49:13

Le toca a las fechas



Podemos usar el calendario, cambiar, día. mes o año o el numpad, si optamos por esta, sólo introduciremos los números ya que las / las pone por defecto.

José Luis Garcí 04-08-2013 11:51:38

Las horas



Botones para horas y minutos, y 1 para poner los segundos a 0, o usamos el numpad, al igual que en las fechas los : salen por defecto, así que sólo ponemos los números

José Luis Garcí 04-08-2013 11:53:47

para los precios



Sólo tenemos la opción del numpad y aunque este sólo tiene el punto para los decimales, al pasarlo lo cambiamos por una coma.

José Luis Garcí 04-08-2013 11:57:20

Y por último para las tablas



Podemos usar el Dbnavigatos, pulsar en el registro (dbgrid), o buscar con el teclado, por 1 de los dos campos posibles.

Bueno, con esto doy por terminado este tema, nada, ya podéis echarme a los perros :D, espero vuestras criticas como siempre y a partir de mañana sigo con el programa de gestión. un saludo y buen domingo a todos

ElKurgan 04-08-2013 14:10:46

Colosal Trabajo, maestro

^\||/^\||/

José Luis Garcí 04-08-2013 14:18:52

Cita:

Empezado por ElKurgan (Mensaje 464993)
Colosal Trabajo, maestro

^\||/^\||/

Maestro que va, aficionado, no más

Casimiro Notevi 04-08-2013 14:30:14

Un programa completo, en una mañana de domingo.
^\||/^\||/^\||/

José Luis Garcí 04-08-2013 14:52:43

Cita:

Empezado por Casimiro Notevi (Mensaje 464995)
Un programa completo, en una mañana de domingo.
^\||/^\||/^\||/

No hombre, me pidió consejo, hace tres día, no se en total me llevaría de 9 a 11 horas +-

Casimiro Notevi 04-08-2013 15:22:57

Cita:

Empezado por José Luis Garcí (Mensaje 464996)
No hombre, me pidió consejo, hace tres día, no se en total me llevaría de 9 a 11 horas +-

¡Ah!, bueno, si fue hace 3 días, así cualquiera :p

mcs 05-08-2013 01:05:00

Una duda que tengo: de dónde sacas los gráficos para tus programas? Tienes algún recopilatorio de imágenes/iconos, o los buscas en internet segun los necesitas?

José Luis Garcí 05-08-2013 01:18:52

tengo colección de imágenes e iconos, pero para las demos uso imágenes de famosos, usando el ICoFx, lo convierto en iconos o imágenes pequeñas.

José Luis Garcí 07-08-2013 15:33:03

Lo han probado?
Que tal?
Que cambiarían?
Que consideran correcto o que esta bien?

Sin usar componentes de tercero, más que los usados, ya que podría haber usado los Smooth control, pero la idea es que sea con los componentes de delphi, nuestros componentes o componentes de los que dispongamos los fuentes

A-CLICK 11-08-2013 05:08:24

Zapatero a su zapato...
 
Ante Todo... "MUCHAS GRACIAS" Hiciste de lo que te pedi ayuda, un sistemas Completo... desde hoy mismo me pondré a trabajar... considero alli estan todos los componentes necesarios... no solo sirve para mis pantallas si no para cualquier persona que se vaya a iniciar en Touchs... Estoy realmente Sorprendido Luis... Gracias Nuevamente...

Luego comentare mi experiencia en este mismo hilo, yo ha diferencia de Luis usare SQL Server 2008 en una Base de Datos Creada por el Sistema Propietario de facturacion... omitiré la parte de facturacion pero si usare casi todo lo que alli se describe... seran 2 modulos por separado, uno en el que se incluiran los clientes y otro que sera usado solamente por los servidores para agregar los trabajos realizados a los clientes...

De Nuevo Muchas Gracias...!

José Luis Garcí 16-08-2013 09:22:05

Upss.

Hola compañeros no sé dónde tengo la cabeza , la verdad es que al subir la demo , se me olvidó subir los fuentes, no lo he hecho adrede y como no me han comentado nada, ni cuenta me había dado.

Ya esta solucionado, donde mismo está el ejecutable y la BD, tenéis los fuentes, en un archivo independiente, con el nombre Fuentes DEMOTOUCH.zip



Casimiro Notevi 16-08-2013 09:58:39

Un olvido lo tiene cualquiera :)


La franja horaria es GMT +2. Ahora son las 21:28:34.

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