Olá galera, nesta Quick Tips, irei mostra a diferença entre duas mensagens muitos comuns em Delphi InputQuery e InputBox. Podemos encontrar estas duas functions em Dialogs.
O que é InputBox ?
InputBox é uma mensagem onde podemos informar um determinado valor, mas sem alterar o valor da variável passada como referencia, veja sua estrutura :
//Função InputBox
function InputBox(const ACaption, APrompt, ADefault: string): string;
O que é InputQuery ?
InputQuery é uma mensagem onde podemos informar um determinado valor, mas alterando o valor da variável passada como referencia, veja sua estrutura :
//Função InputQuery
function InputQuery(const ACaption, APrompt: string;
var Value: string): Boolean;
Aparentemente os dois são iguais certo? Sim são iguais, mas uma diferença é a seguinte, quando implementamos o seguinte código no clique de um botão:
procedure TForm1.BitBtn2Click(Sender: TObject);
Var
StrX : String;
begin
StrX := '10';
InputBox('Titulo','descricao', StrX);
ShowMessage(StrX);
InputQuery('Titulo','descricao', StrX);
ShowMessage(StrX);
end;
Notaremos que ao exibir a mensagem com o valor 10 na caixa de texto, se mudarmos o seu valor para 5 por exemplo, o primeiro ShowMessage irá exibir o valor de StrX, no caso 10, já quando formos exibir a mensagem com InputQuery, se mudarmos o valor da caixa de texto o segundo ShowMessage irá exibir o valor alterado, como isso é possível ? Atraves da passagem de parâmetros por referencia, onde ao alterar o conteúdo de um parâmetro o externo também é alterado.
A única necessidade que temos de usar a principio de um InputQuery para o InputBox, seria se fosse necessário pegar o conteúdo informado pelo usuário, caso contrário poderíamos usar os dois sem diferença alguma.
Fico por aqui ate à próxima Quick Tips
Um abraço
Wesley Y