Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2007
Hell_Raiser Hell_Raiser is offline
Miembro
 
Registrado: jun 2004
Posts: 13
Poder: 0
Hell_Raiser Va por buen camino
texto de edit tipo currency

He buscado en el foro como limitar un edit a cierta cantidad de enteros un punto y cierta cantidad de decimales
por ejemplo "12345.00". Aqui la cantidad de enteros es de 5 caracteres, un solo punto, y dos caracteres para los decimales todo esto sin que el usuario final tenga la posibilidad de equivocarse, o sea que solo puede escribir el punto una sola vez, despues del punto solo puede escribir 2 caracteres y antes del punto solo puede escribir 5 caracteres. Y claro debe estar alineado a la derecha como toda cadena de tipo numerico. El codigo es una recopilacion del foro, no dudaria que ya existiera algun metodo para hacer esto sin batallar tanto.
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  i,decimales,enteros: integer;
  numEnteros,numDecimales:integer;
  cantidad:string;
begin
  //Aqui se definen la cantidad de enteros y decimales que se desean
  numEnteros:=5;
  numDecimales:=2;
  ///////////////

  cantidad:=(Sender as TEdit).Text;
  decimales:=-1;
  enteros:=1;

  if (not(key in ['0'..'9', #8, #9,'.'])) then
    key:=#0;

  for i:=1 to Length(cantidad) do
    begin
      enteros:=enteros+1;
      if (cantidad[i] = '.') then
      begin
        if (key = '.') then
          key:=#0;
        decimales:=decimales+1
      end;
      if decimales >= 0 then
        decimales:=decimales+1;
      if (decimales>numDecimales) and (not (key in[#8, #9])) then
        key:=#0;
      if (enteros>numEnteros) then
      begin
        if  (decimales<0) and (i=Length(cantidad)) then
        begin
          if not (key in[#8, #9, '.']) then
            key:=#0
        end;
      end;

    end;
end;
Aqui se valida en el evento onKeyPress de un TEdit, todos los caracteres validos y se especifican las cantidades, si se desea que algun otro edit tenga la misma funcionalidad solo es necesario agregarle al evento onKeyPress en el Object Inspector el evento onKeyPress del TEdit que tiene el codigo antes mencionado, para eso es la linea
Código Delphi [-]
cantidad:=(Sender as TEdit).Text;

Para mi caso en particular todos los edits de mi forma deben ser de este tipo por lo que todos deben tener el texto alineado a la derecha.
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
var obj:Tedit;
begin
  SysLocale.MiddleEast := true;
  for i:=1 to self.ComponentCount do
  begin
    if self.Components[i-1].ClassType = TEdit then
      obj:=self.Components[i-1] as TEdit;
      obj.BiDiMode := bdRightToLeft
  end;
end;

Pero para el caso en que no sea asi agrego el siguiente codigo solo es necesario nombrar al componente TEdit las primeras cuatro letras edit pero creo que es mejor modificarlo a sus necesidades.
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
var obj:Tedit;
begin
  SysLocale.MiddleEast := true;
  for i:=1 to self.ComponentCount do
  begin
    if (AnsiLeftStr(self.Components[i-1].Name,4)='Edit') then
      obj:=self.Components[i-1] as TEdit;
      obj.BiDiMode := bdRightToLeft
  end;
end;

Espero que esto les sea de utilidad y si conocen alguna manera mas sencilla o mas facil de hacerlo espero que me lo digan para saber como es que perdi mi tiempo.
Responder Con Cita
 



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


La franja horaria es GMT +2. Ahora son las 17:54:50.


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