Adicionar campo no FieldsEditor do IbClientDataSet runtime

Delphi

10/07/2008

alo a todos?
pesquisei muito por aqui e nao consegui nenhum topico para esclarecer exatamente minha duvida.

Seguinte;
em um form uso um ibclientdataset para poder alterar dados provenientes de uma consulta, até aí tudo bem, mas estou com a necessidade de incluir um campo VALOR_DESCONTO_DIFERENCIADO CURRENCY no fields editor em tempo real.

Alguem sabe alguma forma?
Neste IBCLIENTDATASET existem alguns campos InternalCalc, não poderia apagar a lista de campos no fieldseditor mesmo sabendo que o DELPHI recria esta lista na hora da consulta caso a mesma esteja em branco.

Resumindo: teria que apenas manter a minha lista de campos, mas quando efetuar uma certa consutla, preciso adicionar um ou outro campo ´FTCURRENCY´ em tempo real.

desde ja agradeço.


Seven

Seven

Curtidas 0

Respostas

Micheus

Micheus

10/07/2008

Acho que vc está procurando pela propriedade [i:e3a5ea6514]Fields[/i:e3a5ea6514] - o [i:e3a5ea6514]FieldsEditor[/i:e3a5ea6514] é utilizado apenas em design-time.

Tente algo similar ao comando a seguir, antes de abrir o dataset:
...
var
  CurField :TCurrencyField;  // ver help para outros tipos
begin
 // alocamos o field dinamicamente
  CurField := TCurrencyField.Create(Self);
 // inicializamos suas propriedades principais
  with CurField do 
  begin
   // nome do campo na tabela
    CurField.FieldName := ´VALOR_DESCONTO_DIFERENCIADO´;
   // defina a máscara se precisar
    CurField.DisplayFormat := ´#,0.00´;
   // nome do campo não pode ser repetido - seguimos padrão do delphi
    CurField.Name := ´IBCLIENTDATASET1VALOR_DESCONTO_DIFERENCIADO´;
   // aqui vinculamos o campo ao dataset 
    CurField.DataSet := IBCLIENTDATASET1;
  end;
  ...
  IBCLIENTDATASET1.Open;
  ...
end;


para remover ele da lista de fields:
...
  if Assigned(IBCLIENTDATASET1.Fields.FieldByName(´VALOR_DESCONTO_DIFERENCIADO)) then
    IBCLIENTDATASET1.Fields.FieldByName(´VALOR_DESCONTO_DIFERENCIADO´).Free;
...


Abraços


GOSTEI 0
Seven

Seven

10/07/2008

Obrigado micheus...
funcionou perfeitamente.


GOSTEI 0
Lisandro Otto

Lisandro Otto

10/07/2008

Excelente Micheus.....
GOSTEI 0
José

José

10/07/2008

Obrigado pelo retorno, Seven. Sendo assim, estou fechando este tópico. Caso precise, fique à vontade para abrir novos.
GOSTEI 0
POSTAR