segunda-feira, 3 de agosto de 2015

Formatação de Casas Decimais no TEdit

Esse comando formata para decimal os números do componente TEDIT.
Crie um novo projeto, coloque no TForm, um componente TEDIT e um componente TBUTTON. No evento onclick do componente TBUTTON adicione o código abaixo:

procedure TForm1.Button1Click(Sender: TObject); 
var
     num : integer; 
begin 
     num:=12450; 
     Edit1.text:=formatfloat('###,###,##0.00', num) 
end;

Como posso rolar um form com pgUp e pgDn

Questão. Como posso fazer funções de rolagem num componente TForm usando comandos de teclado? Por exemplo, rolar pra cima e pra baixo quando pressionar PgUp ou PgDown. Existe algum método simples de fazer isso?

Resposta. O rolamento do form é completo fazendo-se uma modificação na posição das propriedades VertScrollbar ou HorzScrollbar do form. Como mostrado no código a seguir:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
const
PageDelta = 10;
begin
  With VertScrollbar do
  if Key = VK_NEXT then
  Position := Position + PageDelta
  else if Key = VK_PRIOR then
  Position := Position - PageDelta;
end;
  

sábado, 1 de agosto de 2015

Capturar a data da BIOS ( Basic Input Output System ) do computador

Insira um objeto do tipo Button com a propriedade name definica como Button1 e um objeto do tipo Label com a propriedade definida como Label1.

procedure TForm1.Button1Click(Sender: TObject); 
begin
  Label1.Caption := 'Data da Bios: '+String(PChar(Ptr($FFFF5))); 
end; 

Como retornar a uma lista os campos indexados de um tabela

procedure TForm1.Button1Click(Sender: TObject);
var
      i : integer;
begin
     Table1.IndexDefs.Update;
     ListBox1.Items.add
    ('******** Índice Primário ********');
    for i:=0 to Table1.IndexDefs.Count-1 do
    begin
          if Table1.IndexDefs.Items[i].Options = [ixPrimary..ixUnique] then
          ListBox1.Items.add(Table1.IndexDefs.Items[I].Fields)
    else
         begin
              ListBox1.Items.add('');
              ListBox1.Items.add
              ('**** Índice Secundário ****');
              Listbox1.Items.Add(Table1.IndexDefs.Items[I].Name); 
          end;
     end; 
end;
  

Como filtrar registros de uma tabela pelo mês de um campo data

Você pode usar a função DecodeDate( ) no evento onFilterRecord de um componente TTable.

Ex.:

// não se esqueça de mudar a propriedade Filtered para True;
// isto fará com que o evento onFilterRecord seja disparado.

procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
var
  Dia, Mes, Ano: word;
begin
  Accept := false;
  DecodeDate(Table1['Competencia'],Ano,Mes,Dia);
  if Mes=MesFiltrado then
  Accept := True;
end;
Obs.: Você pode usar este mesmo código para filtrar por Ano ou por Dia, basta utilizar a comparação adequada no bloco if ... then

Como diminuir o tempo de abertura do TTable e TQuery

Operação feita quando é executado o método Open do componente TTable ou TQuery, que produz a compilação e execução do comando select. Quando esse método é executado através do componente TTable, o Delphi realiza uma série de outros comandos SQLs para buscar informações do catálogo da tabela necessárias para as operações de seleção e atualização. Essa busca pode ser otimizada através da opção ENABLE SCHEMA CACHE do BDE, fazendo com que essas informações sejam lidas apenas uma vez durante a execução da aplicação. Quando o primeiro acesso é feito, o BDE armazena as informações em um arquivo e qualquer nova necessidade de abertura da mesma tabela não necessita buscar novamente os elementos do catálogo.

Por outro lado, utilizando-se o componente TQuery, pode-se desviar dessa busca desde que não se utilize a propriedade Request Live que torna o "result set" da "query" atualizável automaticamente pelo Delphi. Se o valor da propriedade Request Live for TRUE e o SELECT utilizado obedecer as restrições para que o Delphi consiga atualizar o "result set", as mesmas buscas utilizadas para o componente TTable terão que ser feitas. 

Concluindo, para que a busca de elementos do catálogo não seja feita é necessário utilizar o componente TQuery e controlar as atualizações manualmente ou através de componentes do tipo TUpdateSQL.

sexta-feira, 31 de julho de 2015

Como formatar data para exibição por extenso

O Delphi permite formatar datas para apresentação por extenso de forma bastante simples. Vejamos os seguintes exemplos: 

Para formatar a data 18/03/1999, podemos utilizar: 

No create do form colocar

Shortdateformat :=

dddd, dd/mm/yyyy = Quinta, 18/03/1999 
dd/mmm/yyyy = 18/Mar/1999 
dddd, dd" de "mmmm" de "yyyy = Quinta, 18 de Março de 1999 
dd" de "mmmm" de "yyyy, dddd = 18 de Março de 1999, Quinta 

Curso de Delphi: 7.Consultas SQL