Fórum Fazendo referencia a um campo que ainda não existe - Delphi #506592

08/01/2015

0

Olá pessoal!

estou precisando fazer referencia na propriedade "DBGrid1DrawColumnCell" a um campo de um ClientDataSet que ainda não existe, ele será criado depois que abrir o form. Porém eu não consigo prosseguir pois o Delphi retorna erros pq os mesmos não existem.


Alguém sabe me dizer se tem alguma forma de fazer isso sem erros??


Agradeço!
Marcos Roberto

Marcos Roberto

Responder

Posts

08/01/2015

Renato Rubinho

Buenos,

Pesquisa se o campo existe no clientdataset:

if clientdataset.FindField('NOVO_CAMPO') <> nil then
begin
.
.
.
end;


ou pelo componente:

if FindComponent('OBJETO_CRIADO') <> nil then
begin
.
.
.
end;


Abraççç,
rrubinho
Responder

Gostei + 0

08/01/2015

Marcos Roberto

Olá Rubinho!

eu usei sua dica mas ainda não vai. Veja como ficou...


if FindComponent('OBJETO_CRIADO') <> nil then
begin


// Colorindo o registro na dbgrid.
if (date > CDS_ContasPagarVENCIMENTO.Value) and
(CDS_ContasPagarBAIXA_DATA.Value = 0) then
begin
ImageListDbgrid.Draw(dbgrid1.Canvas,Rect.Left+8,Rect.Top+0,3);
end;
.
end;



Lembrando que o ClientDataSet ainda não existe , ele será criado em tempo de execução, ou seja o ClientDataSet cujo o nome é "CDS_ContasPagar" não está no form.
Responder

Gostei + 0

08/01/2015

Renato Rubinho

Marcos,

No FindComponent() você deve passar o nome do componente que foi criado, no caso, o campo que você quer saber se existe.

Exemplo, você cria o CDS_ContasPagar em tempo de execução.
Você cria os Fields ou apenas abre uma query ?
Enfim, você precisa, após existirem os campos no clientdataset, verificar o nome do objeto TField criado no clientdataset e passar este nome para o FindComponent() procurar no form.
Exemplo, se o campo que você deseja é o sexto campo gerado no clientdataset:

if FindComponent(ClientDataSet.Fields[5].Name) <> nil then
Responder

Gostei + 0

14/01/2015

Marcos Roberto

Olá Rubinho!!

Cara me desculpe pela demora em responder , eu estava viajando.

Rubinho muito obrigado, deu certo aqui, mais uma vez vc me ajudou!



Obrigado!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar