Hoje fiquei com vontade de escrever algo para “EU” mesmo. Um preguiçoso incondicional… Sabe aquele cara que não gosta de repetir tudo de novo… então… Já notou como RTTI fica tudo repetitivo… cansei.
Se um objeto tem um propriedade Caption, para atribuir um valor para ele usando RTTI é preciso iniciar um Context, fazer um loop para checar se a propriedade existe, ver o tipo… cansei…
Agora vou fazer assim:
label1.ContextProperties['caption'] := 'meu caption';
Alguém vai dizer que para fazer para um TLabel é moleza… tudo bem… e se fosse um objeto que não sei se tem a propriedade “caption”… tudo bem – isto não é problema meu… o objeto que se encarregue de tratar… não quero aquele erro infame na minha janela…
Vi a palestra do Thulio na Conference 2016 e ele nem piscou, mandou um “dinossauro” na sala quando falava de MongoDB – beleza meu amigo, vamos tocando aqui.
Quer saber se TMongoConnection tem uma propriedade “loginprompt” – não precisava, mas se estiver na dúvida então faz assim:
if MongoConnection.IsContextProperty('loginprompt') then fazUmEstragoNoDB;
Humm… pensei melhor e talvez não era uma propriedade o que esperava… na verdade era uma variável do objeto:
Opa, então faz assim:
form1.ContextFields['usuario'] := 'Eu mesmo';
Por fim, pensei em listar todas a propriedades do objeto em um memo…
Boa, isto é moleza:
label1.GetContextPropertiesItems( memo1.lines );
Se fosse uma lista de variáveis do objeto, da para fazer assim:
form1.ContextGetFieldsList( memo1.lines );
Difícil…. então deixa de falar que RTTI é complicado, bora usar aí nos seus projetos mais ousados.
Quer ver mais…. olha aqui nos fontes: https://github.com/amarildolacerda