quinta-feira, 2 de junho de 2011

Criando atalhos rápidos no sistema

Uma dica bem rápida e simples de ser implementada, imaginando sua tela de cadastro de Clientes, onde um dos campos se refere a entrada de CEP e você vai implementar um formulário para pesquisa de Cidades e CEPs, a forma comum é colocar um pequeno botão ao lado do Edit e adicionar o código que chama a janela de consulta, mas e agilizando isso sem usar o mouse, com teclas de atalho, iria ajudar?

Neste mesmo Edit, vamos fazer que quando o mesmo estiver com o foco, ao pressionar a tecla F2 a janela de busca será exibida, basta que adicione ao evento OnKeyDown o seguinte trecho de código:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F2 then
begin
frmbusca := Tfrmbusca.Create(Self);
frmbusca.ShowModal;
FreeAndNil(frmbusca);
{Ou substitua as 3 linhas por SeuForm.Show se o mesmo já foi criado}
end;
end;

Pronto, execute a aplicação, posicione o foco dentro com componente Edit1 e pressione a tecla F2, o formulário de consulta será exibido. Abraço e até o próximo post.

Controlar ou limitar caracteres no Edit

O titulo do tópico acaba sendo um pouco limitado, mas o recurso que irei mostrar a seguir é muito simples e pode ser aplicado em qualquer componente utilizado para digitação de caracteres. Partindo do exemplo de um edit, denominado por exemplo para receber o CPF de uma pessoa, obviamente pode aceitar a digitação de números do "0" ao "9" e também o "." (Ponto) e o "-" (hífen), não permitindo mais nenhum outro caractere, ou sim, o "#8", ou seja, o comando de apagar da direita para esquerda (Backspace).

Em qualquer componente que deseja atribuir o controle, basta que adicione ao evento OnKeyPress o seguinte trecho de códigos:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9','.','-',#8]) then
abort;
end;

Pronto, em qualquer componente que você irá adicionar o código ao evento mencionado, será controlada a digitação destes caracteres. Abraço, até o próximo post.