[lazarus] dealing with objects' properties
dvortex
dvortex at netcourrier.com
Tue May 2 10:58:34 EDT 2000
very good point michael ! :o)
as i said ... morning idea :o)
i will do it as you suggest at the end of this message..
(and if anyone got some different idea, let me know :o)
On Tue, 2 May 2000, Michael Van Canneyt wrote:
>
>
> On Tue, 2 May 2000, dvortex wrote:
>
> >
> > I was waking up this morning after a short night of sleep, and i realized
> > that maybe i should modify the TObject code and add this:
> >
> > Procedure TObject.SetProperty(PropertyName).AsString
> > .AsFloat
> > .AsInteger
> >
> > (How can i code something like this by the way ?)
> >
> > and maybe
> > Function TObject.GetPropertList : TStringList;
> >
> > ?
> >
> > What do you think ?
> > that would allow to make component coding a lot easier, don't you think ?
>
>
>
> And it would increase all existing code unnecessary much because it is in
> the system unit, so better not in the system unit.
>
> Not to mention that you would need the typinfo unit in the system unit, which
> would introduce a circular unit dependency. The alternative, to 'include' the
> typinfo in the system unit, is definitely out of the question.
>
> You CAN insert it in the typinfo unit, however:
>
> Delphi 5 has similar procedures in it's typinfo unit, which we didn't
> implement yet. If you implement it there, I will include it in the RTL:
>
> Here is the list of functions. The Get/Set functions do what you want to
> do.
>
> A sample implementation would be:
>
> procedure SetStrProp(Instance: TObject;
> Const PropName: String;
> Const Value: String);
> begin
> SetStrProp(Instance,GetPropInfo(Instance, PropName),Value);
> end;
>
>
>
> function IsPublishedProp(Instance: TObject; const PropName: string): Boolean; overload;
> function IsPublishedProp(AClass: TClass; const PropName: string): Boolean; overload;
> function GetPropInfo(Instance: TObject; const PropName: string; AKinds: TTypeKinds = []): PPropInfo; overload;
> function GetPropInfo(AClass: TClass; const PropName: string; AKinds: TTypeKinds = []): PPropInfo; overload;
>
> function PropIsType(Instance: TObject; const PropName: string; TypeKind: TTypeKind): Boolean; overload;
> function PropIsType(AClass: TClass; const PropName: string; TypeKind: TTypeKind): Boolean; overload;
> function PropType(Instance: TObject; const PropName: string): TTypeKind; overload;
> function PropType(AClass: TClass; const PropName: string): TTypeKind; overload;
>
> function IsStoredProp(Instance: TObject; const PropName: string): Boolean; overload;
>
> function GetOrdProp(Instance: TObject; const PropName: string): Longint; overload;
> procedure SetOrdProp(Instance: TObject; const PropName: string;
> Value: Longint); overload;
>
> function GetEnumProp(Instance: TObject; const PropName: string): string; overload;
> procedure SetEnumProp(Instance: TObject; const PropName: string;
> const Value: string); overload;
>
> function GetSetProp(Instance: TObject; const PropName: string;
> Brackets: Boolean = False): string; overload;
> procedure SetSetProp(Instance: TObject; const PropName: string;
> const Value: string); overload;
>
> function GetObjectProp(Instance: TObject; const PropName: string;
> MinClass: TClass = nil): TObject; overload;
> procedure SetObjectProp(Instance: TObject; const PropName: string;
> Value: TObject); overload;
> function GetObjectPropClass(Instance: TObject; const PropName: string): TClass; overload;
>
> function GetStrProp(Instance: TObject; const PropName: string): string; overload;
> procedure SetStrProp(Instance: TObject; const PropName: string;
> const Value: string); overload;
>
> function GetFloatProp(Instance: TObject; const PropName: string): Extended; overload;
> procedure SetFloatProp(Instance: TObject; const PropName: string;
> Value: Extended); overload;
>
> function GetVariantProp(Instance: TObject; const PropName: string): Variant; overload;
> procedure SetVariantProp(Instance: TObject; const PropName: string;
> const Value: Variant); overload;
>
> function GetMethodProp(Instance: TObject; const PropName: string): TMethod; overload;
> procedure SetMethodProp(Instance: TObject; const PropName: string;
> const Value: TMethod); overload;
>
> function GetInt64Prop(Instance: TObject; const PropName: string): Int64; overload;
> procedure SetInt64Prop(Instance: TObject; const PropName: string;
> const Value: Int64); overload;
>
> function GetPropValue(Instance: TObject; const PropName: string;
> PreferStrings: Boolean = True): Variant;
> procedure SetPropValue(Instance: TObject; const PropName: string;
> const Value: Variant);
>
> Michael.
>
> _________________________________________________________________
> To unsubscribe: mail lazarus-request at miraclec.com with
> "unsubscribe" as the Subject
> archives at http://www.miraclec.com/list_archives/lazarus
>
More information about the Lazarus
mailing list