Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Formato a RichEdit como Ticket por columnas bien definidas, URGENTE (https://www.clubdelphi.com/foros/showthread.php?t=74255)

ivantj24 08-06-2011 02:14:54

Formato a RichEdit como Ticket por columnas bien definidas, URGENTE
 
Hola que tal pues eso, quisiera saber si existeo su alguien tiene una funcion para darle espacios, o hacer columnas dentro de un RichEdit con informacion que cargo desde una Base de Datos.

principalmente necesito que las columnas no se recorran, aunque los campos o la informacion de al lado se amplie en algunas y en otras no, permitiendo con esto dejar bien estructurada la informacion, como un grid, pero en un richedit.

lo ideal
FECHA...........N° DOC...........NOMBRE...................RUT
02-03-2005....FA1................YOHANA CRUZAT......0.000.000-0
03-03-2005....FA1234...........YOHANA CRUZAT......0.000.000-0
01-03-2005....FA789.............YOHANA CRUZAT......0.000.000-0

y esto es lo que no quiero que se muevan aunque los campos crescan en tamaniao de informacion.

FECHA...........N° DOC............NOMBRE............RUT
02-03-2005....FA1...... YOHANA CRUZAT......0.000.000-0
03-03-2005....FA12345......YOHANA CRUZAT.....0.000.000-0
01-03-2005....FA789.....YOHANA CRUZAT.....0.000.000-0

la idea es darle ya se por vectores, o por coordenadas, un tamanio de donde quiero qu ese vaya mostrando la informacion po rcada fila, asi no se mueve

esta es la forma que despliego la informacion: y solo en la primer fila es donde quiero aplicar esto, que de despliegue la informacion en 3 columnas, pero bien definidas, que recorran, y que siempre este definido en uan posicion inicial para que de ahi aumente lo que quiera pero que la posicion no se mueva, espero haberme explicado y que me echen la mano con esto, se los agradeceria mucho, la informacion aumenta, por eso me lo pidieron en un RichEdit por que no tiene un numero definido de informacion ya que la traigo desde la BD, saludos y de antemano como siempre gracias. :o

Ticket: 0 Usuario: Luis Humberto Fecha de Respuesta: 18/05/2011 05:20:39 p.m.
Titulo: probando un nuevo ticket a ver ññññ si funciona
Mensaje
probando la actualizacion de la ultima respuesta, el usuario y que el ticket detalle tambien cargue el nuevo campo
==============================================
Ticket: 0 Usuario: ivan Fecha de Respuesta: 18/05/2011 05:25:17 p.m.
Titulo: probando un nuevo ticket a ver ññññ si funciona

Mensaje
probando que cambie el nombre de quien respondio,
==============================================
Ticket: 0 Usuario: ivan Fecha de Respuesta: 20/05/2011 10:42:21 a.m.
Titulo: probando un nuevo ticket a ver ññññ si funciona
Mensaje
Tema Resuelto, se cerrara el Tema, hasta luego
==============================================
Ticket: 0 Usuario: ivan Fecha de Respuesta: 20/05/2011 11:30:04 a.m.
Titulo: probando un nuevo ticket a ver ññññ si funciona
Mensaje
cerrar
==============================================

Caral 08-06-2011 02:46:59

Hola
Interesantemente Urgente.
Saludos

Casimiro Notevi 08-06-2011 12:11:27

Pues creo que con que uses una fuente de letra del tipo courier new, por ejemplo.

ivantj24 08-06-2011 18:49:53

Que tal Casimito ehhh, me decias la idea de usar corier new supongo para que el tamanio al ser reducido pudiera escribir todo en un solo renglon sin que se me recorriera supongo, pero no es que solo sea el tipo de letra, sorry, lo que pasa es que tengo que hacer esa parte pero como un ticket de compra, ya que el ticket tiene un formato de tamanio definido, tiene sus filas bien establecidas, la informacion no se recorre, y todo esta bien estructurado,

yo esta informacion la traigo atraves de una consulta, y cada fila de informacion es un ticket por lo cual, la informacion cambia de tamanio, un ejemplo claro es el nombre de usuario, que por ejemplo cambia el largo, lo mismo los id de un digito a 2, a 3 etc, lo que hace que las columnas e amplien, yo lo que quiero es que la informacion si aumente como normalmente sucede, pero que las filas no se modifiquen. este es el ejemplo que les puse

Ticket: 0 Usuario: Luis Humberto Fecha de Respuesta: 18/05/2011 05:20:39 p.m.
//esta linea aumento de mas, por que el nombre de Luis humberto es mas grande que el de ivan
Ticket: 0 Usuario: ivan Fecha de Respuesta: 18/05/2011 05:25:17 p.m.
Ticket: 0 Usuario: ivan Fecha de Respuesta: 20/05/2011 11:30:04 a.m.


//asi quisiera que quedara, este es el encabezado de 3 paquetes de informacion que traigo :S no se si me entienda lo que quiero decir con paquetes:S
Ticket: 0 Usuario: Luis Humberto Fecha de Respuesta: 18/05/2011 05:20:39 p.m.
Ticket: 0 Usuario: ivan Fecha de Respuesta: 18/05/2011 05:25:17 p.m.
Ticket: 0 Usuario: ivan Fecha de Respuesta: 20/05/2011 11:30:04 a.m.

este es un ejemplo, esta es la primer linea de cada paquete de informacion, solo es la primer linea la que me estaria dando problemas, ya que lo que quiero, es que como un ticket, tenga un lugar definido para que la informacion se despliegue, en mi lugar serian 3 columnas donde la informacion en una linea empezaria a excribirse, y que por mas que aumente, no se modifique el tamanio.

lo qu ese me ocurrio y espero si alguien me pueda decir, es definir el tamanio del RichEdit contar los renglones, una ves que se sabe el tamanio de los renglones, especificar en que lugar puedo poner cada informacion, no se como contabilizar los espacios en blanco de una linea, saber cuantos espacios estan libres, etc o como definir por vectores o coordenadas un lugar en especifico para poner la informacion, asi estaria colocada en un lugar en especifico, espero me entiendas:

y anteriormente no habia puesto el codigo de como me traia la informacion y la colocaba en una linea, y aqui dejo el codigo para que vean, utiliza el TAB para dejar los espacios pero con el TAB les repito se recorre las columnas, espero me puedan ayudar, se que si se puede hacer, por que los tickets de todos los lugares estan estructurados de una forma que tienen un orden muy claro.

este es el codigo para que vean como despliego esa informacion:

Cita:

lblTicket := Format('Ticket: %d', [ADOQueryTicketDetalle.FieldByName('TicketID').AsInteger]);
lblUsuario := Format('Usuario: %s', [ADOQueryTicketDetalle.FieldByName('Nombre').AsString]);
lblFecha := Format('Fecha de Respuesta: %s', [ADOQueryTicketDetalle.FieldByName('Fecha').AsString]);
RichEditRespuestas.Paragraph.Alignment:= taLeftJustify;
RichEditRespuestas.SelAttributes.Color:= clBlue;
RichEditRespuestas.Lines.Add(#9+#9+lblTicket+#9+lblUsuario+#9+lblFecha);
utilizo el format, tambien me dijeron que con el pudiera darle una forma al momento de desplegar, pero nunca lo habia usado, esa fue la idea que me dieron, pero si es que alguien me puede dar ideas, o como contar los renglones para despues enviar la informacion por coordenadas, o algo qu ese les ocurra seria de muchisima ayuda enserio, gracias y saludos,

ivantj24 08-06-2011 23:24:14

Problema Resuelto Muchas gracias :) me tuve que quebrar la cabeza un poco xDDD

BlueSteel 09-06-2011 00:39:23

Cita:

Empezado por ivantj24 (Mensaje 403065)
Problema Resuelto Muchas gracias :) me tuve que quebrar la cabeza un poco xDDD

Hola

y cual fue la solución????

esto puede servir a más de una persona...

salu2:p:p

Casimiro Notevi 09-06-2011 00:42:51

Cita:

Empezado por ivantj24 (Mensaje 403065)
Problema Resuelto Muchas gracias :) me tuve que quebrar la cabeza un poco xDDD

¿Y cual ha sido la solución? :confused:

BlueSteel 09-06-2011 00:44:18

Cita:

Empezado por Casimiro Notevi (Mensaje 403080)
¿Y cual ha sido la solución? :confused:

Estoy disparando más rápido :D:D:D

Por favor, lee la guia de estilos, no repitas los hilos.... :D

Salu2:p:p

Casimiro Notevi 09-06-2011 00:47:09

Cita:

Empezado por BlueSteel (Mensaje 403081)
Estoy disparando más rápido :D

Ando algo desentrenado :)

ivantj24 09-06-2011 01:41:04

Esta sencillo, primero era calcular el tamanio de la primer palabra que ibamos a poner en el RichEdit, para despues calcular a que separacion querias la 2da o 3ra palabra:

//con este codigo me traia los valores de usuario y fecha
lblUsuario := Format('Usuario: %s',
Cita:

[ADOQueryTicketDetalle.FieldByName('Nombre').AsString]);
lblFecha := Format('Fecha de Respuesta: %s', [ADOQueryTicketDetalle.FieldByName('Fecha').AsString]);
habria que contabilizar el tamanio de la primer palabra, para despues teniendo el tamanio de la separacion el cual es a tu gusto, restabas, y habria que llenar de espacios, toda la diferencia que diera. el codigo a continuacion

Cita:

countUsuario:= Length(lblUsuario); //contabilizaba la primer variable
Contador:= 30-countUsuario; //determinar el espacio restante para llenar cone spacios ' '
while I <= Contador do
begin
I:= I+1;//contador
Espacios:= Espacios + ' ';//variable que iba aumentado de espacios
end;
con ello, si el lblusuario, me regresaba que tenia 13 caracteres, y yo le doy un espacio de 30, lo que hacia era restar, el espacio que yo doy '30' - '13' para obtener los espacios que habria que llenar con ' ' (espacios), por medio de un while hacia esto, almacenandolo en una variable string Espacios, y con ello al desplegar el mensaje

Cita:

with RichEditRespuestas do
begin
Paragraph.Alignment:= taCenter;
SelAttributes.Color:= clBlue;
Lines.Add(lblUsuario+Espacios+lblFecha);//aqui desplegaba las 3 variables, 2 de datos, fecha y usuario, y una de espacios
end;
al desplegar, me tomaria, los 13 espacios de 'lblUsuario', mas los espacios que resten de la variable 'Espacios' y seguido de los espios de fecha quedandome algo asi

Cita:

Usuario: Luis Humberto Fecha de Respuesta: 18/05/2011 05:20:39 p.m.
Usuario: ivan Fecha de Respuesta: 18/05/2011 05:25:17 p.m.
Usuario: ivan Fecha de Respuesta: 20/05/2011 10:42:21 a.m.
Usuario: ivan Fecha de Respuesta: 20/05/2011 11:30:04 a.m.
Usuario: Luis Humberto Fecha de Respuesta: 20/05/2011 01:00:54 p.m.
Usuario: ivan Fecha de Respuesta: 20/05/2011 01:02:12 p.m.
Usuario: ivan Fecha de Respuesta: 23/05/2011 02:43:27 p.m.
espero se pueda apreciar el orden, en el programa si se nota, y como les decia, aunque despliego 3 variables, 2 con de datos y una es de espacios, este ejemplo fue paa separar 2 vairiables definiendo la separacio, pero tambien aplicar para 3 o 4 columnas, espero me allan entendido :S:S:S yo tengo mas informacion entre medio, pero ahi se aprecia que hay un orden al imprimir todas juntos como columnas, saludos ahora me queda una duda que es mi busqueda fitrando un valor numeto junto con strings, atraves de un Adotable :(


La franja horaria es GMT +2. Ahora son las 01:54:14.

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