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;