Encapsulando um Array em TPersistent
11/04/2006
0
Estou desenvolvendo um componente para construção de filtros em consultas SQL, mas voltado para o uso do usuário final.
Bem, uma das partes dele, são os dialetos, ou seja, cada banco de dados, vai ter um dialeto, que vai conter as formas como o banco faz comparação de strings, inteiros, floats, datas etc...
A principio fiz um array que encapsulei dentro de um TPersistent, fiz uma propriedade que acessa este array, e como Public ela funciona, mas como Published não. Sei que o que tenho que fazer é transformar este array em um TPersistent, para que então ele possa se tornar uma propriedade publicada no dialeto. Mas a ficha ainda não caiu, e não sei como vou fazer isso, se alguém tiver uma idéia.
Ai, vai o trecho de código das classes:
Bem, uma das partes dele, são os dialetos, ou seja, cada banco de dados, vai ter um dialeto, que vai conter as formas como o banco faz comparação de strings, inteiros, floats, datas etc...
A principio fiz um array que encapsulei dentro de um TPersistent, fiz uma propriedade que acessa este array, e como Public ela funciona, mas como Published não. Sei que o que tenho que fazer é transformar este array em um TPersistent, para que então ele possa se tornar uma propriedade publicada no dialeto. Mas a ficha ainda não caiu, e não sei como vou fazer isso, se alguém tiver uma idéia.
Ai, vai o trecho de código das classes:
type
TMemberType = (mtString, mtInteger, mtFloat, mtBoolean, mtDate, mtTime, mtDateTime);
TMemberTypes = set of TMemberType;
TOperationFlag = (ofEqual, ofGreat, ofGreatEqual, ofLeast, ofLeastEqual, ofdifferent, ofLike, ofAutomatic, ofNull, ofNotNull);
TOperationFlags = set of TOperationFlag;
TClausule = class(TPersistent)
private
FOwner: TPersistent;
FClausule : String;
FEnabled : Boolean;
public
constructor Create(AOwner: TComponent); overload;
constructor Create(AOwner: TComponent; Clausule: String;
Enabled: Boolean); overload;
procedure Assign(Source: TPersistent); override;
function GetOwner: TPersistent; override;
published
property Clausule: String read FClausule write FClausule;
property Enabled: Boolean read FEnabled write FEnabled;
end;
[b:2d295bda1f]TClausules = array [TMemberType, TOperationFlag] of TClausule;[/b:2d295bda1f]
TAvsDefaultDialect = class (TComponent)
private
[b:2d295bda1f]FClausules: TClausules;[/b:2d295bda1f]
function GetClausule(const MemberType: TMemberType;
Operation: TOperationFlag): TClausule;
procedure SetClausule(const MemberType: TMemberType;
Operation: TOperationFlag; const Value: TClausule);
public
constructor Create(AOwner: TComponent); override;
function BuildClausule(MemberType: TMemberType; Operation: TOperationFlag;
FieldName, Value: String): string;
property Clausules[const MemberType: TMemberType;
Operation: TOperationFlag]: TClausule read GetClausule write SetClausule;
end;
Aureliovs
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)