1。在此单元中添加一个私有方法,用来创建附件存储的目录。我在例子里给出了按组织机构分文件夹的方法,您可以参照此来设计其他分文件夹方法(例如按时间月份或其他组织机构层次)和分多层文件夹的方法。
function TRELEVANCYDOC.SetOrgDir(ADir: string): string;
var
lFileName: string;
ldir: string;
lFileAttribute: TFileAttribute;
begin
lFileName:= FileSys.FileUtils.MakeFileName(ADir,'ATTACH'+SystemUtils.TContextUtils.GetDept(Context).Parent.ID);
Result:= lFileName;
if TDocSystem.IsExists(lFileName) then //如果存在则退出
exit;
2。在TRELEVANCYDOC.Load方法中修改添加代码:
if (FuncURL <> '') and (FDefineItem = nil) then //仅仅为了兼容
begin
if not DataSetRelevancyDef.Active then
DataSetRelevancyDef.Open;
DataSetRelevancyDef.SQLFilter := TDOCRelevancyInfo.GetKeyFilter(FuncURL, AKeys, 2); //这里把1改成2,使文档关联的默认文件夹和权限控制生效
DataSetRelevancyDef.SQLFiltered := True;
if not DataSetRelevancyDef.Eof then
begin
if DataSetRelevancyDef.FieldByName('FDefaultDir').AsString <> '' then
begin
Dir := SetOrgDir(DataSetRelevancyDef.FieldByName('FDefaultDir').AsString) ; //在此调用创建文件夹的方法
end;
if DataSetRelevancyDef.FieldByName('FACCESS').AsString <> '' then
FAccess := DataSetRelevancyDef.FieldByName('FACCESS').AsInteger;
end;
end;