Zolhos Postado Outubro 27, 2004 Denunciar Share Postado Outubro 27, 2004 negócio é o seguintecomo eu faço pra deixar o cara só digitar números num maskedit?OUcomo eu faço pra na hora qo cara aperte um botão ele verifique se só tem número lá? eu lembro que no VB a gente usava ISNUMERIC(nomeDoTxt)outra coisa:como definir o número de casas decimais máximo como 2 números depois da vírgula?eu sei que isso parece tosko e fácilmas ainda sou meio novo em delphi....obrigado pela ajudaestou aprendendo MUITO com esse fórum Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Outubro 27, 2004 Denunciar Share Postado Outubro 27, 2004 caraSomente numero no Editprocedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);var cValor : Char;beginif ( Key in ['.',','] ) then begin Key := #44; if Pos(Key,cValor) <> 0 then Begin Beep; Key := #0; End; End; if not ( Key in ['0','1','2','3','4','5','6','7','8','9',',',#8,#7] ) then Begin Beep; Key := #0; End;end;Para permitir somente numero no edit é o seguinte: Edit1.text := FormatFloat('0.00',valor);Onde valor é a variavel com o valor correspondenteAlexandre Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Zolhos Postado Outubro 28, 2004 Autor Denunciar Share Postado Outubro 28, 2004 nossa valeu!olha como eu adaptei os seus códigos: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var cValor : Char; begin if ( Key in ['.',','] ) then begin Key := #44; if Pos(Key,cValor) <> 0 then Begin Beep; Key := #0; End; End; if not ( Key in ['0','1','2','3','4','5','6','7','8','9',',',#8,#7] ) then Begin Beep; Key := #0; End; end; procedure TForm1.Edit1Exit(Sender: TObject); begin valor := strToFloat(edit1.text); Edit1.text := FormatFloat('0.00',valor); end; declarei a variável valor LÁAAAAAAA encima da unit mas fiquei com uma dúvida o que seria CVALOR? não entendi essa parte... if Pos(Key,cValor) <> 0 then Begin Beep; Key := #0; além disso... eu tava pensando como impedir uma pessoa de digitar 2 vírgulas? daí eu fiz esse código mas parece q não deu muito certo... procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var cValor : Char; virgulas : integer; begin if ( Key in ['.',','] ) then begin if virgulas = 1 then begin key := #0; end else begin Key := #44; virgulas := 1; if Pos(Key,cValor) <> 0 then Begin Beep; Key := #0; End; End; end; if not ( Key in ['0','1','2','3','4','5','6','7','8','9',',',#8,#7] ) then Begin Beep; Key := #0; End; end; como poderia fazer?o que é o cvalor? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Outubro 28, 2004 Denunciar Share Postado Outubro 28, 2004 cara não testei mas acho que pode tirar isso, estou sem o delphi aki mas vou tentar te dar uma luz sobre a questão das virgulas.Tente colocar uma variavel para receber o numero de virgulas que existem em uma variavel que recebera o valor que esta no edit, você tera que fazer um algoritimo para verificar caracter por caracter e se for igual a uma "," a variavel virgula recebe +1 e quando a varialvel virgula for > 1 ele da uma mensagem ou faz o que você quiser muda esssa virgula por ponto sei la...Deu pra entender qualquer coisa posta aifalouAlexandre Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Outubro 28, 2004 Denunciar Share Postado Outubro 28, 2004 como relação as virgulas.Você pode fazer uma coisa bem simples (boba) .No OnKeyDown do Edit:procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=110) or (Key=188) then begin ShowMessage('Virgula Não Pode. HeHeHe!!! :)'); Edit1.Text := ''; end; end;Abs. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Outubro 28, 2004 Denunciar Share Postado Outubro 28, 2004 vivendo e aprendendo:foi isso q eu tinha feito, mas não deu certoprogramador:mas tem que permitir UMA vírgulae do jeito q você falou não vai poder nenhuma =C Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Outubro 28, 2004 Denunciar Share Postado Outubro 28, 2004 cara tenta assim entaumVar Virgula : Integer;begin virgula :=0; if (Key=110) or (Key=188) then begin virgula := 1; If Virugla >= 2 Then begin ShowMessage('Virgula Não Pode. HeHeHe!!! '); Edit1.Text := ''; end; end;end;não testei mas tenta ai e posta o resultadofalou Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Zolhos Postado Novembro 3, 2004 Autor Denunciar Share Postado Novembro 3, 2004 voltei a programar meu projeto =D (fomos classificados pra segunda fase =D)descobri o bugé q cada vez q você apertava a tecla de vírgula a variável "vírgula" recebia o valor zero novamente, então ela sempre zeravapra resolver o problema teriamos que declarar a variavel virgula no projeto (não no objeto) e teriamos que faze-la receber o valor "0" em outro lugar (form load por exemplo)axo q vo tentar outra maneira de fazer isso =PEDITfinalmente consegui!fiz assim: procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); var virgulas, tamanho, i : integer; letra : string; begin if ( Key in ['.',','] ) then begin i := 1; virgulas := 0; tamanho := length(edit2.text); if tamanho = 0 then begin key := #0; exit; end; while i <= tamanho do begin letra := (edit2.text[i]); if (letra = ',') or (letra = '.') then begin virgulas := virgulas + 1; end; i := i + 1; end; if virgulas > 0 then begin key := #0; end else begin key := #44; end end else begin if not ( Key in ['0','1','2','3','4','5','6','7','8','9',',',#8,#7] ) then begin Key := #0; end; end; end; mas... poxa... será q em TODO bendito maskedit q tiver no meu projeto vai ter que ter issoaí?vocês programadores, que sempre programaram a vida inteira, não sabem de nenhuma maneira mais fácil de deixar o usuário poder entrar apenas números que o delphi aceite como float?não acredito q vocês nunca fizeram isso =/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Artur -- Postado Março 27, 2008 Denunciar Share Postado Março 27, 2008 Aí cara....tenta isso....procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);beginif ((Key in ['0'..'9'] = False) and (Word(Key) <> VK_BACK)) thenKey := #0;end;pra mim deu certo !!!voltei a programar meu projeto =D (fomos classificados pra segunda fase =D)descobri o bugé q cada vez q você apertava a tecla de vírgula a variável "vírgula" recebia o valor zero novamente, então ela sempre zeravapra resolver o problema teriamos que declarar a variavel virgula no projeto (não no objeto) e teriamos que faze-la receber o valor "0" em outro lugar (form load por exemplo)axo q vo tentar outra maneira de fazer isso =PEDITfinalmente consegui!fiz assim:procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); var virgulas, tamanho, i : integer; letra : string; begin if ( Key in ['.',','] ) then begin i := 1; virgulas := 0; tamanho := length(edit2.text); if tamanho = 0 then begin key := #0; exit; end; while i <= tamanho do begin letra := (edit2.text[i]); if (letra = ',') or (letra = '.') then begin virgulas := virgulas + 1; end; i := i + 1; end; if virgulas > 0 then begin key := #0; end else begin key := #44; end end else begin if not ( Key in ['0','1','2','3','4','5','6','7','8','9',',',#8,#7] ) then begin Key := #0; end; end; end;mas... poxa... será q em TODO bendito maskedit q tiver no meu projeto vai ter que ter issoaí?vocês programadores, que sempre programaram a vida inteira, não sabem de nenhuma maneira mais fácil de deixar o usuário poder entrar apenas números que o delphi aceite como float?não acredito q vocês nunca fizeram isso =/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Zolhos
negócio é o seguinte
como eu faço pra deixar o cara só digitar números num maskedit?
OU
como eu faço pra na hora qo cara aperte um botão ele verifique se só tem número lá? eu lembro que no VB a gente usava ISNUMERIC(nomeDoTxt)
outra coisa:
como definir o número de casas decimais máximo como 2 números depois da vírgula?
eu sei que isso parece tosko e fácil
mas ainda sou meio novo em delphi....
obrigado pela ajuda
estou aprendendo MUITO com esse fórum
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.