Está en la página 1de 11

14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Login

Mostrar menu

Curiosida e dúvida com inputbox


23/11/2012

bom galera, pegando carona do código daki do fórum fiz um inputbox


receber somente numeros, e aí que fica a dúvida o campo deve recer
numeros com virgulas pois se trata de valores e não consigo tratar este
problema,

1 procedure TFFinalizaPedido.SpeedButton5Click(Sender: TObject);


2 var
3 nomevar : String;
4 N, C : Integer;
5 begin
6 if CheckBox1.Checked then
7 begin
8 nomevar := inputbox('Desconto dado em porcentagem','Digite um v
9 val (nomevar , N, C);
10 if c = 0 then
11 begin
12 Showmessage('Funcionando! vc te numeros');
13 end

a outra dúvida é quando executa o inputbox as telas anteriores


desaparecem no momento de sua execussão, isso deixa a tela mais limpa,
teria como rerproduzir este mesmo efeito com form comuns ?.. tipo.tenho
cadastro de clientes, chamo uma busca esta busca esta em outro form, no
momento da busca somente ela aparece e o cadastro de clientes só
reapareceria depois de fechar a busca, será que tem como fazer algo
assim ??

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 1/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Delphi Login

Gigatel

RESPOSTAS

24/11/2012

 Marco Salles

Hummm

e este código funciona ???

Acho que vc so pode fazer isto tratando o InpuTbox

RESPONDER CITAR

Melhor Resposta +0

24/11/2012

 Gigatel

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 2/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Login
Hummm

e este código funciona ???

Acho que vc so pode fazer isto tratando o InpuTbox


Ler Mais...

Bom, do jeito que está agora ele recebe somente numeros, tipo 1, 20 ,100
más não 1,20 0,50 a virgula não dá certo pensei adptar este codigo..

1 if not (Key in['0'..'9',Chr(8),Chr(13),',','.']) then Key:= #0;

más o codigo acima só funciona o eveno onkeypress.o que dificulta um


pouco a coisa..

RESPONDER CITAR

Melhor Resposta +0

24/11/2012

 Gigatel

[quote]Hummm

e este código funciona ???

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 3/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Ler Mais...
Login

Bom, do jeito que está agora ele recebe somente numeros, tipo 1, 20 ,100
más não 1,20 0,50 a virgula não dá certo pensei adptar este codigo..

1 if not (Key in['0'..'9',Chr(8),Chr(13),',','.']) then Key:= #0;

más o codigo acima só funciona o eveno onkeypress.o que dificulta um


pouco a coisa..[/quote]

pera.. ficou estranho.. numeros do tipo 1 e 20 e 100. numeros inteiros..

RESPONDER CITAR

Melhor Resposta +0

24/11/2012

 Gigatel

Algum usuário de outro fórum estava com o mesmo problema e um dos


administradores passou uma idéia qye deu para adptar no meu sistema, e
ficou assim..

1 if InputQuery('Desconto dado em porcentagem','Digite um valor',nomeva


2 begin
3 Try
4 StrToFloat(nomevar);
5 Except
6 raise Exception.Create('Permitido somente números!');
7 end;
8 if StrToInt(nomevar) > 100 then
https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 4/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

9 begin
10 Showmessage('Valor não permitido para esta operção! inserir va
Login
11 end
12 else
13 Begin
14 RecPorcent := StrToFloat(Edit5.Text)* StrToFloat(nomevar)/100

Só ficou a dúvida mesmo do efeito que o inputbox faz nos form´s que faz
desaparecer dando uma cara mais limpa no sistema..más está
fincionando..

vlw..

RESPONDER CITAR

Melhor Resposta +0

24/11/2012

 Marco Salles

Amigo Gigatel , vc pode pode sim utilizar o evento OnKeyPress no edit do


Formulário do ImputBox

Para isto vai ter que utilizar Mensagens do Windows

Funciona assim

Declare a constante abaixo da secção Uses do seu Form

Const

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 5/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

InputBoxMsg = WM_USER + 123;


Login

na secção Private do seu form declare dois métodos

procedure InputBoxSet(var Msg: TMessage); message InputBoxMsg;


procedure SoNumeros(Sender: TObject; var Key: Char);

De Cntrl+C para o Delphi implementar o Cabeçalho desses dois métodos e


escreva

1 procedure TSEUFORM.InputBoxSet(var Msg: TMessage);


2 var
3 i: integer;
4 begin
5 for i:=0 to pred(Screen.Forms[0].ControlCount) do
6 begin
7 if Screen.Forms[0].Controls[i] is TEdit then
8 begin
9 Tedit(Screen.Forms[0].Controls[i]).OnKeyPress:=SoNumeros;
10 end;
11 end;
12 end;

1 procedure TForm3.SoNumeros(Sender: TObject; var Key: Char);


2 begin
3 if not (CharInSet(Key,['0'..'9',FormatSettings.DecimalSeparator,#8]))
4 key:=#0;
5
6 if (pos(FormatSettings.DecimalSeparator,Tedit(sender).Text) > 0)and
7 (not (CharInSet(Key,['0'..'9',#8]))) then
8 Key:=#0;
9 end;

Agora seu ImputBpx estará preparado para Aceitar Numeros do tipo


Currency
Para Utiliza-lo é necessário enviar a mensagem Assincrona para ser
processada com retardo

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 6/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Faça assim
Login

1 PostMessage(Handle, InputBoxMsg, 0, 0);


2 nomevar := inputbox('Desconto dado em porcentagem','Digite um valor','

[]sds e um abraõ amigo

RESPONDER CITAR

Melhor Resposta +0

21/04/2013

 Murilo Braga

Amigo Gigatel , vc pode pode sim utilizar o evento


OnKeyPress no edit do Formulário do ImputBox

Para isto vai ter que utilizar Mensagens do Windows

Ler Mais...

Então amigo, fiquei bem interessado pelo código que você citou, só que o
delphi não ta reconhecendo "FormatSettings.DecimalSeparator" =/

RESPONDER CITAR

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 7/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Melhor Resposta +0
Login

21/04/2013

 Marco Salles

Qual delphi vc utiliza ??

RESPONDER CITAR

Melhor Resposta +0

21/04/2013

 Murilo Braga

Qual delphi vc utiliza ??

Utilizo o Delphi 2010

RESPONDER CITAR

Melhor Resposta +0

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 8/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Login

22/04/2013

 Marco Salles

[quote]Qual delphi vc utiliza ??

Utilizo o Delphi 2010[/quote]

tente declarar a uses

SysUtils

[]sds

RESPONDER CITAR

Melhor Resposta +0

26/04/2013

 Murilo Braga

[quote][quote]Qual delphi vc utiliza ??

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 9/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

Login

Utilizo o Delphi 2010[/quote]

tente declarar a uses

SysUtils

[]sds[/quote]

Já está declarada lá ;s

RESPONDER CITAR

Melhor Resposta +0

Buscar

Clique aqui para fazer login e interagir na Comunidade :)

Plataforma para Programadores

Comunidade

Revistas

Baixe o App

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 10/11
14/09/2018 Curiosida e dúvida com inputbox - Fórum DevMedia

APIs

Login
Fale conosco

Assinatura Empresarial

Hospedagem web por Porta 80 Web Hosting

https://www.devmedia.com.br/forum/curiosida-e-duvida-com-inputbox/429607 11/11

También podría gustarte