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:

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

Aureliovs

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar