Fórum Listar properties publicas de uma classe #343753
27/07/2007
0
type
TClientes = class
private
FSexo: string;
FNome: string;
FChave: integer;
procedure SetChave(const Value: integer);
procedure SetNome(const Value: string);
procedure SetSexo(const Value: string);
public
property Chave : integer read FChave write SetChave;
property Nome : string read FNome write SetNome;
property Sexo : string read FSexo write SetSexo;
end;
Gostaria de criar uma camada de persistência em win32 que recebesse o objeto populado (com dados), le-se as properties PUBLICAS da classe do mesmo, e montasse todo sql, a questão é todo material qu encontrei na net diz que tem que ser descendente de TComponent e as propeties tem que ser published pra eu conseguir recuperar as informações com RTTI.... , mas eu gostaria mesmo de ler as propriedades PUBLICAS de uma classe .... ja são 3 noites quase sem dormir....rs....to ralando pra fazer isto, se alguem puder me ajudar agradeço de coração.
Abraço.
Quartieri
Curtir tópico
+ 0Posts
30/07/2007
Quartieri
Gostei + 0
30/07/2007
Marco Salles
Ate aonde eu sei isto é condição..
Gostei + 0
31/07/2007
Quartieri
Gostei + 0
31/07/2007
Rjun
{$M+}
TMyClass = class
end;
{$M-}
Isso eu não testei, mas pelo que li, funciona. Mas parece que a propriedade realmente precisa ser [b:230b76712b]published[/b:230b76712b].
Gostei + 0
01/08/2007
Marco Salles
Muito bem colocado...
excelente informação...
Gostei + 0
01/08/2007
Quartieri
Brigadão.
Gostei + 0
03/08/2007
Quartieri
olha só a classe:
**********************
type
{$M+}
TMyClass = class
private
FTel: string;
Fchave: integer;
Fnome: string;
procedure Setchave(const Value: integer);
procedure Setnome(const Value: string);
procedure SetTel(const Value: string);
published
property chave : integer read Fchave write Setchave;
property nome : string read Fnome write Setnome;
property Tel : string read FTel write SetTel;
end;
{$M-}
**********************
código pra ler as properties :
**********************
procedure TForm1.Button2Click(Sender: TObject);
var
Count, Loop: Integer;
List: PPropList;
begin
Count := GetPropList(TypeInfo(Tmyclass), tkAny, nil);
GetMem(List, Count * SizeOf(PPropInfo));
try
GetPropList(TypeInfo(Tmyclass), tkAny, List);
for Loop := 0 to Pred(Count) do
memo1.lines.Add(List^[Loop]^.Name);
finally
FreeMem(List, Count * SizeOf(PPropInfo));
end;
end;
**********************
Marcos e RJun, muito obrigado. :)
Gostei + 0
03/08/2007
Marco Salles
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)