Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
crpsistemas Novato

Registrado: Quarta-Feira, 11 de Julho de 2012 Mensagens: 56
|
Enviada: Ter Dez 22, 2015 6:43 pm Assunto: Converter property para String |
|
|
Saudações comunidade Active Delphi
Preciso novamente da ajuda de você para resolver situações com property.
Tenha uma classe básica de cliente:
Código: | unit uCliente;
interface
type
TCliente = class
private
FCodigo: Integer;
FCPF: String;
FNome: String;
procedure SetCodigo(const Value: Integer);
procedure SetCPF(const Value: String);
procedure SetNome(const Value: String);
public
property Codigo: Integer read FCodigo write SetCodigo;
property Nome: String read FNome write SetNome;
property CPF: String read FCPF write SetCPF;
end;
implementation
{ TCliente }
procedure TCliente.SetCodigo(const Value: Integer);
begin
FCodigo := Value;
end;
procedure TCliente.SetCPF(const Value: String);
begin
FCPF := Value;
end;
procedure TCliente.SetNome(const Value: String);
begin
FNome := Value;
end;
end.
|
Minha dúvida é a seguinte: Preciso converter a assinatura da propriedade para String (não é o valor e sim o nome da propriedade).
Gostaria, se possível, passar para a função de conversão o objeto com a propriedade: GetPropertyToString(objCliente.Codigo) e o retorno que preciso é: 'Codigo'; GetPropertyToString(objCliente.Nome) => 'Nome', etc.
É possível fazer isso?
Desde já, Obrigado |
|
Voltar ao Topo |
|
 |
claudio.ferreira Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013 Mensagens: 667
|
|
Voltar ao Topo |
|
 |
crpsistemas Novato

Registrado: Quarta-Feira, 11 de Julho de 2012 Mensagens: 56
|
Enviada: Ter Dez 29, 2015 5:51 pm Assunto: |
|
|
Olá claudio.ferreira!
Há +/- um mês estava com um problema parecido e você me indicou um livro, Coding in Delphi, por sinal excelente publicação. Com o estudo baseado neste livro consegui chegar a um método que recebe a o nome da propriedade do tipo String e retorna o atributo que esta propriedade seta. Veja:
Código: | function TForm1.GetPropertyAttribute(pProperty: String): string;
var
Context: TRTTIContext;
TempType: TRttiType;
TempProperty: TRttiProperty;
TempAttributes: TArray<TCustomAttribute>;
TempValue: TValue;
Attribute: TCustomAttribute;
begin
Result := '';
TempType := Context.GetType(TTeste);
TempProperty := TempType.GetProperty(pProperty);
TempAttributes := TempProperty.GetAttributes;
for Attribute in TempAttributes do
begin
if Attribute is TLqColuna then
begin
TempValue := TLqColuna(Attribute).Nome;
end;
end;
Result := TempValue.ToString;
end; |
Só que este método aceita apenas string, por isso que eu queria converter property para string.
Se tiver alguma ideia, fico grato. |
|
Voltar ao Topo |
|
 |
claudio.ferreira Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013 Mensagens: 667
|
Enviada: Qua Dez 30, 2015 10:46 am Assunto: |
|
|
Está difícil entender o que voce quer. Se esta método que você postou já retorna o nome da propriedade que foi capturado pelo atributo que contém o nome da propriedade, então você já tem o que deseja, ou eu não entendi. _________________ Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain |
|
Voltar ao Topo |
|
 |
|