home *** CD-ROM | disk | FTP | other *** search
- unit mleDataBindings;
-
- interface
-
- uses
- Classes, mleCommon, mlePropertyInfo;
-
- type
- TDataBindingEntry = class(TCollectionItem)
- public
- DOClassName: string; { data object class name }
- OID: string; { OID of the object instance }
- InstanceName: string; { Name of the object instance }
- PropertyName: string; { Name of the object property }
- ControlName: string; { HTML control name }
- end;
-
- TDataBindings = class(TCollection)
- protected
- function GetItem(aIndex: Integer): TDataBindingEntry;
- public
- constructor Create;
- procedure Add(aPropertyInfo: TPropertyInfo; aControlName: string);
- function GetAsXML: string;
- property Items[aIndex: Integer]: TDataBindingEntry read GetItem; default;
- end;
-
- implementation
-
- uses
- SysUtils;
-
- { TDataBindings }
-
- procedure TDataBindings.Add(aPropertyInfo: TPropertyInfo;
- aControlName: string);
- begin
- with TDataBindingEntry(inherited Add) do
- begin
- DOClassName := aPropertyInfo.Instance.ClassName;
- OID := aPropertyInfo.Instance.OID;
- InstanceName := aPropertyInfo.Instance.Name;
- PropertyName := aPropertyInfo.PropertyName;
- ControlName := aControlName;
- end;
- end;
-
- constructor TDataBindings.Create;
- begin
- inherited Create(TDataBindingEntry);
- end;
-
- function TDataBindings.GetAsXML: string;
- var
- I: Integer;
- XML: TStringList;
- AClassName: string;
- AOID: string;
- begin
- Result := '';
- if Count = 0 then Exit;
- XML := TStringList.Create;
- try
- XML.Add('<databindings>');
- AClassName := '';
- AOID := '';
- for I := 0 to Count - 1 do
- begin
- with Items[I] do
- begin
- if (OID <> AOID) or (DOClassName <> AClassName) then
- begin
- if XML.Count <> 1 then
- begin
- XML.Add(' </bindings>');
- XML.Add(' </instance>');
- end;
-
- AOID := OID;
- AClassName := DOClassName;
- XML.Add(Format(' <instance class="%s" oid="%s" name="%s">', [AClassName, AOID, InstanceName]));
- XML.Add(' <bindings>');
- end;
-
- XML.Add(' <binding>');
- XML.Add(' <control>' + ControlName + '</control>');
- XML.Add(' <property>' + PropertyName + '</property>');
- XML.Add(' </binding>');
- end;
- end;
-
- XML.Add(' </bindings>');
- XML.Add(' </instance>');
- XML.Add('</databindings>');
- Result := XML.Text;
- finally
- XML.Free;
- end;
- end;
-
- function TDataBindings.GetItem(aIndex: Integer): TDataBindingEntry;
- begin
- Result := TDataBindingEntry(inherited Items[aIndex]);
- end;
-
- end.
-