![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Cita:
Letras1.Numero := 1425.3; Para obtener el número escrito en letras usas la propiedad AsString: Edit1.Text := Letras1.AsString; Con lo que obtendrás: "mil cuatrocientos veinticinco con treinta" Las propiedades Moneda y Centavos te sirven para indicar cómo quieres nombrar las unidades y los decimales. Por ejemplo, si pones Letras1.Monedas := 'euros'; Letras1.Monedas.Centavos := 'centavos'; la propiedad AsString te dará: "mil cuatrocientos veinticinco euros con treinta centavos" La propiedad Masculino es para indicar su quieres que el texto esté en género masculino o femenino. Así, si pones Letras1.Moneda := 'mujeres'; Letras1.Centavos := 'niñas'; Letras1.Numero := 3.04; Letras1.Masculino := false; La propiedad AsString te dará: "tres mujeres con cuatro niñas" Finalmente, la propiedad Separador me parece que es para indicar el separador decimal (punto, coma o el que uses). // Saludos |
|
#2
|
|||
|
|||
|
Mira, aqui tienes una funcion parecida y ademas te da la posibilidad de traducir los numeros al catalan.
(**************************************) (* Conversión Número -> Letra *) (* *) (* Parámetros: *) (* *) (* mNum: Número a convertir *) (* iIdioma: Idioma de conversión *) (* 1 -> Castellano *) (* 2 -> Catalán *) (* iModo: Modo de conversión *) (* 1 -> Masculino *) (* 2 -> Femenino *) (* *) (* Restricciones: *) (* *) (* - Redondeo a dos decimales *) (* - Rango: 0,00 a 999.999.999.999,99 *) (* *) (**************************************) function NumLetra(const mNum: Currency; const iIdioma, iModo: Smallint): String; const iTopFil: Smallint = 6; iTopCol: Smallint = 10; aCastellano: array[0..5, 0..9] of PChar = ( ('UNA ','DOS ','TRES ','CUATRO ','CINCO ', 'SEIS ','SIETE ','OCHO ','NUEVE ','UN '), ('ONCE ','DOCE ','TRECE ','CATORCE ','QUINCE ', 'DIECISEIS ','DIECISIETE ','DIECIOCHO ','DIECINUEVE ',''), ('DIEZ ','VEINTE ','TREINTA ','CUARENTA ','CINCUENTA ', 'SESENTA ','SETENTA ','OCHENTA ','NOVENTA ','VEINTI'), ('CIEN ','DOSCIENTAS ','TRESCIENTAS ','CUATROCIENTAS ','QUINIENTAS ', 'SEISCIENTAS ','SETECIENTAS ','OCHOCIENTAS ','NOVECIENTAS ','CIENTO '), ('CIEN ','DOSCIENTOS ','TRESCIENTOS ','CUATROCIENTOS ','QUINIENTOS ', 'SEISCIENTOS ','SETECIENTOS ','OCHOCIENTOS ','NOVECIENTOS ','CIENTO '), ('MIL ','MILLON ','MILLONES ','CERO ','Y ', 'UNO ','DOS ','CON ','','') ); aCatalan: array[0..5, 0..9] of PChar = ( ( 'UNA ','DUES ','TRES ','QUATRE ','CINC ', 'SIS ','SET ','VUIT ','NOU ','UN '), ( 'ONZE ','DOTZE ','TRETZE ','CATORZE ','QUINZE ', 'SETZE ','DISSET ','DIVUIT ','DINOU ',''), ( 'DEU ','VINT ','TRENTA ','QUARANTA ','CINQUANTA ', 'SEIXANTA ','SETANTA ','VUITANTA ','NORANTA ','VINT-I-'), ( 'CENT ','DOS-CENTES ','TRES-CENTES ','QUATRE-CENTES ','CINC-CENTES ', 'SIS-CENTES ','SET-CENTES ','VUIT-CENTES ','NOU-CENTES ','CENT '), ( 'CENT ','DOS-CENTS ','TRES-CENTS ','QUATRE-CENTS ','CINC-CENTS ', 'SIS-CENTS ','SET-CENTS ','VUIT-CENTS ','NOU-CENTS ','CENT '), ( 'MIL ','MILIO ','MILIONS ','ZERO ','-', 'UN ','DOS ','AMB ','','') ); var aTexto: array[0..5, 0..9] of PChar; cTexto, cNumero: String; iCentimos, iPos: Smallint; bHayCentimos, bHaySigni: Boolean; (*************************************) (* Cargar Textos según Idioma / Modo *) (*************************************) procedure NumLetra_CarTxt; var i, j: Smallint; begin (* Asignación según Idioma *) for i := 0 to iTopFil - 1 do for j := 0 to iTopCol - 1 do case iIdioma of 1: aTexto[i, j] := aCastellano[i, j]; 2: aTexto[i, j] := aCatalan[i, j]; else aTexto[i, j] := aCastellano[i, j]; end; (* Asignación si Modo Masculino *) if (iModo = 1) then begin for j := 0 to 1 do aTexto[0, j] := aTexto[5, j + 5]; for j := 0 to 9 do aTexto[3, j] := aTexto[4, j]; end; end; (****************************) (* Traducir Dígito -Unidad- *) (****************************) procedure NumLetra_Unidad; begin if not( (cNumero[iPos] = '0') or (cNumero[iPos - 1] = '1') or ((Copy(cNumero, iPos - 2, 3) = '001') and ((iPos = 3) or (iPos = 9))) ) then if (cNumero[iPos] = '1') and (iPos <= 6) then cTexto := cTexto + aTexto[0, 9] else cTexto := cTexto + aTexto[0, StrToInt(cNumero[iPos]) - 1]; if ((iPos = 3) or (iPos = 9)) and (Copy(cNumero, iPos - 2, 3) <> '000') then cTexto := cTexto + aTexto[5, 0]; if (iPos = 6) then if (Copy(cNumero, 1, 6) = '000001') then cTexto := cTexto + aTexto[5, 1] else cTexto := cTexto + aTexto[5, 2]; end; (****************************) (* Traducir Dígito -Decena- *) (****************************) procedure NumLetra_Decena; begin if (cNumero[iPos] = '0') then Exit else if (cNumero[iPos + 1] = '0') then cTexto := cTexto + aTexto[2, StrToInt(cNumero[iPos]) - 1] else if (cNumero[iPos] = '1') then cTexto := cTexto + aTexto[1, StrToInt(cNumero[iPos + 1]) - 1] else if (cNumero[iPos] = '2') then cTexto := cTexto + aTexto[2, 9] else cTexto := cTexto + aTexto[2, StrToInt(cNumero[iPos]) - 1] + aTexto[5, 4]; end; (*****************************) (* Traducir Dígito -Centena- *) (*****************************) procedure NumLetra_Centena; var iPos2: Smallint; begin if (cNumero[iPos] = '0') then Exit; iPos2 := 4 - Ord(iPos > 6); if (cNumero[iPos] = '1') and (Copy(cNumero, iPos + 1, 2) <> '00') then cTexto := cTexto + aTexto[iPos2, 9] else cTexto := cTexto + aTexto[iPos2, StrToInt(cNumero[iPos]) - 1]; end; (**************************************) (* Eliminar Blancos previos a guiones *) (**************************************) procedure NumLetra_BorBla; var i: Smallint; begin i := Pos(' -', cTexto); while (i > 0) do begin Delete(cTexto, i, 1); i := Pos(' -', cTexto); end; end; begin (* Control de Argumentos *) if (mNum < 0.00) or (mNum > 999999999999.99) or (iIdioma < 1) or (iIdioma > 2) or (iModo < 1) or (iModo > 2) then begin Result := 'ERROR EN ARGUMENTOS'; Abort; end; (* Cargar Textos según Idioma / Modo *) NumLetra_CarTxt; (* Bucle Exterior -Tratamiento Céntimos- *) (* NOTA: Se redondea a dos dígitos decimales *) cNumero := Trim(Format('%12.0f', [Int(mNum)])); cNumero := StringOfChar('0', 12 - Length(cNumero)) + cNumero; iCentimos := Trunc((Frac(mNum) * 100) + 0.5); repeat (* Detectar existencia de Céntimos *) if (iCentimos <> 0) then bHayCentimos := True else bHayCentimos := False; (* Bucle Interior -Traducción- *) bHaySigni := False; for iPos := 1 to 12 do begin (* Control existencia Dígito significativo *) if not(bHaySigni) and (cNumero[iPos] = '0') then Continue else bHaySigni := True; (* Detectar Tipo de Dígito *) case ((iPos - 1) mod 3) of 0: NumLetra_Centena; 1: NumLetra_Decena; 2: NumLetra_Unidad; end; end; (* Detectar caso 0 *) if (cTexto = '') then cTexto := aTexto[5, 3]; (* Traducir Céntimos -si procede- *) if (iCentimos <> 0) then begin cTexto := cTexto + aTexto[5, 7]; cNumero := Trim(Format('%.12d', [iCentimos])); iCentimos := 0; end; until not (bHayCentimos); (* Eliminar Blancos innecesarios -sólo Catalán- *) if (iIdioma = 2) then NumLetra_BorBla; (* Retornar Resultado *) Result := Trim(cTexto); end; Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
|
#3
|
|||
|
|||
|
Cita:
Saludos Y disculpen la lata es que soy un poco novato en esto Jmedina |
|
#4
|
||||
|
||||
|
Si no sabes cuando lo necesitas, entonces es que NO lo necesitas
![]() que tal en el evento OnExit de la cajita que tiene el número? que tal en el OnKey Pressed ? Saludos |
|
#5
|
|||
|
|||
|
In en el form de impresion (QReport)... como lo uso??
Saludos! Lion |
|
#6
|
||||
|
||||
|
Usa el evento BeforePrint del campo que quieres modificar.
|
|
#7
|
|||
|
|||
|
Intenté usar el componente ATexto en el reporte (QReport).
En el evento BeforePrint, intenté tomar la expresion que tengo como resultado de una suma y poner dicho valor en letras, en un label de reporte. Pero no se puede. No se como levantar el resultado que arroja la expresion. Si utilizo la propiedad .value o .caption me da la expresion de sum (SUM bla bla bla). Alguien me puede decir como imprimo esto? Muchas gracias! Lion PD: como se instala el componente ATexto en Delphi 6 ? |
|
#8
|
||||
|
||||
|
Cita:
Saludos
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|