Ver Mensaje Individual
  #7  
Antiguo 27-02-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Reputación: 16
krlox31416 Va por buen camino
tambien te puedes chacar la función del amigo contraveneno

Puedes checar en los foros hay vartias rutinas que hacen lo que pides...
Ahora bien para evitarte de lios bajate el componente Atexto...

Yo tambien hace tiempo tenia el mismo problema...
y primero lo que hice fue entender el codigo de la funcion que me paso contraveneno...

despues la implemente... pero mi problema seguia ya que no sabia como mandar llamar su función...

Hasta ese momento todo ok´s pero despues me faltaba validar que en el edit que queria convertir numeros a latras en vez de punto decimal validart que cambie el punto decimal por una coma eso tambien lo encontre con otra función que baje y modifique...

aunque parece dificil en realidad es facil viendolo desde el punto de vita que no programes...

pero debes checar por lo menos que se intenta hacer con el codigo...

te paso la función del amigo contraveneno... aclaro que esa función la creeo él

Código Delphi [-]
´
unit Unit6;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons, Mask, Grids, DBGrids;
type
  TForm6 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label3: TLabel;
    Bevel1: TBevel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    Bevel2: TBevel;
    Bevel3: TBevel;
    StatusBar1: TStatusBar;
    Label8: TLabel;
    Label9: TLabel;
    BitBtn6: TBitBtn;
    Timer1: TTimer;
    DBGrid1: TDBGrid;
    procedure Timer1Timer(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form6: TForm6;
  costo: extended;/// esto variable ya la ocupo para otras cosas... no es parte de la función
  mensaje:integer;///esto variable ya la ocupo para otras cosas... no es 
  cos: integer;///esto variable ya la ocupo para otras cosas... no es 
////////////////////todas las variables que siguen abajo son de la función
  i, MonNal: integer;
  Cantidad, Centavos: Currency;
  BloqueCero, NumeroBloques, Digito: Byte;
  PrimerDigito, SegundoDigito, TercerDigito: Byte;
  Resultado, Temp, strCentavos, Bloque: String;
  Unidades: Array[0..28] of String;
  Decenas: Array[0..8] of String;
  Centenas: Array[0..8] of String;
  Function CantidadEnLetra(curCantidad: Currency; MonNal: integer): String;// la funcion la declaro aqui porque la mando llamar en otra forma eso es opcional si tu quieres o la puedes mandar llamar en tu misma forma
  implementation
uses Unit2, Unit3;
{$R *.dfm}
Function CantidadEnLetra(curCantidad: Currency; MonNal: integer): String;
     begin
Unidades[0] := 'UN'; Unidades[1] := 'DOS'; Unidades[2] := 'TRES'; Unidades[3] := 'CUATRO';
Unidades[4] := 'CINCO'; Unidades[5] := 'SEIS'; Unidades[6] := 'SIETE'; Unidades[7] := 'OCHO';
Unidades[8] := 'NUEVE'; Unidades[9] := 'DIEZ'; Unidades[10] := 'ONCE'; Unidades[11] := 'DOCE';
Unidades[12] := 'TRECE'; Unidades[13] := 'CATORCE'; Unidades[14] := 'QUINCE'; Unidades[15] := 'DIESISEIS';
Unidades[16] := 'DIESISIETE'; Unidades[17] := 'DIESIOCHO'; Unidades[18] := 'DIESINUEVE';
Unidades[19] := 'VEINTE'; Unidades[20] := 'VEINTIUNO'; Unidades[21] := 'VEINTIDOS';
Unidades[22] := 'VEINTITRES'; Unidades[23] := 'VEINTICUATRO'; Unidades[24] := 'VEINTICINCO';
Unidades[25] := 'VEINTISEIS'; Unidades[26] := 'VEINTISIETE'; Unidades[27] := 'VEINTIOCHO'; Unidades[28] := 'VEINTINUEVE';
Decenas[0] := 'DIEZ'; Decenas[1] := 'VEINTE'; Decenas[2] := 'TREINTA'; Decenas[3] := 'CUARENTA';
Decenas[4] := 'CINCUENTA'; Decenas[5] := 'SESENTA'; Decenas[6] := 'SETENTA'; Decenas[7] := 'OCHENTA'; Decenas[8] := 'NOVENTA';
Centenas[0] := 'CIENTO'; Centenas[1] := 'DOSCIENTOS'; Centenas[2] := 'TRESCIENTOS'; Centenas[3] := 'CUATROCIENTOS';
Centenas[4] := 'QUINIENTOS'; Centenas[5] := 'SEISCIENTOS'; Centenas[6] := 'SETECIENTOS'; Centenas[7] := 'OCHOCIENTOS'; Centenas[8] := 'NOVECIENTOS';
Cantidad := Trunc(curCantidad);
Centavos := (curCantidad - Cantidad) * 100;
NumeroBloques := 1;
Repeat
 PrimerDigito := 0;
 SegundoDigito := 0;
 TercerDigito := 0;
 Bloque := '';
 BloqueCero := 0;
 For i := 1 To 3 do
        begin
        Digito := Round(Cantidad) Mod 10;
        If Digito <> 0 Then
        begin
               Case i of 1:
                            begin
                            Bloque := ' ' + Unidades[Digito - 1];
                            PrimerDigito := Digito;
                            end;
                         2:
                            begin
                            If Digito <= 2 Then
                            begin
                            Bloque := ' ' + Unidades[(Digito * 10 + PrimerDigito - 1)];
                            end
                               Else
                                   begin
                                   If PrimerDigito <> 0 then
                                      Temp := ' Y'
                                      else
                                      Temp := '';
                                      Bloque := ' ' + Decenas[Digito - 1] + Temp + Bloque;
                                      End;
                               SegundoDigito := Digito;
                            end;
                         3:
                            begin
                            If (Digito = 1) and (PrimerDigito = 0) and (SegundoDigito = 0) then
                                Temp := 'CIEN'
                                else Temp := Centenas[Digito-1];
                                Bloque := ' ' + Temp + Bloque;
                                TercerDigito := Digito;
                                end;
               End;
        end
        Else
        begin
        BloqueCero := BloqueCero + 1;
        End;
        Cantidad := Int(Cantidad / 10);
        If Cantidad = 0 Then
           begin
           Break;
           End;
           end;
Case NumeroBloques of 1:
                         Resultado := Bloque;
                      2:
                         begin
                         if BloqueCero = 3 then
                        Temp := ''
                         else
                         Temp := ' MIL';
                                 Resultado := Bloque + Temp + Resultado;
                          end;
                       3:
                          begin
                          If (PrimerDigito = 1) and (SegundoDigito = 0) and (TercerDigito = 0) then
                             Temp := ' MILLON'
                             else
                                 Temp := ' MILLONES';
                                 Resultado := Bloque + Temp + Resultado;
                          end;
                End;
                NumeroBloques := NumeroBloques + 1;
                Until Cantidad = 0;
                        case MonNal of 0: begin
                                          If curCantidad > 1 then
                                          Temp := ' CENTAVOS ' else Temp := ' CENTAVO ';
                                          CantidadEnLetra := Resultado + Temp;
                                          end;
                                       1: begin
                                          If curCantidad > 1 then
                                             Temp := ' PESOS '
                                             else
                                                 Temp := ' PESO ';
                                                 if Centavos=0 then
                                                    strCentavos := ''
                                                    else
                                                        strCentavos := 'CON '+CantidadEnLetra(Centavos, 0);
                                                        CantidadEnLetra := Resultado + Temp + strCentavos;
                                          end;
                                       2: begin
                                          If curCantidad > 1 then
                                             Temp := ' DLLS '
                                             else
                                                 Temp := ' DOLAR ';
                                                 if Centavos=0 then strCentavos := '' else strCentavos := 'CON '+CantidadEnLetra(Centavos, 0);
                                                    CantidadEnLetra := Resultado + Temp + strCentavos;
                                                    end;
                                          end;
end;
/// ya puedes mandar llamar la función... ya sea en esta forma o en cualquiera...

Código Delphi [-]
 
solo recuerda que en tu edit valides que ponga comas en vez de punto decimal
ej: 123.56 por 123,56 y todo saldra ok's...
/// aqui la mandas llamar segun el componente y evento que quieras usar
var i: integer;
begin
i:=1;
Edit2.Text:= CantidadEnLetra(StrToFloat(Edit1.Text),i)
end;

saludos!!!...
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita