Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Mascara & Edit (https://www.clubdelphi.com/foros/showthread.php?t=19796)

vtdeleon 27-03-2005 22:12:01

Mascara & Edit
 
Saludos,

Como puedo hace que un edit o maskedit tenga el formato $ 000,000.00?

Intente hacerlo con el Maskedit, pero no funciona adecuadamente ya que cuando quiero introducir 234.43 en el Maskedit sale $234,000.43 y lo que quiero es que salga $234.34 , que los digitos de miles no aparezcan.

Espero haber sido claro.

Grax.

vtdeleon 28-03-2005 01:23:34

Encontre la solucion en Rxlib (en la pagina de cadetill) con el Currencyedit.

Aun asi, me gustaria saber si existe otra manera de hacer esto

alfredosg19 28-03-2005 14:05:57

Difícil elección.
 
Hola, antes que nada decir que yo también tuve este problema, ufff y fue bastante complicado solucionarlo porque yo necesitaba que quedase lo más perfecto posible. Antes que nada deberías plantearte quienes serán los usuarios del programa, y para qué vas a utilizar el programa. Si el programa es para ti, o un amigo o algo puedes usar el Mask edit que es más fácil y rápido. Si pones en la máscara un 9 (no es obligatorio introducir un número sólo opcional
$999,000.99;1;
Y si es para algo profesional yo te recomiendo que utilices un Edit, pero te encontrarás con muchos problemas por el tema de la coma y del punto. Si sigues por este camino estaremos en contacto. ¡Suerte!.

vtdeleon 28-03-2005 16:28:07

Lo unico que se me ocurre es lo sgte (algo facil), pero no muy efectivo:

HAcer que edit solo acepte numeros y el punto, poner su propiedad selectall en true y en el evento onexit:
Código Delphi [-]
  if LeftStr(edit1.Text,1) <> '$' then
  begin
    edit1.Text:=FormatFloat('$##,##0.00',StrToFloat(edit1.Text));
  end;

alfredosg19 28-03-2005 20:52:29

Como lo hice yo.
 
Hola de nuevo, te explico como lo hice yo, me llevo mucho tiempo y puede que sea la mejor solución pero a mí me funciona perfectamente. Para empezar puse un Edit y en el Keypress puse los carácteres que se podrían introducir en el Edit, y si no son estos que se introduzca el #0 es decir el carácter null(nada). Hice una función que se llama Activacomas, para activar las comas o desactivarlas (no se pueden escribir dos comas dentro del mismo Edit, ni en el primer carácter).

Código:

procedure TfrmCanvi.edPagatKeyPress(Sender: TObject; var Key: Char);
 var a: integer;
 Begin
  If Activacomes=False then
        If Not (Key IN ['0'..'9',#8]) then
          key :=#0 ;
 
  If Activacomes=True then
        Begin
          If Not (Key IN ['0'..'9',#8,',']) then
                key := #0;
          If (Key=',') and (edPagat.Text='') then
                If Not (Key IN ['0'..'9',#8]) then
                  key :=#0 ;
        end;
 end;

La función activacomes es la siguiente:
Código:

function TfrmCanvi.Activacomes: Boolean;
 var
 I, cont: Integer;
 car, copia: String;
 begin
  cont:=0;
  copia:=edPagat.Text;
  For i:=1 to Length(copia) do
        Begin
          car:=copy(copia,i,1);
          if car=',' then
                cont:=cont+1;
        end;
 If Length(EdPagat.Text)>=5 then
  cont:=1;
 
 if cont>0 then
  result:=False
 else
  result:=True;
 end;

Claro ahora tu complicación está además en el tema del punto, pero supongo que lo podrás hacer igual que la coma. Bueno ya lo probarás y me dirás si te sirvió y si no ya inventaremos otra cosa.:D¡Suerte!.
Un saludo: Alfredo.

vtdeleon 29-03-2005 03:46:16

Saludos,

Antes que todo, Gracias alfredosg19 por tu interes:D .

Me parece ingeniosa esa forma (la utilizare en otro asuntillo que tengo;) ), pero el usuario tendria que introducir las comas el mismo.

Has visto el componetne CurrencyEdit de la LibRx?

En realidad me gustaria hacer ese!!.

Parece un edit normal, al momento de digitar numeros (1123) y salir del edit este comvierte los numeros en la moneda oficial ($RD1,123.00 Rep. Dom.) que tiene configurada mi pc. Cuando intento modificar el valor del edit, quita el formato que este contiene.

Una idea que me viene a la mente (:confused: pero no he usado y no se si se puede) es la de los comentarios de un hilo en la que un campo memo mostraba su data en un grid utilizando Canvas(no se utilizar mucho esto:().
Código Delphi [-]
procedure Tfrmcons.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
const
DX = 5;
DY =2;
var
Str:String;
begin
if(Column.Field is TMemoField) then begin
Str := TMemoField(Column.Field).AsString;
DBGrid1.Canvas.TextRect(Rect, Rect.Left + dx, Rect.Top + DY, Str);
end;
end;
Gracias

axelbb 04-05-2005 16:03:25

¿¿Pero cómo puede ser??
 
Yo tengo el mismo problema para ingresar un simple importe formato 9999999.99.
¿Como puede ser que Delphi no tenga una máscara o componente nativo decente para una función tan elemental, que cualquier lenguaje de bases de datos para DOS lo tenía??? Pensé que lo había y yo no podía encontrarlo (soy nuevito en Delphi), y buscando me encontré con mucha gente en la misma, y con soluciones complicadísimas... ¡¡para un CHOTO ingreso de importes!!!:mad:

vtdeleon 04-05-2005 18:34:19

Saludos
Como habia citado antes
Cita:

Empezado por vtdeleon
Encontre la solucion en Rxlib (en la pagina de cadetill) con el Currencyedit.

Es la unica solucion que he encotrado, y es muy buena.

axelbb 05-05-2005 18:15:25

De donde se baja?
 
Si, vi el comentario, pero no encontré la página. Leí otros comentarios acerca de la dificultad de instalarla. ¿Dónde puedo bajarla?
Gracias!:rolleyes:

axelbb 05-05-2005 18:55:36

Encontré una versión.
 
Encontré por ahí una versión, la instale OK, creo. Gracias!

vtdeleon 05-05-2005 21:07:53

Cita:

Empezado por axelbb
Si, vi el comentario, pero no encontré la página. Leí otros comentarios acerca de la dificultad de instalarla. ¿Dónde puedo bajarla?
Gracias!:rolleyes:

Buscan en www.torry.net

Crazyro 16-06-2005 13:00:28

Las RxLib, las puedes encontar en esta web, en la sección Componentes, en la tercera página lo puedes encontrar.

salu2.


La franja horaria es GMT +2. Ahora son las 00:56:06.

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