Fórum MaskEdit. #356910
09/04/2008
0
Tenho uma MaskEdit1 !AAA\-AAA\-AAA\-AAAA;0; = ___-___-___-____
Alguem sabe um modo pra quando eu digitar o ultimo numero, automaticamente da um Enter, zera o campo e vai para primeira linha!?
O programa funcionar quando digitar um caracter por vez, mas quando insiro os 13 caracteres (tipo um leitor optico) de uma vez só ele nao retorna pra o inicio do Maskedit1.
Obrigado
Rogerio
Rogerioduarte
Curtir tópico
+ 0Posts
09/04/2008
Du_nirvana
IF Length(MaskEdit1.Text) = 13 THEN
BEGIN
Edit1.Text := MaskEdit1.Text;
MaskEdit1.Text := ´´;
Edit1.SetFocus;
END;
Gostei + 0
09/04/2008
Rogerioduarte
Eu vou digitando numero por numero e quando chega no 13º caracter o meu evento de onChange dispara um comando pra dar um Submit no conteudo da MaskEdit.
Ate ai tudo bem, tranquilo....
o q acontece é q eu dou um MaskEdit1.Clear e se eu der um CTRL+V com um conteudo, ele BUGA minha MaskEdit.
por exemplo: A MaskEdit fica limpa porem se eu digitar o numero um a um de novo a mascara nao funciona e nenhum caracter saí.
Na logica, ele conta 13 caracteres e limpa minha MaskEdit pois eu mandei dar um clear, a pergunta é:
POr que quando dou um CTRL+V ele cola o codigo, limpa como mandei e digito os numeros um a um e os numeros nao saem
ps.: o Bug acontece só com CTRL+V.
Vlw
Rogerio
Gostei + 0
09/04/2008
Du_nirvana
Gostei + 0
09/04/2008
Rogerioduarte
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask;
type
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;
procedure MaskEdit1Change(Sender: TObject);
private
{ Private declarations }
procedure makeFocus;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.makeFocus;
var x: string;
begin
x := MaskEdit1.Text;
MaskEdit1.Clear;
end;
function TrimChar(texto: string; delchar: char): string;
var
S: string;
begin
S := texto;
while Pos(delchar,S) > 0 do
Delete(S,Pos(delchar,S),1);
Result := S;
end;
procedure TForm1.MaskEdit1Change(Sender: TObject);
var temp:string;
begin
temp := TrimChar(MaskEdit1.Text,#45);
temp := TrimChar(MaskEdit1.Text,32);
//showmessage(MaskEdit1.Text);
if(Length(temp)=13) then
begin
makeFocus;
end;
end;
Gostei + 0
15/04/2008
Du_nirvana
procedure TForm1.makeFocus;
begin
Edit1.Text := MaskEdit1.Text;
MaskEdit1.Clear;
MaskEdit1.SelStart := 0; //<------ aqui !
end;
function TForm1.TrimChar(texto: string; delchar: char): string;
var
S: string;
begin
S := texto;
while Pos(delchar,S) > 0 do
Delete(S,Pos(delchar,S),1);
Result := S;
end;
procedure TForm1.MaskEdit1Change(Sender: TObject);
var temp:string;
begin
temp := TrimChar(MaskEdit1.Text,#45);
temp := TrimChar(MaskEdit1.Text,32);
//showmessage(MaskEdit1.Text);
if(Length(temp)=13) then
begin
makeFocus;
end;
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)