Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2012
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Red face Separador de miles en un memo

Hola amigos buenas tardes, necesito su ayuda, lo que pasa es que tengo una factura en la opcion de escribir la cantidad en un memo la escribe sin formato numerico es decir que si yo escribio 1525.15 asi la deja al momento de imprimir y lo que yo quiero saber como hacer que cuando se escriba la cantidad en el memo me vaya haciendo la separacion de miles es decir 1,525.15.

Espero su ayuda y de antemano gracias.Uso Delphi 2007
Responder Con Cita
  #2  
Antiguo 25-05-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Poder: 21
champy Va por buen camino
No me queda muy claro lo que necesitas.

¿La factura la generas en el Tmemo por código tomando los valores de otro lugar y ese código no te está formateando el importe como quieres?

¿o estás escribiendo en el Tmemo directamente como quien escribe en un bloc de notas y pretendes que mientras escribes el número, este se formatee solo?
Responder Con Cita
  #3  
Antiguo 25-05-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Me permito recomendar el siguiente artículo de Salvador Jover: Taller práctico – EditMask y TFormatSettings. Creo que puede ser de utilidad.
Responder Con Cita
  #4  
Antiguo 25-05-2012
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Asi es mi amigo champy quiero que este se formatee solo al escribir directamente en el memo.
Responder Con Cita
  #5  
Antiguo 25-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rufo.

Se le puede dar una solución similar a lo que tratamos aquí

Ejemplo:
Código Delphi [-]
var
  S: TSmallPoint;
begin
  // Salvar separadores actuales
  S.x:= Ord(ThousandSeparator);
  S.y:= Ord(DecimalSeparator);

  // Configurar separadores
  ThousandSeparator:= ',';
  DecimalSeparator:= '.';

  // Poner unos números en el memo
  Memo1.Lines.Add(FormatFloat('#,##0.00',1525.15));
  Memo1.Lines.Add(FormatFloat('#,##0.00',25312.33));
  ...

  // Restaurar separadores
  ThousandSeparator:= Chr(S.x);
  DecimalSeparator:= Chr(S.y);
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 25-05-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Poder: 21
champy Va por buen camino
¿Las máscaras no se pueden usar en mitad un TMemo verdad?

Planteas un reto interesante se me ocurre alguna forma un tanto liosa pero antes de liarme a escribir funciones que compruben y formateen el texto mientras escribes, esperemos a ver si alguno de los maestros del foro tiene alguna solución maravillosa y que no requiera mucho código.
Responder Con Cita
  #7  
Antiguo 25-05-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Poder: 21
champy Va por buen camino
Esto debería servirte.
En resumen, el procedimiento mira la última palabra que estás escribiendo en el Memo y si esa palabra puede ser transformada en un Flotante, como los importes por ejemplo, se muestra en un label el Mensaje "Pulsa Intro para: 0.000.000,00", al pulsar Intro se sustituye el valor por el valor formateado con separador de miles.

Código Delphi [-]
var
  Form1: TForm1;
  ULTPALABRA : STRING;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Memo1Change(Sender: TObject);
{Extraemos la última palabra escrita y si puede ser transformada en flotante se dará la posibilidad de formatearlo pulsando Intro}
var
   N : INTEGER;
   SALIR : BOOLEAN;
   NUMERO : DOUBLE;
begin
  //Recorremos el texto hacia atras hasta encontrar un Espacio o el principio del String
  SALIR:=FALSE;
  N := LENGTH(MEMO1.Text);
  REPEAT
    IF COPY(MEMO1.Text, N, 1) = ' ' THEN SALIR:=TRUE;
    N:=N-1;
  UNTIL (N<1) OR (SALIR=TRUE);
  
  //Se extrae la última palabra
  ULTPALABRA := COPY(MEMO1.TEXT, N+1, LENGTH(MEMO1.TEXT)-N);

  //Y si es un posible flotante, se muestra el mensaje de que Al pulsar Intro se la dará formato
  IF TRYSTRTOFLOAT(TRIM(ULTPALABRA), NUMERO) THEN
       LABEL1.CAPTION := 'Pulse Intro para: '+FORMATFLOAT('##,##0.00', NUMERO)
  ELSE
        LABEL1.CAPTION := '';
end;            

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: char);
{Si el usuario ha pulsado enter, se reemplaza el posible importe por su valor formateado}
begin
  IF (KEY = #13) AND (LABEL1.CAPTION <> '') THEN
  BEGIN
    KEY:=#0;
    MEMO1.TEXT := STRINGREPLACE(MEMO1.Text, TRIM(ULTPALABRA), FORMATFLOAT('##,##0.00',STRTOFLOAT(ULTPALABRA)), [RFREPLACEALL]);
    MEMO1.SelStart := LENGTH(MEMO1.TEXT);
  end;
end;
Responder Con Cita
  #8  
Antiguo 25-05-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Otra función que puedes usar para dar formato al texto: Format

Código Delphi [-]
// Formato de valores númericos:
Moneda := Format('%m', [15.0]); // Moneda = $15.00

// Formato de valores decimales:
Decimal := Format('%0.2d', [13]); // Decimal = 13.00

Consulta en la ayuda de Delphi para más opciones de formato.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #9  
Antiguo 25-05-2012
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Gracias por responderme, probare dichos codigos que me muestran y despues dire el resultado.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Multiplicar un edit con separador de miles rufo Varios 7 14-05-2012 18:41:22
formato separador de miles enresultados de consulta microbiano Varios 6 30-08-2011 01:04:42
Separador de miles como separador decimal jmselesan OOP 4 12-06-2011 22:21:54
Agregar separador de miles mjjj Varios 5 21-11-2007 10:51:15
Como setear el separador decimal y el separador de miles en WIN98 robertoe API de Windows 3 26-11-2006 17:12:02


La franja horaria es GMT +2. Ahora son las 21:19:57.


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
Copyright 1996-2007 Club Delphi