Fórum Delphi TypeInfo: Função GetPropInfo não encontra a propriedade Text do componente DBEdit #558964
06/07/2016
0
Preciso testar se a propriedade X existe em um determinado componente instanciado no formulário.
Criei uma função que recebe o componente como parâmetro e testa-o com GetPropInfo.
Ocorre que ao testar se existe a propriedade 'TEXT' em um componente do tipo TDBEdit, a GetPropInfo retorna NIL. Como é sabido, utiliza-se utiliza-se o text e EditText normalmente em componentes DBEdits.
Existe também a função IsPublishedProp que retorna True se a propriedade existe. Mas também não funcionou pois retorna false para 'Test' e 'EditText'.
Alguém conhece alguma outra função ou solução para testar se determinada propriedade existe no componente?
Antecipadamente agradeço qualquer ajuda/esclarecimento.
Segue um exemplo:
function ExistePropriedade(componente: TComponent; Propriedade: String): Boolean;
var
PropInfo: PPropInfo;
begin
Result := False;
if Assigned(componente) then
begin
PropInfo := GetPropInfo(componente.ClassInfo, Propriedade); // Se eu passar DBEdit e propriedade 'Text' ou 'EditText', retorna nil.
if not Assigned(PropInfo) then
result := False
end;
end.
Carlos Chaves
Curtir tópico
+ 0Post mais votado
06/07/2016
Amigo sua função está correta, eu testei aqui... a unica observação que tenho a fazer é que no início dela vc determinou o "RESULT:= FALSE" e em momento nenhum você da a condição pra ela ser verdadeira. Deixe ela iniciada como verdadeira, caso a propriedade não existir, o result receberá o false conforme vc colocou mais adiante.
Mateus Ribeiro
Gostei + 1
Mais Posts
06/07/2016
Carlos Chaves
Uso o Delphi XE2. Será que em versões novas foi corrigida?
Se alguém puder testar eu agradeço. Pois esta função encurtaria muito código ao testar componentes, mesmo deixando a aplicação mais lenta.
Gostei + 0
06/07/2016
Mateus Ribeiro
Gostei + 0
06/07/2016
Carlos Chaves
Que estranho. Aqui funciona para Edit, mas não TDBEdit.
1) Você testou com um TDBEdit?
-> GetPropInfo(DBEdit1.ClassInfo, 'Text')
Aqui retorna nil.
2) Que versão de Delphi você utiliza?
Gostei + 0
12/07/2016
Carlos Chaves
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)