Como saber se o Componente Ativo é descendente de BD?
Olá, gostaria de saber se tem como eu saber se o componente que esta ativo é descendente do TDataSet, acho que é isso mesmo, ou seja, como saber se ele se liga com o banco de dados, pois preciso saber se o campo de origem do campo é do tipo Date ou Time, aí preencher com as datas e horas atuais...
Desde já agradeço.
Fellipe H.
Desde já agradeço.
Fellipe H.
Titanius
Curtidas 0
Respostas
Firekiller
04/11/2005
Tente assim:
function IsDataset( Componente:TComponent ):Boolean; begin Result:=( Componente is TDataset ); end;
GOSTEI 0
Titanius
04/11/2005
Opa Firekiller, e como eu jogo o valkor dentro do campo deste jeito?
GOSTEI 0
Bruno Belchior
04/11/2005
no caso me parece que você deseja saber se ele é descendente de um campo (TField)...
function IsField(Componente: TComponent; Valor: Variant): Boolean; begin Result := (Componente is TField); if Result then begin (Componente as TField).AsVariant := Valor; end; end;
GOSTEI 0
Titanius
04/11/2005
Opa.. é isso mesmo.. obrigado
GOSTEI 0
Titanius
04/11/2005
Ia me eskecendo... como faco pra saber se o campo eh do tipo Time, Date ou DateTime?
[]s
[]s
GOSTEI 0
Bruno Belchior
04/11/2005
pode usar um [b:44bcfb2bc4]or[/b:44bcfb2bc4]:
Result := (Componente is TDateField) or (Component is TDateTimeField) or (Component is TTimeField);
GOSTEI 0
Titanius
04/11/2005
Não está funcionando... veja se estou usando corretamente..
o Result, sempre retorna False
[]s
IsField(Screen.ActiveControl, Now)
o Result, sempre retorna False
[]s
GOSTEI 0
Massuda
04/11/2005
Pelo que entendi, ele quer saber se um controle é data aware.
GOSTEI 0
Titanius
04/11/2005
Acho que é isso mesmo que dá o nome, queria ver se ele se liga ao banco de dados, e se ligar, se é do tipo [date, time, datetime] e se for, preencher com a data, hora do dia ( now)
[]s
[]s
GOSTEI 0
Massuda
04/11/2005
Acho que não existe modo simples de fazer isso, pois os controles data aware são implementados por agregação e não herança, por isso qualquer teste usando is não funcionará ou será complicado de implementar.
Todo controle data aware é construído agregando a ele um objeto interno derivado da classe TDataLink e/ou TFieldDataLink.
O modo mais fácil de testar se um controle é data aware parece ser testar se o controle possui a propriedade DataSource do tipo TDataSource... tem alguns exemplos aqui no fórum de como fazer isso, por exemplo, [url=http://forum.clubedelphi.net/viewtopic.php?t=56637]este tópico[/url].
Todo controle data aware é construído agregando a ele um objeto interno derivado da classe TDataLink e/ou TFieldDataLink.
O modo mais fácil de testar se um controle é data aware parece ser testar se o controle possui a propriedade DataSource do tipo TDataSource... tem alguns exemplos aqui no fórum de como fazer isso, por exemplo, [url=http://forum.clubedelphi.net/viewtopic.php?t=56637]este tópico[/url].
GOSTEI 0
Titanius
04/11/2005
Valeu Massuda, vou olhar lá...
GOSTEI 0