yg-ecp详细设计说明书vo高级属性设置_第1页
yg-ecp详细设计说明书vo高级属性设置_第2页
yg-ecp详细设计说明书vo高级属性设置_第3页
yg-ecp详细设计说明书vo高级属性设置_第4页
yg-ecp详细设计说明书vo高级属性设置_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VO 高级属性设置详细设计说明书二一三年五月文档修订序号版本号修订日期修订概述修订人人备注目录1 引言文档目的1文档范围1预期读者1文档要求1术语和缩略语1参考资料1VO 高级属性设置总体概述1VO 高级属性编辑界面功能描述2关键设计点6功能关键实现83 VO 模型属性设置信息缓存功能描述16关键设计点18功能关键实现184 VO 元模型文件生成功能描述25关键设计点28功能关键实现285 附录321 引言1.1 文档目的说明编写这份设计书的目的。1.2 文档范围这个文档内容包含的范围。1.3

2、 预期读者预期的读者和有关阅读建议。1.4 文档要求请在这里给出当前文档的要求。1.5 术语和缩略语描述与该系统相关的术语与缩略语。表 1-1 本文使用的缩略语和术语1.6 参考资料列出有关的参考文件,如:本项目的经核准的计划任务书或合同、机关的批文;属于本项目的其他已文件;本文件中各处的文件、资料,包括所要用到的开发标准。1 VO 高级属性设置总体概述元模型项目高级属性设置,需要在代码向导生成的 VO 模型上增加高级属性进行设置。高级属性设置包括 VO 元模型的相关属性设置,在完成 VO 模型的创建的创建后,术语/缩略语全 称说 明在模型高级属性中设置元模型项目属性并保存到对应配置文件(.m

3、dmx)括:能主要包VO 高级属性编辑界面VO 模型属性设置信息缓存VO 元模型文件生成2VO 高级属性编辑界面2.1 功能描述通过 VO 设置界面,可以对 VO 属性进行设置(添加,删除,高级设置等).界面设计如下:术语描述VO 模型元模型视图模型或者值模型,与客户端进行数据交互的数据模型。一套完整的对象描述结构,用于对数据模型的结构进行描述针对 VO 属性列表中的属性,提高了高级属性设置界面,对 VO 显示属性进行设置,界面如下:属性说明如下:数据字段属性类型元数据字段属性元数据字段标题说明名称字符串name名称带出基本属性中已设置的显示名称字符串caption标题带出基本属性中已设置的长

4、度数值length项目长度对应 PO 模型此属性精度数值scale项目精度对应 PO 模型此属性默认值字符串defaultValue默认值对应 PO 模型此【功能规则】1.2.3.显示方式:直接输入;下拉选择;弹出选择;嵌入;只读;项目状态:正常、停用;显示格式:由用户输入;固定标志:普通、固定、键值、标题。4.5.长度/精度/默认值:由导入PO 模型对应属性读入。属性类型字符串daype数据类型根据 VO 属性类型有不同的类型进行对应显示方式枚举displayType显示方式Input, Select, Popup, Embed, Readonly,对应直接输入,下拉选择,弹出选择,嵌入,只

5、读输入器字符串inputer项目输入器选择数据类型选择 后,可以根据需要选择项目提供的多种输入器。显示格式字符串format对应数据类型的显示格式如日期类型的显示格式:yyyy-mm-dd数据源类型枚举dataSource数据源类型Input,RefProper ty,Expres,A utoCode,对应 直接输入,属性,表达式,自动编码项目状态枚举se项目状态项目状态的取值为:Normal, Stoped,分别对应“正常”和“停 用”固定标志枚举fixFlag项目的固定标志固定标志的取值为:Normal, Fix, ernal, Key,Caption;分别对应 0-4数据正则表达式字符串

6、dataExpressio n数据的正则表达式正则表达式的格式允许多选boolea nmultiValue是否允许多选如果是数组,则 multiValue 为 true,否则为 false6.数据源类型:数据源类型如果设置的是“表达式”,直接弹出调用取数/运算表达式设置界面。7.输入器:根据选择的数 据模型,ponent.ef.service/plugin.xml 文件中的对应数据类型下inputer 节点输入器caption 名称供选择。2.2关键设计点1.VO 高级属性中的类型与 VO 属性列表中的数据类型存在着对应关系,不同的数据类型可选的类型也不一致,关系对应规则如下:2.VO 属性列

7、表中的属性有一部分额外的属性对应生成 mdmx 文件时需要添加到文件信息当中,规则如下:类型说明如下:数据字段属性类型元数据字段属性元数据字段标题说明数据类型可选显示类型说明String字符串、管理对象、枚举、枚举类型、业务分类、对象分类、业务单据、单据类型、 数据类型、条形码、通用实体、通用表实体、科目、子表、单位代码、 值类型Byte,Short,Long,Decimal数值Date日期Java 某枚举类系统枚举Java 类字符串、管理对象、枚举、枚举类型、业务分类、对象分类、业务单据、单据类型、 数据类型、条形码、通用实体、通用表实体、科目、子表、单位代码、 值类型Blob,Clob文件

8、/图像【功能规则】1.类型: 项目的数据类型除了是基本类型以外,还可能是类型,比如单,实际为一个引据中有一个属性为dxid,的是管理对象类型的ID,类型为用类型,需要描述信息,如的是哪个对象类型等,常用的类型有枚举、对象、分类等。如果设置了多表关联,系统从数据模型的关联设置中下表格的属性,写到refTypeValues 中。如2. 数据类型为“复合类型”的才需要设置类型。3.类型选择完毕的,表格对应属性值标识“已设置”,可点击弹出查看。属性说明如下:类型展示界面如下:属性的实体类型是系统枚举、枚举、管理对象、业务单据、对象分类、业务分类等复合类型的,需要弹出选择控件选择管理对象类型、业务单据类

9、型或者通用实体类型,目前只支持手工输入复合类型对应的typeId 实现;复合类型clatypeId系统枚举sysenum选择的 java 类路径枚举enum输入管理对象GLDX输入业务单据gris.ywdj输入对象分类dxfl输入业务分类ywfl输入数据字段属性类型元数据字段属性元数据字段标题说明类别Strin gcla类别ID类型Strin gtypeId类型ID表名Strin gtableName表名的属性Strin grefProperty属性的标题字段Strin grefCaption的标题类型枚举refTypeValues类型只有复合类型才需要设置 类型。2.3 功能关键实现VO 高

10、级属性编辑工厂:/*VO高级属性编辑工厂类*author zhongshi (to:zho)*/public class ECPViewFieldTabbedFactory extends CompoundControlFactory implementsIValueChangeListener private StringPropertyEditor columnNameEditor; private StringPropertyEditor columnDisplayNameEditor; privateegropertyEditor columnLengthEditor; private

11、egropertyEditor columnPreciEditor; private StringPropertyEditor defaultValueEditor;privatePropertyEditor isMultiEditor;private ComboPropertyEditor viewTypeEditor; private ComboPropertyEditor viewModeEditor; private StringPropertyEditor viewFormatEditor; private ComboPropertyEditor viewInputerEditor;

12、 private ComboPropertyEditor dataSourceEditor; private ComboPropertyEditor viewSeEditor; private ComboPropertyEditor viewFixFlagEditor; private StringPropertyEditor dataExpresEditor;private ObjectEditor basicEditor;private ObjectEditor viewEditor;private PropertySheetViewerEx propertySheetViewer;pri

13、vate ECPViewMviewM;privateMappropertyEntryDescriptorMap=new HashMap();private Map valuereitory;private PropertyElement propertyElement;private String propertyType = ;private String Ref_Entity_View_Table=table;private String Ref_Entity_View_Entity=ecp.tableentity;privateisEntPojo ;public ECPViewField

14、TabbedFactory(Map valuereitory) this.valuereitory = valuereitory;String type=(String) valuereitory.get(IVMSConstant.PROPERTY_TYPE);isEntPojo = type.equals(IVMSConstant.PROPERTY_ENTPOJO);init();private void init() .private void initEntPojoViewM.() private void initColumnViewM() .Overrideprotected Con

15、trol doCreateControl(Comite parent, UIDefinition uiDefinition) Comiteite = new Comite(parent, uiDefinition.getStyle();ite.setLayout(new GridLayout();ite.setLayoutData(new GridData(GridData.FILL_BOTH);if(!isEntPojo)Group basicGroup = new Group(basicGroup.setText(EcpViewMite, SWT.NONE);Message.GrpupBa

16、sicProperty);basicGroup.setLayout(new GridLayout(1,false);GridDatabasicGridData = new GridData(GridData.FILL_HORIZONTAL); basicGroup.setLayoutData(basicGridData);basicEditor=createBasicEditor();basicEditor.seement(this.valuereitory);iteuiDefinition.getStyle(), basicEditor);ite=newite(basicGroup,ite.

17、setLayoutData(new GridData(GridData.FILL_BOTH);Group viewGroup = new Group( viewGroup.setText(EcpViewMite, SWT.NONE);Message.GroupViewProperty);viewGroup.setLayout(new GridLayout(1,false);GridDataviewGridData = new GridData(GridData.FILL_HORIZONTAL); viewGroup.setLayoutData(viewGridData);viewEditor=

18、createViewEditor();viewEditor.seement(this.valuereitory);iteuiDefinition.getStyle(), viewEditor);ite=newite(viewGroup,ite.setLayoutData(new GridData(GridData.FILL_BOTH);/属性列表createPropertySheetViewer(ite);returnite;private void createPropertySheetViewer(Comite comite) Comite parent = new Comite(comi

19、te, SWT.NONE|SWT.BORDER);parent.setLayout(new GridLayout(); parent.setLayoutData(new GridData(GridData.FILL_BOTH); propertySheetViewer = new PropertySheetViewerEx(parent); GridData data = new GridData(GridData.FILL_BOTH); data.horizontalSpan = 4;data.minimumHeight=200; propertySheetViewer.getControl

20、().setLayoutData(data); PropertySheetEntry propertySheetEntry=new PropertySheetEntry(); propertySheetEntry.setPropertySourceProvider(newECPViewPropertySourceProvider(); propertySheetViewer.setRootEntry(propertySheetEntry); propertySheetViewer.setSorter(new ECPViewPropertySheetSorter();propertySheetV

21、iewer.setInput(new ObjectpropertyEntryDescriptorMap);propertySheetViewer.addSelectionChangedListener(new ISelectionChangedListener() Overridepublic void selectionChanged(SelectionChangedEvent event) formEntryDescriptorMap();fireValueChanged(null););private ObjectEditor createViewEditor() .return obj

22、ectEditor;private ObjectEditor createBasicEditor() ObjectEditor objectEditor = new ObjectEditor();.return objectEditor;public void refreshPropertySheetViewer() if(propertySheetViewer = null | pertyEntryDescriptorMap = null) return;propertySheetViewer.setInput(new Object pertyEntryDes

23、criptorMap );if(propertySheetViewer.getRootEntry() = null) propertySheetViewer.setRootEntry(new PropertySheetEntry();propertySheetViewer.refresh();Overridepublic void valueChange(ValueChangeEvent r_Event) .Overridepublic void save() super.save();if( basicEditor != null) basicEditor.save();if( viewEd

24、itor != null) viewEditor.save();formEntryDescriptorMap();if(isEntPojo)VO 显示模型管理类:/*VO显示模型管理类*author zhongshi (to:zho)*/public class ECPViewMManager implements IViewMManager Overridepublic CompoundControlFactory getFactory(Map map) /获取VO高级属性编辑工厂.Overridepublic void initViewFieldControl(IControlFactor

25、y controlFactory, Caller messageCaller) saveEntPojo();elsesaveColumnProperty();private void saveEntPojo() EntPojoProperty entPojoProperty=(EntPojoProperty) propertyElement;ViewFieldEditfieldEdit=(ViewField) entPojoProperty.getEntViewField().get(0).getFieldEdit();ECPViewMHelper.assemblyViewMToViewFie

26、ld(viewM,fieldEdit); (ViewField) entPojoProperty.getEntViewField().get(0).setFieldEdit(fieldEdit);private void saveColumnProperty() ColumnProperty columnProperty=(ColumnProperty) propertyElement; ViewFieldEdit fieldEdit = columnProperty.getViewField().getFieldEdit(); ECPViewMHelper.assemblyViewMToVi

27、ewField(viewM,fieldEdit); columnProperty.getViewField().setFieldEdit(fieldEdit);.Overridepublic void assemblyViewMData(Map map, String showType) Object object =map.get(IDataSetConstants.OBJECT_EDITED);if(!(object instanceof PropertyElement)return;if(object instanceof ColumnProperty)ColumnProperty cl

28、mProperty = (ColumnProperty) object; clmProperty.setShowType(showType); iniViewField2NewColumnProperty(clmProperty);/当列类型发生变化时,的显示模型的变化,暂不需进行实现Overridepublic void iniViewField2NewColumnProperty(ColumnProperty clmProperty) /新添加属性初始化显示模型.OverridepublicvoidinitViewField2NewEntPojoProperty(EntPojoProper

29、tyentPojoProperty,EntityElement refEntity) /.属性初始化显示模型Overridepublic void assemblyColumnPropViewFieldMap(Map map, ViewField field, inEntProp) /在上下文中添加显示模型信息Overridepublic void assemblyEntPojoPropertyViewFieldMap(Map map, EntityElement refEntity, EntPojoProperty entPojoProperty) /在上下文中添加显示模型信息Overrid

30、epublic void setColumnViewField(ColumnProperty editedClmProp, Map map) ViewField viewField = editedClmProp.getViewField();if(viewField!=null)ViewFieldEdit fieldEdit = viewField.getFieldEdit(); String showType = editedClmProp.getShowType();MapviewTypes=ECPViewInputerManager.getInstance().getViewTypeM

31、ap(showType);if(fieldEdit!=null & !viewTypes.containsKey(fieldEdit.getType().getName() iniViewField2NewColumnProperty(editedClmProp);elseiniViewField2NewColumnProperty(editedClmProp);private void initColumnProperty(ColumnProperty editedClmProp, Map map) /初始化VO属性信息private void dosetEditwFieldValue(Co

32、lumnProperty editedClmProp,ViewField vmField, Map map, ViewFieldEdit vmFieldEdit) ECPViewMviewElement=(ECPViewM)map.get(IVMSConstant.VM_FIELD_VIEW_EOSTAGELEMENT);initColumnViewFieldEdit(editedClmProp, vmFieldEdit, viewElement);private void initColumnViewFieldEdit(ColumnProperty editedClmProp,ViewFie

33、ldEdit vmFieldEdit, ECPViewMif(viewElement = null) viewElementviewElement) =createDefaultViewM(vmFieldEdit,editedClmProp.getShowType();if(viewElement = null) return;ECPViewMHelper.assemblyViewMToViewField(viewElement,vmFieldEdit);private void initEntPojoViewFieldEdit(EntPojoProperty entPojoProperty,

34、 ViewFieldEdit vmFieldEdit, ECPViewMviewElement) if(viewElement = null)viewElement = createDefaultViewM(vmFieldEdit,entPojoProperty.getRefId();if(viewElement = null) return;if(viewElement.getViewInputer() = null) return;ECPViewMHelper.assemblyViewMToViewField(viewElement,vmFieldEdit);private void do

35、setViewFieldValue(ColumnProperty editedClmProp,ViewField vmField, Map map, ViewFieldView vmFieldView) Overridepublic void setEntViewField(EntPojoProperty entProp, Map map) /远光项目中,属性不需要显示属性privateECPViewMcreateDefaultViewM(ViewFieldEditvmFieldEdit,String showType) ECPViewMviewM= new ECPViewM(); Strin

36、g viewType=vmFieldEdit.getName();viewM.setDaype(viewType); viewM.setReferenceType(false);String inputerName=ECPViewInputerManager.getInstance().getDefaultInputerName(viewType);ECPViewInputerviewInputer= ECPViewInputerManager.getInstance().getViewInputerByName(viewType, inputerName,showType);viewM.se

37、tViewInputer(viewInputer);return viewM;3 VO 模型属性设置信息缓存3.1功能描述VO 高级属性编辑工厂中显示属性的可选的配置信息,都需要通过*.dtx 文件获提供.文件内容得,通过如:.dtx 得到相应的显示属性信息,.dtx 文件由服务开发jcls:ponent.ef.service.m.EntityItemTypeVO,gid: c8c06b3af11d41d8a8e3afbdbb21aebc,name: date,caption: 日期,reftype: 0,sqllength: 0,sqlscale: 0,sqltype: DATE,desig

38、ners: ,inputers: name: default,caption: 日期选择,code: ecp.ui.datafield.Datcker,protocol: 0,option:showOn: button,dateFormat: yy-mm-dd,showType: D,showTime: false,showButtonPanel: true,showOtherMonths: true,duration: ,name: timeSpiner,caption: 时间微调,code: ecp.ui.datafield.TimeSpiner,3.2 关键设计点1.*.dtx 文件信息

39、内容管理提供了相应的管理工具类,管理工具类在首次被调用时,相应的 dtx 文件信息,同时将得到的信息进行缓存,保证不会多次读寻找并取相同的文件造能问题.2.*.dtx 文件信息内容是 JSON 格式的信息,所以文件信息时,需要依赖 JSON文件相关的 API3.3 功能关键实现*.dtx 文件信息内容管理工具类代码实体如下:/*显示模型信息管理类*author zhongshi (to:zho)*/public class ECPViewInputerManager private sic ECPViewInputerManager INSTANCE;private sic String Fi

40、le_Exten = dtx;private sic String ConfigBundleId = ponent.ef.impl;protocol: 0,option:,prosors: ,translators: ,.private sic String ShowType_Java_Enum=java_enum;private sic String ShowType_Java_Other=java_other;private sic Map viewReferenceMap = new HashMap();private sic List itemTypeFiles =new ArrayL

41、ist();privatesicMapString,ListviewInputersMap=newHashMapString, List();privatesicPlatChangeListenlatChangeListener=newPlatChangeListener();/数据类型与显示类型的对应关系privatesicMapString,ListviewTypeLists=newHashMapString,List();/显示类型与显示类型显示名称的对应关系private sic Map viewTypeNameMap = new HashMap();/String,Java类字符串、

42、管理对象、枚举、枚举类型、业务分类、对象分类、业务单据、单据类型、类型数据类型、条形码、通用实体、通用表实体、科目、子表、代码、值List stringList = new ArrayList(); stringList.add(string);stringList.add(gldx); stringList.add(enum); stringList.add(enumlx); stringList.add(ywfl); stringList.add(dxfl); stringList.add(ywdj); stringList.add(ywdjlx); stringList.add(dayp

43、e); stringList.add(barcode); stringList.add(ecp.entity); stringList.add(ecp.tableentity); stringList.add(km); stringList.add(table); stringList.add(unitCode);stringList.add(ecp.reftype);viewTypeLists.put(String, stringList);viewTypeLists.put(ShowType_Java_Other , stringList);/Byte,Short, ,Bigeger,Fl

44、oong,Double,Decimal-数值List numList = new ArrayList();numList.add(number);viewTypeLists.put(Byte, numList); viewTypeLists.put(Short, numList); viewTypeLists.put(, numList); viewTypeLists.put(Long, numList);viewTypeLists.put(Decimal, numList);/Date,Time,TimeSt- 日期List daist = new ArrayList();daist.add

45、(date);viewTypeLists.put(Date, daist);/Java某枚举类- 系统枚举List sysenumList = new ArrayList();sysenumList.add(sysenum);viewTypeLists.put(ShowType_Java_Enum, sysenumList);/-ListList.add(List = new ArrayList(););viewTypeLists.put(,List);/BlobFile文件/图像List blobList = new ArrayList(); blobList.add(blob);/Clob

46、File文件/图像List clobList = new ArrayList(); clobList.add(clob);viewTypeLists.put(Blob, blobList);viewTypeLists.put(Clob, clobList);public sic ECPViewInputerManager getInstance()if(INSTANCE = null)INSTANCE = new ECPViewInputerManager(); Job.getJobManager().addJobChangeListenlatChangeListener);return IN

47、STANCE;publichasViewInputerConfiguration()if(itemTypeFiles.size() 0)return true;return false;public sic void reload()viewTypeNameMap.clear(); viewReferenceMap.clear(); viewInputersMap.clear(); itemTypeFiles.clear();INSTANCE = new ECPViewInputerManager();public ECPViewInputerManager() load();private

48、void load() initItemTypeFiles();for(IFileDelegate fileDelegate:itemTypeFiles) InputStream inputStream = null;try inputStream = fileDelegate.getContents();StringjsonContent=IOUtils.toString(inputStream,ECPViewMContent.View_Inputer_Encoding);JSONArray jsonArray=new JSONArray(jsonContent);for(i=0 ;ijso

49、nArray.length();i+)JSONObject viewTypeJson = jsonArray.getJSONObject(i);if(!viewTypeJson.has(ECPViewM continue;Content.View_Inputer_Name)StringviewTypeJson.getString(ECPViewMviewTypeNameContent.View_Inputer_Name);=viewTypeNameMap.put(viewTypeName,viewTypeJson.getString(ECPViewMContent.View_Inputer_C

50、aption);if(viewTypeJson.has(ECPViewMContent.View_Inputer_RefType)viewReferenceMap.put(viewTypeName,viewTypeJson.getString(ECPViewMContent.View_Inputer_RefType);JSONArrayviewTypeJson.getJSONArray(ECPViewMinputersContent.View_Inputer_Inputers);=List viewInputers=parserECPViewInputers(inputers);viewInp

51、utersMap.put(viewTypeName, viewInputers); catch (ResourceException e) e.prStackTrace(); catch (Exception e) e.prStackTrace(); finally IOUtils.closeQuietly(inputStream);privaist parserECPViewInputers(JSONArray inputers) List viewInputers=new ArrayList(); List nameList = new ArrayList();.return viewIn

52、puters;private void paserInputerJson(JSONObject inputerJson, ECPViewInputer viewInputer) .public Map getViewTypeMap(String showType) Map keyValue = new HashMap(); List viewTypes = viewTypeLists.get(showType); if(viewTypes = null)String type = parseOtherType(showType); viewTypes = viewTypeLists.get(t

53、ype);if(viewTypes = null) return keyValue;for(String key : viewTypes)if(viewTypeNameMap.containsKey(key)keyValue.put(key, viewTypeNameMap.get(key);return keyValue;private String parseOtherType(String showType) String type = ;.return type;public Map getInputersMapByViewType(String viewType) Map Input

54、ersMap=new HashMap(); List inputers=viewInputersMap.get(viewType); for(ECPViewInputer viewInputer: inputers)String inputerCaption = viewInputer.getInputerCaption();if(inputerCaption=null)inputerCaption = viewInputer.getInputerName();InputersMap.put(viewInputer.getInputerName(), inputerCaption);retur

55、n InputersMap;publicisReferenceViewType(String viewType)String refType=viewReferenceMap.get(viewType);if(refType!=null&1.equals(refType) return true;return false;public String getDefaultViewType(String showType)String viewType = ECPViewM.return viewType;Content.View_Inputer_DefaultType;public String

56、 getDefaultInputerName(String viewType) List list = viewInputersMap.get(viewType);.return ECPViewMContent.View_Inputer_Default;public ECPViewInputer getViewInputerByName(String viewType,String inputerName,String showType)List inputers=viewInputersMap.get(viewType);.return viewInputer;private JSONArr

57、ay getEnumData(IType enumType) throws JavaM JSONArray data = new JSONArray();.return data;Exception private ECPViewInputer cloneViewInputer(ECPViewInputer inputer) ECPViewInputer viewInputer=new ECPViewInputer();.return viewInputer;/* return*/private sic List initItemTypeFiles() List contributionPro

58、jects = new ArrayList();IContributionProjectconProject=EclipseRootDelegate.getInstance().getExternalECPContributionProject(ConfigBundleId);if(conProject != null) contributionProjects.add(conProject);IContributionProjectworkspaceProjects=EclipseRootDelegate.getInstance().getWorkspaceContributionProje

59、cts();for(IContributionProject project:workspaceProjects)if(EcpRuntimeHelper.isImplementContribution(project) contributionProjects.add(project);for(IContributionProject contributionProject:contributionProjects)IFolderDelegate itemTypeFolder=contributionProject.getMetaInfFolder().getFolder(ECPViewMER

60、_FILDDIR);Content.INPUT4 VO 元模型文件生成4.1 功能描述在完成 VO 模型的高级属性的设置后,生成的元模型项目属性将保存到对应配置文件(.mdmx) 中,生成样例如下:_ver:2.0,caption: 用户信息表,cla: ecp.system,typeId:XTYHXX,for(IResourceDelegate delegate:itemTypeFolder.getChildren()if(delegate.getType()!=IFile.FILE) continue;IFileDelegate dtxFile = (IFileDelegate)deleg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论