unit MainForm;
interface
uses
Business.System, Business.Forms, Business.Model, Business.Model.Org, Business.Data;
type
TMainForm = class(TForm)
Memo1: TMemo;
Query1: TQuery;
Panel1: TPanel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{private declarations}
procedure ShowOrgUnit(AUnit: TOrgUnit);
procedure ShowMemoResult1(ADataSet: TDataSet);
public
{public declarations}
end;
implementation
function GetFieldSize(AField: TDataField): Integer;
begin
case AField.DataType of
TFieldType.ftBoolean:
Result := 20;
TFieldType.ftDate, TFieldType.ftDateTime, TFieldType.ftTime:
Result := 20;
TFieldType.ftInteger, TFieldType.ftLargeint, TFieldType.ftSmallint:
Result := 20;
TFieldType.ftFloat:
Result := 20;
else
Result := AField.Size;
end;
if Result<Length(AField.FieldName) then Result := Length(AField.FieldName);
end;
procedure TMAINFORM.ShowMemoResult1(ADataSet: TDataSet);
var
i: Integer;
s: String;
sValue: String;
lSize: array of Integer;
begin
Memo1.Lines.BeginUpdate;
try
// Memo1.Clear;
SetLength(lSize, ADataSet.FieldCount);
s := '';
for i:=0 to ADataSet.FieldCount-1 do
begin
lSize := GetFieldSize(ADataSet.Fields);
sValue := ADataSet.Fields.FieldName;
sValue := sValue+StrUtils.DupeString(' ', lSize-Length(sValue));
s := s+sValue+' ';
end;
Memo1.Lines.Add(s);
s := '';
for i:=0 to ADataSet.FieldCount-1 do
begin
sValue := StrUtils.DupeString('-', lSize);
s := s+sValue+' ';
end;
Memo1.Lines.Add(s);
ADataSet.First;
while not ADataSet.Eof do
begin
s := '';
for i:=0 to ADataSet.FieldCount-1 do
begin
sValue := ADataSet.Fields.AsString;
sValue := sValue+StrUtils.DupeString(' ', lSize-Length(sValue));
s := s+ sValue +' ';
end;
Memo1.Lines.Add(s);
ADataSet.Next;
end;
Memo1.Lines.Add('--------------------');
Memo1.Lines.Add(SysUtils.IntToStr(ADataSet.RecordCount)+' Results');
finally
SetLength(lSize, 0);
Memo1.Lines.EndUpdate;
end;
end;
procedure TMainForm.ShowOrgUnit(AUnit: TOrgUnit);
var
skind: String;
begin
Query1.Close;
if AUnit.OrgKind=TBizObjectKind.boDept then
skind := '.DPT'
else if AUnit.OrgKind=TBizObjectKind.boPositionMember then
skind := '.PTM'
else if AUnit.OrgKind=TBizObjectKind.boPersonMember then
skind := '.PSM'
else if AUnit.OrgKind=TBizObjectKind.boOrgan then
skind := '.OGN';
Query1.Params.ParamByName('id' ).AsString := AUnit.ID;
Query1.Params.ParamByName('kind').AsString := skind;
Query1.Open;
ShowMemoResult1(Query1);
Query1.Close;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
lBizURL: TBizURL;
lUnit: TOrgUnit;
I: Integer;
begin
Memo1.Lines.Clear;
lBizURL := TBizURL.Create;
lBizURL.URL := Edit1.Text;
lUnit := Business.Model.Org.OrgSys.OrgSystem.FindUnit(lBizURL);
while lUnit<>nil do
begin
Memo1.Lines.Add('ID='+lUnit.ID+';DislpayName='+lUnit.DisplayName);
Memo1.Lines.Add(lUnit.Attribute.Text);
ShowOrgUnit(lUnit);
Memo1.Lines.Add('');
lUnit := lUnit.Parent;
end;
end;
end. |