Fórum Curiosida e dúvida com inputbox #429607
23/11/2012
0
procedure TFFinalizaPedido.SpeedButton5Click(Sender: TObject);
var
nomevar : String;
N, C : Integer;
begin
if CheckBox1.Checked then
begin
nomevar := inputbox('Desconto dado em porcentagem','Digite um valor','');
val (nomevar , N, C);
if c = 0 then
begin
Showmessage('Funcionando! vc te numeros');
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 ??
Gilmar Moraes
Curtir tópico
+ 0Posts
24/11/2012
Marco Salles
e este código funciona ???
Acho que vc so pode fazer isto tratando o InpuTbox
Gostei + 0
24/11/2012
Gilmar Moraes
e este código funciona ???
Acho que vc so pode fazer isto tratando o InpuTbox
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..
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..
Gostei + 0
24/11/2012
Gilmar Moraes
e este código funciona ???
Acho que vc so pode fazer isto tratando o InpuTbox
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..
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..
pera.. ficou estranho.. numeros do tipo 1 e 20 e 100. numeros inteiros..
Gostei + 0
24/11/2012
Gilmar Moraes
if InputQuery('Desconto dado em porcentagem','Digite um valor',nomevar)then
begin
Try
StrToFloat(nomevar);
Except
raise Exception.Create('Permitido somente números!');
end;
if StrToInt(nomevar) > 100 then
begin
Showmessage('Valor não permitido para esta operção! inserir valores abaixo de 100.');
end
else
Begin
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..
Gostei + 0
24/11/2012
Marco Salles
Para isto vai ter que utilizar Mensagens do Windows
Funciona assim
Declare a constante abaixo da secção Uses do seu Form
Const
InputBoxMsg = WM_USER + 123;
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
procedure TSEUFORM.InputBoxSet(var Msg: TMessage);
var
i: integer;
begin
for i:=0 to pred(Screen.Forms[0].ControlCount) do
begin
if Screen.Forms[0].Controls[i] is TEdit then
begin
Tedit(Screen.Forms[0].Controls[i]).OnKeyPress:=SoNumeros;
end;
end;
end;
procedure TForm3.SoNumeros(Sender: TObject; var Key: Char);
begin
if not (CharInSet(Key,['0'..'9',FormatSettings.DecimalSeparator,#8])) then
key:=#0;
if (pos(FormatSettings.DecimalSeparator,Tedit(sender).Text) > 0)and
(not (CharInSet(Key,['0'..'9',#8]))) then
Key:=#0;
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
Faça assim
PostMessage(Handle, InputBoxMsg, 0, 0);
nomevar := inputbox('Desconto dado em porcentagem','Digite um valor','');[]sds e um abraõ amigo
Gostei + 0
21/04/2013
Murilo Braga
Para isto vai ter que utilizar Mensagens do Windows
Funciona assim
Declare a constante abaixo da secção Uses do seu Form
Const
InputBoxMsg = WM_USER + 123;
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
procedure TSEUFORM.InputBoxSet(var Msg: TMessage);
var
i: integer;
begin
for i:=0 to pred(Screen.Forms[0].ControlCount) do
begin
if Screen.Forms[0].Controls[i] is TEdit then
begin
Tedit(Screen.Forms[0].Controls[i]).OnKeyPress:=SoNumeros;
end;
end;
end;
procedure TForm3.SoNumeros(Sender: TObject; var Key: Char);
begin
if not (CharInSet(Key,['0'..'9',FormatSettings.DecimalSeparator,#8])) then
key:=#0;
if (pos(FormatSettings.DecimalSeparator,Tedit(sender).Text) > 0)and
(not (CharInSet(Key,['0'..'9',#8]))) then
Key:=#0;
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
Faça assim
PostMessage(Handle, InputBoxMsg, 0, 0);
nomevar := inputbox('Desconto dado em porcentagem','Digite um valor','');[]sds e um abraõ amigo
Então amigo, fiquei bem interessado pelo código que você citou, só que o delphi não ta reconhecendo "FormatSettings.DecimalSeparator" =/
Gostei + 0
21/04/2013
Marco Salles
Gostei + 0
21/04/2013
Murilo Braga
Utilizo o Delphi 2010
Gostei + 0
22/04/2013
Marco Salles
Utilizo o Delphi 2010
tente declarar a uses
SysUtils
[]sds
Gostei + 0
26/04/2013
Murilo Braga
Utilizo o Delphi 2010
tente declarar a uses
SysUtils
[]sds
Já está declarada lá ;s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)