Mostrando postagens com marcador Delphi. Mostrar todas as postagens
Mostrando postagens com marcador Delphi. Mostrar todas as postagens

quinta-feira, 7 de julho de 2011

Delphi - Criando um Componente IBQuery em Tempo de Execução

Para aqueles que como eu não gostam muito de ficar enchendo as telas da aplicação ou o data module com componentes ibquery, eu dedico este pequeno tutorial.
Eu utilizo a rotina abaixo para criar um componente ibquery para fazer uma seleção na base de dados:

QuerySelectProd := TIBQuery.Create(nil); //Aqui eu crio o componente e atribuo a ele o estado vazio [nil]
QuerySelectProd.Database := DataModule.Database; //Aqui eu atribuo qual banco de dados estou utilizando
QuerySelectProd.Close; //Fecho a conexão
QuerySelectProd.SQL.Clear;//Limpo a SQL antiga
QuerySelectProd.SQL.Add('select ');
QuerySelectProd.SQL.Add('  produtos.estoqueatual ');
QuerySelectProd.SQL.Add('from ');
QuerySelectProd.SQL.Add('  produtos ');
QuerySelectProd.SQL.Add('where ');
QuerySelectProd.SQL.Add('  produtos.id_produto = ' + #39 + edCodigo.Text + #39);
QuerySelectProd.Open; //Abro a conexão

edQuantidade.Text := QuerySelectProd.FieldByName('estoqueatual').Text; //Atribuo ao componente Edit o valor do estoque atual do produto

QuerySelectProd.Close; //Fecho novamente  a conexão
QuerySelectProd.Free; //Limpo da memória o componente criado

OBS.: Tem que declarar a biblioteca TIBQuery na uses do Form

Você pode utilizar a mesma estrutura pra instruções SQL de Insert, Update, Delete...

quarta-feira, 6 de julho de 2011

Delphi - Formatanto um Valor Numérico em Estilo Moeda

Você pode apresentar os valores numéricos monetários da sua aplicação de maneira mais profissional com a função FormatFloat. Veja o exemplo abaixo:

Sintaxe da função FormatFloat: FormatFloat('###,###,##0.00', Variavel Numérica);
Onde: Variável Numérica deve ser uma variável do tipo Real ou Currency (existem outros tipos aceitos mas esses dois são os mais utilizados).

A seguir um exemplo prático de como implementar a função utilizando um componente Button:

procedure TForm1.Button1Click(Sender: TObject);
var
    TotalPgto: Currency;
begin
    TotalPgto := 1000;
    Label1.Caption := 'R$ ' + FormatFloat('###,###,##0.00', TotalPgto);
end;

O componente Label1 através da sua propriedade Caption irá exibir o valor da seguinte forma: R$ 1.000,00

Delphi - Tempo no Delphi

Se você necessita que seu programa espere um determinado tempo para iniciar uma nova rotina, a instrução Sleep pode ajudar, veja um exemplo:

Sleep(5000); //Onde 5000 = 5 segundos;

Exemplo da rotina em um componente Button:

procedure TForm1.Button1Click(Sender: TObject);
begin
   Sleep(5000);
   Showmessage('Tempo de 5 segundos...'); //Quando você clicar no botão, a mensagem só aparecerá após 5 segundos.
end;

Eu costumo aplicar essa rotina quando vou imprimir muitos relatórios. Dou um Tempo de 1 segundo para enviar uma nova impressão para spool da impressora.

Obs: Tem que ter a biblioteca "SysUtils" na Uses do Form para o Delphi conseguir reconhecer o comando Sleep.

Delphi - Fechando a Tela com Esc

No evento KeyPress do Form, digite as linhas abaixo:

if key = #27 then //#27 é o código ASCH para a tecla Esc
    Close;

A rotina completa ficaria assim:

procedure TForrm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #27 then
    Close;  
end;

Delphi - Fazendo o Enter se Comportar como o Tab

No evento KeyPress do Form, digitar as linhas abaixo:

if Key = #13 then //#13 é o código que representa o Enter em ASCH
   begin
      Key := #0; // Ttira o ruído quando pressiona o Enter.
      Perform(WM_NEXTDLGCTL,0,0); //Passa o foco para o próximo componente na tela
   end;

A rotina completa ficaria assim:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
      Key := #0;
      Perform(WM_NEXTDLGCTL,0,0);
   end;
end;