Fazendo referencia a um campo que ainda não existe - Delphi
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!
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
Curtidas 0
Respostas
Renato Rubinho
08/01/2015
Buenos,
Pesquisa se o campo existe no clientdataset:
ou pelo componente:
Abraççç,
rrubinho
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
GOSTEI 0
Marcos Roberto
08/01/2015
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.
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.
GOSTEI 0
Renato Rubinho
08/01/2015
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:
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
GOSTEI 0
Marcos Roberto
08/01/2015
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!
Cara me desculpe pela demora em responder , eu estava viajando.
Rubinho muito obrigado, deu certo aqui, mais uma vez vc me ajudou!
Obrigado!
GOSTEI 0