inputbox somentes dados numéricos é possivel?

Delphi

11/10/2006

Olá pessoal, por acaso o inputbox tem proteção para dados numericos.
Exemplo: 100,58 somente aceitar números e não permitir dados do tipo string.

Abraços.


Fabiotb

Fabiotb

Curtidas 0

Respostas

Marco Salles

Marco Salles

11/10/2006

acho que não.. Mas voce pode criar uma janela que se comporta como inputQuery e adicionar esta caracteristica.... Outra saida mais simples é testar a saida e informar se é ou não é un numero válido


GOSTEI 0
Fabiotb

Fabiotb

11/10/2006

tipo, como se faz uma funcao q chama uma form e retornar o resultado da edit dessa form?

abracos


GOSTEI 0
Mahdak

Mahdak

11/10/2006

como nao tenho certeza, e creio que visualmente ao entrar com o valor voce nao possa fazer esse tipo de coisa com um inputbox, o que voce podeestar fazendo era tratar esses dados na saida, como por exemplo:


// Remove caracteres de uma string deixando apenas numeros
function RemoveChar(Const Texto:String):String;
var
I: integer;
S: string;
begin
S := ´´;
for I := 1 To Length(Texto) Do
begin
if (Texto[I] in [´0´..´9´]) then
begin
S := S + Copy(Texto, I, 1);
end;
end;
result := S;
end;

procedure TForm1.Button1Click(Sender: TObject);
var saida : string;
begin
    saida := inputbox(´validando saida´,´digite o valor:´,´´);
    Showmessage(removechar(saida));
end;


espero ter ajudado

abraços!


GOSTEI 0
Fabiotb

Fabiotb

11/10/2006

Pessoal, meu amigo Everton Mateus me ajudou a desenvolver a solução do nosso proprio inputbox.
Nós criamos uma form com nome frm_inputboxps usando uma label, um edit, e um radiogroup e um botao.
(nosso objetivo é tratar o tipo de dados na edit e retorna o mesmo).
Sendo que o radiogroup utilizamos para controlar o tipo de dados (double,string,inteiro). Sendo que no evento:
procedure Tfrm_inputbox.edKeyPress(Sender: TObject; var Key: Char);
begin
case RadioGroup1.ItemIndex of
0 : begin
if not (Key in[´0´..´9´,´,´,Chr(8),chr(13)]) then Key:= #0;
end;
1 : begin
if not (Key in[´a´..´z´,´A´..´Z´,Chr(32),´,´,Chr(8),chr(13)]) then Key:= 0;
end;
2 : begin
if not (Key in[´0´..´9´,Chr(8),chr(13)]) then Key:= 0;
end;
end;

nossa funçao ficou assim:

function inputboxps(mensagem:string;tipodados:integer):string;
begin
try
frm_inputbox:=tfrm_inputbox.create(Application);
frm_inputbox.RadioGroup1.ItemIndex:=tipodados;
frm_inputbox.lblmensagem.Caption:=mensagem;
frm_inputbox.showmodal;
result:=frm_inputbox.ed.Text;
finally
frm_inputbox.free;
end;
end;


Para usar a funcao basta criar uma variavel do tipo string veja abaixo:

Var_valor:=inputboxps(´Valor da Mensalidade:´,0);

Qualquer dúvida tamos ai.
Obrigado por todos que tentaram de alguma forma em me ajudar .

Fabio Correa


GOSTEI 0
POSTAR