Dicas de Delphi

Criando e Excluindo TFields em tempo de execução

Objetos TField (e seus descendentes) podem ser criados em tempo de desenvolvimento através do Fields Editor.

O Fileds Editor é acionado quando damos um clique duplo no componente de acesso a dados, ou seja, TTable ou TQuery. Mas nós podemos fazer isto em tempo de execução também.

Descendentes do TField componente (como TStringField, TIntegerField, etc.) são criados para que possamos chamar o métodos Create para o tipo de campo desejado.

Após criar o componente, precisamos especificar algumas propriedades para que a conexão com os dados funcione e assim poderemos alterar dados das tabelas. São eles:

FieldName: nome do campo na tabela.
Name: nome do componente, usado pelo Delphi.
Index: É um número de identificação para o campo. Este número nunca é repetido, automaticamente é controlado pelo Delphi.
DataSet: O componente TTable ou TQuery ao qual queremos associar o campo.

O Código abaixo mostra a criação de um campo String. Usaremos o Objeto Query1 para nos referenciarmos ao DataSet.

procedure TForm1.Button2Click(Sender: TObject);
var
T: TStringField;
begin
Query1.Close;
T := TStringField.Create(Self);
T.FieldName := 'CO_NAME';
T.Name := Query1.Name + T.FieldName;
T.Index := Query1.FieldCount;
T.DataSet := Query1;
Query1.FieldDefs.UpDate;
Query1.Open;
end;

Note que é necessário fechar o DataSet(Query1) antes de adicionarmos o novo campo.

Usamos a propriedade "Fieldcount" para definir o número da chave do campo criado, usando esta propriedade obteremos o número de TFileds que o DataSet(Query1) possui no momento, assim sempre estaremos criando um campo novo, pois se o primeiro começa com 0

Excluir um campo é bem mais simples, para isto basta criar um instância do tipo TComponent, e usar a função FindComponent para referenciá-lo ao objeto, para isto basta sabermos o nome do Objeto. A exclusão é feita através do método Free.

procedure TForm1.Button1Click(Sender: TObject);
var
TC: TComponent;
begin
TC := FindComponent('Query1CO_NAME');
if not (TC = nil) then
   begin
      Query1.Close;
      TC.Free;
      Query1.Open;
   end;
end;
Autor: Indefinido
Fonte: Indefinido
< Voltar
 

"Ouvindo" Opiniões (as mais lidas)

Em breve, aguarde!!!

Pharetra Sed Tempus

Morbi sit amet mauris Nam vitae nibh eu sapien dictum pharetra. Vestibulum elementum neque vel lacus. Lorem ipsum dolor sit dolore phasellus pede lorem proin auctor dolor loremmassa phasellus sit. More…

Outras edições da Revista Active Delphi