{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;
Assinar:
Postar comentários (Atom)

Nenhum comentário:
Postar um comentário