Comandos
Close
Fecha o formulário
Exit
Sai de um bloco begin... end
Exemplo:
if txtNumero1.Text = '' then
begin
txtNumero1.SetFocus
exit;
end;
Date: Mostra a data atual do sistema
Time: Mostra a hora atual do sistema
Para exibir tanto a data quanto a hora, você precisa utilizar funções de conversão, que estão detalhadas abaixo.
Se você não colocar o exit, e existir codificação abaixo do end, o delphi continuará executando as linhas abaixo do mesmo, podendo gerar erros.
Funções
As funções abaixo, são para conversão de string para número e vice-versa.
Quando você coloca Label, Edit no formulário, estes são String. Para efetuar um cálculo, há a necessidade de converter para número.
strToint: Converte uma string para número inteiro
Exemplo: Numero1:=strToint(txtNota1.Text);
intTostr: Converte um número inteiro para string
Exemplo: txtNota1.Text:=intTostr(Numero1);
floatTostr: Converte um número com ponto flutuante (aceita casas decimais) para string:
Exemplo: txtNota1.Text:=floatTostr(Nota1);
strTofloat: Converte uma string para número com ponto flutuante.
Exemplo: Nota1:=strTofloat(txtNota1.Text);
dateTostr: Converte uma data para string.
Exemplo: txtData.text := dateTostr(Date);
timeTostr: Converte uma hora para string.
Exemplo: txtHora.Text := timeTostr(Time);
Length
Permite extrair a quantidade de caracteres de uma string.
Exemplo:
var Quantidade: Integer; //declara a variável como número inteiro
begin
Quantidade:=length(txtNome.Text);
txtMensagem.Text := 'O nome tem ' + intTostr(Quantidade) + ' caracteres';
end;
Int
Retorna a parte inteira de um número.
Exemplo:
txtResultado.Text := int(txtNumero.Text);
Se na caixa de textos txtNumero.Text, o número digitado for 5.99, será retornado 5.
Round
Retorna um valor inteiro arredondado de um tipo de dados real (possui casas decimais).
Exemplo:
txtResultado.Text := round(txtNumero.Text);
Se na caixa de textos txtNumero.Text, o número digitado for 3.20, o valor do arrendondamento será 3 ou
Se na caixa de textos txtNumero.Text, o número digitado for 3.55, o valor do arrendondamento será 4, obedecendo a regra de matemática.
Sqrt
Retorna a raiz quadrada de um número
Exemplo:
txtResultado.Text := Sqrt(txtRaiz.Text);
Retornará por exemplo 8 se a raiz digitada for 64.
AnsiLowerCase
Converte todos os caracteres de uma string para minúsculas.
Exemplo:
txtEmail.Text := AnsiLowerCase(txtEmail.Text);
Se foi digitado por exemplo: Alguem@Provedor.com.br será retornado: alguem@provedor.com.br
AnsiUpperCase
Converte todos os caracteres de uma string para maiúsculas.
Exemplo:
txtUF.Text := AnsiUpperCase(txtUF.Text);
Se foi digitado por exemplo: Sp, será retornado: SP.
Copy
Extrai uma sub-string de uma string
Exemplo:
txtResultado.Text := Copy(txtNome.Text,1,3)
Se por exemplo na caixa de textos nome, foi digitado Fernanda, será retornado Fer, pois a string em 1 e pega 3 posições.
Trim
Retira caracteres em branco e caracteres de controle que existem em uma string, à esquerda ou à direita.
Exemplo:
txtResultado.Text:= Trim(txtInformacao.Text);
Se na caixa txtNome.Text, estiver a seguinte string: ' Pressione a tecla Esc ' --> com a instrução Trim, ficará assim: 'Pressione a tecla Esc'
DayOfWeek
Exibe o número, indicando o dia atual da semana, de 1 a 7, sendo 1 = Domingo e 7= Sábado.
Exemplo:
txtDia.Text:= DayOfWeek(txtData.Text);
DecoDeDate
Permite extrair a partir de uma data: o dia, mês e o ano.
Exemplo:
var dia,mes,ano:word; //variável tipo Word
begin
DecodeDate(strTodate(txtData.Text), wAno, wMes, wDia);
txtDia.Text:= wDia;
txtMes.Text:= wMes;
txtAno.Text:= wAno;
end;
DecoDeTime
Permite extrair de uma hora: horas, minutos, segundos e milésimos.
Exemplo:
var wHora, wMinuto, wSegundo:word;
begin
DecoDeTime(strToTime(txtHora.Text(wHora, wMinuto, wSegundo);
txtHora.Text:= wHora;
txtMinuto.Text:= wMinuto;
txtSegundo.Text:= wSegundo;
end;
Try... Except...
O sistema tentará (try) executar as instruções que foram definidas, senão será exibido um erro (except).
Exemplo:
try
strTofloat(txtNota1.Text)
Except
On EConvertError do
begin
ShowMessage('Digite uma Nota Válida');
txtNota1.SetFocus;
exit;
end;
end;
Utilização da Tecla Enter
No evento onKeyPress
if key = #13 then {Se a tecla pressionada for o Enter}
begin
key := #0; {Desabilita o beep}
edit2.Text :='Teste';
edit2.setfocus;
end;
end;
Formatar valores tipo moeda - Função FormatFloat - Exemplo 1
var Valor1, Valor2: Real;
begin
Valor1 := strToFloat(txtValor1.Text);
Valor2 := strToFloat(txtValor2.Text);
lblResultado.Color := clBlue;
lblResultado.Font.Color := clYellow;
lblResultado.Font.Size := 12;
lblResultado.Caption := FormatFloat('##,##0.00', Valor1 + Valor2)
end;
Resultado: Se você digitar 10, será exibido 10,00. O ponto decimal é convertido para vírgula e o símbolo de sustenido, suprime zeros a esquerda.
Formatar valores tipo moeda - FloatToStrF - Exemplo 2
procedure TForm1.cmdOKClick(Sender: TObject);
begin
txtResultado.Text := FloatTostrF(strTofloat(txtValor.Text), ffCurrency,7,2);
end;
Resultado: Se você digitar 10, será exibido R$ 10,00. ffCurrency coloca o símbolo da moeda, 7 é a precisão (ou seja: se você colocar 5 como precisão e digitar por exemplo: 150000, será apresentado erro) e 2 é o número de casas decimais.
Como interceptar as teclas de função:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_F5 then
ShowMessage('Você pressionou a F5');
end;
{ pode ser usado da VK_F1 a VK_F12 }
Rotina para aceitar só caracteres alfabéticos
procedure TForm1.txtValor2KeyPress(Sender: TObject; var Key: Char);
begin
if (key >= #65) and (key <= #90) or (key >= #97) and (key <= #122) then
begin
exit;
end
else
key := #0;
end;
Rotina para Executar um programa externo / Acionar a Seta para baixo
procedure TForm1.txtValor1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
IF KEY = vk_Down THEN txtValor2.SetFocus; //Aciona a Seta para baixo
if KEY = VK_F10 then //Aciona a tecla F10
begin
WinExec('Calc.Exe', SW_ShowNormal);
end;
end;
Rotina para aceitar só números
procedure TForm1.txtValor1KeyPress(Sender: TObject; var Key: Char);
begin
if (key >= #48) and (key < #58) or (key = #46) or (key = #44)
or (key = #8) then
begin
exit;
end
else
key := #0;
end;
end;
//48 a 57 - números de 0 a 9
//44 - virgula
//46 - ponto
//8 - backspace
Outra forma que permite somente digitar números, ponto e a vírgula
No evento onKeyPress, digite o código abaixo:
if not (Key in ['0'..'9', ',', '.', #8]) then // #8 para não bloquear backspace
Key := #0;
Por exemplo: se não for digitado números de 0 a 9, a vírgula, o ponto e a tecla Backspace, qualquer outra tecla é inválida (Key :=#0;)
Utilização da tecla Enter e as setas para movimentar nas caixas de texto
Selecione o formulário e no evento onKeyDown, coloque o código abaixo:
Case Key of
VK_UP : Perform(WM_NEXTDLGCTL,1,0); //Permite utilizar a seta para cima
VK_DOWN, VK_RETURN: Perform(WM_NEXTDLGCTL,0,0); //Permite utilizar a seta
//para baixo e a tecla ENTER
end;
No evento onKeyPress:
if Key = #13 then key :=#0; //Evita o beep no altofalante
Instrução IF...Then
Permite colocar condições na codificação.
Exemplo:
if txtSexo.Text = 'M' then
txtResultado.Text := 'Masculino'
else
txtResultado.Text := 'Feminino'
ou
if txtSexo.Text <> 'M' and txtSexo.Text <> 'F' then
begin
ShowMessage('Sexo Inválido');
txtSexo.SetFocus;
exit; //não executa as codificações abaixo do end;
end;
Neste último caso, como o if possui mais de uma instrução, é necessário a instrução de outro bloco begin...end
Formulários
Para carregar formulários, existem dois métodos:
frmNumero.Show //Carrega o formulário, permitindo acessar o anterior ou mesmo voltar para o atual. Este método permite ter vários formulários abertos e alternar entre eles. Deve ser observado é que, será consumido muita memória, o fato de termos vários formulários.
frmNumero.ShowModal //Carrega o formulário, sendo que para acessar outro formulário, o atual deverá ser fechado.
ObservaçÃO: Tanto no método Show ou ShowModal, na primeira vez que você for carregar o formulário, será exibido a mensagem se você deseja adicionar o mesmo, pois caso contrário ele não será exibido.
frmNumero.Hide //Esconde o formulário atual.
Criando formulários
Quando desenvolvemos sistemas em Delphi, é comum percebermos a lentidão em seu carregamento. Isto deve-se ao fato de o Delphi, criar todos os formulários para a memória quando da carga do sistema. Para resolver, podemos criar somente quando os mesmos for exibidos.
Entre no Menu Project / Options.
Supondo que exista o frmMenu e o frmCadastro na primeira parte Auto-create Forms.
Clique no frmCadastro e clique no segundo botão >.
Ele será colocado ao lado em Avaliable forms.
Se você tentar rodar o projeto, e tentar carregar o formulário frmCadastro, será apresentado já que o mesmo não foi criado ainda.
Para resolver, faça o seguinte:
Antes da linha que carrega o formulário, coloque assim:
Application.CreateForm(TfrmCadastro, frmCadastro);
frmCadastro.Show;
Destruindo Formulários
Quando o usuário fechar o formulário, o formulário criado pelo método acima, deverá ser destruído, liberando a memória.
No evento onClose, coloque a instrução abaixo:
frmCadastro.Release;
Exibindo Caixa de Mensagens
MessageDlg(Mensagem, Tipo, [Botões], ContextoAjuda);
Exemplo:
MessageDlg('Fim de Processo', mtInformation,[mbOK],0);
//mtInformation exibe o ícone de informação
//mbOK será exibido o botão de OK
//0 é porquê não existe nenhuma referência ao help (um número de 1 a n);
if MessageDlg('Confirma ', mtConfirmation,[mbYes,mbNo],0) = mrNo then
begin
txtCodigo.SetFocus;
exit;
end;
//mtConfirmation exibe o ícone de interrogação
//mbYes e mbNo exibe os botÕes Yes e Não
//0 é porquê não existe nenhuma referência ao help (um número de 1 a n);
//mrNo estamos progamando caso o usuário escolha não então
InputBox
Permite que o usuário entre com uma informação e escolha entre os botões OK e Cancelar.
Exemplo:
var Cep: string;
begin
Cep := InputBox('Informe o CEP','CEp para busca',''); //Nos últimos apóstofos podemos colocar um CEP padrão.
end;
               (
geocities.com/br/edsondavidp)                   (
geocities.com/br)