Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
TMaskedit, con posibles excepciones en el formato

Buenas,

estoy utilizando un maskedit para almacenar un telefono. El mismo se almacenará siguiendo el siguiente formato:
+34 98.587.21.25
El problema es que ahora me han pedido que sea posible indicar más de un número de teléfono, en la forma:
+34 98.587.21.25/58
es decir, únicamente cambian las ultimas cifras del número.

¿Es posible crear una excepción en el formato de manera que si se quiere introducir más de un teléfono se pueda escribir el "/58" al final del número?.
He buscado en los foros y no he encontrado nada parecido, no sé si se podrá hacer.

Espero haberme explicado.

Un saludo y muchas gracias.
Responder Con Cita
  #2  
Antiguo 22-01-2008
Avatar de elcolo83
elcolo83 elcolo83 is offline
Miembro
 
Registrado: feb 2007
Ubicación: Argentina
Posts: 65
Poder: 18
elcolo83 Va por buen camino
Lo que podrias hacer es modificar la mascara, por ejemplo asi: (agrega esto en el evento OnKeyPress del TEditMask)

Advertencia: la mascara que estoy usando es '!\+99 00.000.00.00;1;_' supongo que debes tener algo asi en la mascara.


Código Delphi [-]
procedure TForm1.EditMask1KeyPress(Sender: TObject; var Key: Char);
var s, t: String;
begin
if key='/' then
  with TMaskEdit(Sender) do
    begin
      t:= Text;
      s:= EditMask;
      Delete(S, Length(s)-3, 4);
      EditMask:= S+'\/00;1;_';
      Text:= t;
      SelStart:= Length(Text)-2;
    end;
end;

eso si, si el usuario precionara '/' antes de completar el resto de los campos obligatorios lanzara el error de que faltan completar campos como ya sabemos.
Responder Con Cita
  #3  
Antiguo 23-01-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Es una solución que me puede servir....

Muchas gracias.
Responder Con Cita
  #4  
Antiguo 31-01-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Hola a todos,

finalmente he dejado la máscara de la siguiente forma:

!+34 99.999.99.99ccc;1;_

De esta manera con las 'c' en la máscara consigo tener 3 caracteres opcionales al final del teléfono.
Mi problema ahora es que al obtener el dato de base de datos y visualizarlo en la máscara se visualiza bien, pero no me deja editar esos 3 caracteres opcionales. Lo que hago es lo siguiente:

MaskEdit1.EditText:=Telefono

siendo Telefono una variable que contiene por ejemplo: '+34 98.511.47.58'

El texto lo captura bien, pero no me deja editar más allá del 58, es decir, es como si los 3 caracteres opcionales no existieran.....

¿Estoy haciendo algo mal?...

Un saludo y gracias.
Responder Con Cita
  #5  
Antiguo 31-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Probá con esto:

Código Delphi [-]
if length(Telefono) = length('+34 99.999.99.99') then
  MaskEdit1.EditText := Telefono + '   '
else
  MaskEdit1.EditText := Telefono;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 31-01-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Gracias por tu respuesta tan rápida,

me pasa una cosa muy extraña, al obtener el valor de base de datos con

Código:
 MaskEdit1.EditText:=Telefono
es como si perdiese la máscara, es decir, se comporta como un Edit normal, no sigue el patrón que yo le digo en la máscara, puedo borrar caracteres e insertarlos como yo quiera, sin seguir la máscara indicada en el control. Sin embargo si no inicializo el maskedit a ningún valor sí que muestra bien la máscara y la sigue perfectamente....

No sé si me he explicado bien. ¿Existe alguna propiedad en el MaskEdit que se me escape?, ¿al hacer el EditText es posible que pierda la máscara?....

Muchas gracias de nuevo.
Responder Con Cita
  #7  
Antiguo 31-01-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Ya encontré el problema,

efectivamente al obtener el texto de la base de datos hay que completar dicho texto con espacios en blanco hasta completar el número de caracteres totales de la máscara haciendo algo parecido a:

Código:
MaskEdit1.Text := TextodeBD + Blancos
siendo "Blancos" un texto que contiene tantos espacios en blanco como caracteres le faltan al texto de la base de datos hasta completar el número de caracteres totales de la máscara.

Gracias a todos por vuestra colaboración.

Un saludo.
Responder Con Cita
Respuesta



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
problemas con TMaskEdit squenda OOP 2 21-05-2008 20:23:38
Resultados posibles al insertar en edit Colgueit Conexión con bases de datos 4 04-12-2006 18:57:49
lista de todas las posibles excepciones maruenda Varios 1 06-12-2004 22:31:02
Manejar Excepcion al Salir de un tMaskEdit Jvilomar OOP 0 26-06-2004 14:43:13
Alinear texto en TEdit y TMaskEdit mrmanuel Varios 11 17-03-2004 18:04:24


La franja horaria es GMT +2. Ahora son las 12:24:29.


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