# 介绍 无论是 [自定义对象常规属性](20.自定义对象常规属性.md) 还是 [窗体表单](../1.EDM/175.窗体表单.md) 的设计,都离不开 **自定义控件页面** 其进入 **自定义控件页面** 的方式,基本统一为在常规属性页面右键 → 在菜单中选择 **自定义界面** ![image-20240615201756319](../1.EDM/assets/image-20240615201756319.png) # 界面布局 自定义界面是对 **对象分类** 的 **常规属性** 页面进行设计,其界面设计器界面由 [树结构区](#树结构区) 、 [控件区](#控件区) 、 [属性界面区](#属性界面区) 、 [控件对齐区](#控件对齐区) 、 [控件属性设置区](#控件属性设置区) 组成 ![img](assets/clip_image002-17184539339761.jpg) ## 树结构区 由对象属性、主表、主表属性、明细表、明细表属性节点构成树结构。在 [树结构区](#树结构区),如果表节点或属性节点在 [属性界面区](#属性界面区) 中有对应的控件存在,选中节点时将选中 [属性界面区](#属性界面区) 对应的编辑控件 对其右键可进行相应操作 - **对象属性**:对象属性、主表节点或主表属性节点有效,右键选择 **对象属性** 弹出界面维护主表属性 - **复制名称**:对象属性、主表属性节点或明细表属性节点有效,复制的属性名称用于设计表单导出模板 - **复制描述**:对象属性、主表属性节点或明细表属性节点有效,复制的属性描述用于设计表单导出模板 ![image-20240615202023772](../1.EDM/assets/image-20240615202023772.png) ## 控件区 显示所有系统支持的控件,根据 [树结构区](#树结构区) 中选中的表节点或属性节点的类型来决定哪些控件可以创建。单击控件按钮,控件按钮进入标记状态,在 [属性界面区](#属性界面区) 再次单击,则在相应的位置创建对应的控件 ![image-20240616084343323](../1.EDM/assets/image-20240616084343323.png) **控件类型** - **标签**:属性节点有效,用来显示属性描述 - **编辑框**:文本类型、整数类型、小数类型属性节点有效,用来编辑属性值 - **下拉框**:枚举类型属性节点有效 - **是否**:布尔类型属性节点有效 - **多行文本**:文本类型属性节点有效 - **时间**:时间类型属性节点有效 - **图片**:图片类型属性节点有效 - **时间段**:时间类型、时间段类型属性节点有效,时间类型时,该控件做查询条件输入控件使用 - **数值段**:整数类型、小数类型属性节点有效,设置数值范围 - **复选组合框**:枚举类型且设置了多选的属性节点有效 - **单选组合框**:枚举类型且没有设置多选的属性节点有效 - **扫描件信息**:文档类型属性节点且启用了 “ 启用与打印机互交接口 ” 参数时有效 - **明细单行**:明细表节点有效 - **明细多行**:明细表节点有效 - **ERP信息**:同步ERP信息到表单界面(需定制开发) - **静态文本**:任何时候有效,设置静态文本 - **按钮**:任何时候有效;增加按钮控件 - **组合框**:界面排版用,将某些字段集中于一个框选界面 - **行政区域**:行政区域类型属性节点有效,设置省、市、区地域名称 ## 属性界面区 窗体表单属性窗体中的常规属性界面,做表单展示界面的排版 ![img](../1.EDM/assets/clip_image002-17184986687981.jpg) ## 控件对齐区 按住 “ Ctrl ” 键不放,用鼠标单击 [属性界面区](#属性界面区) 的不同控件,单击的控件将被选中,单击 “ 控件对齐区 ” 的对齐按钮,被标记的控件根据单击的按钮类型做相关操作 ![img](../1.EDM/assets/clip_image002-17184995081342.jpg) **对齐按钮类型** - **第一排**:左对齐、右对齐、上对齐、下对齐(以选择的第一个标签为准) - **第二排**:垂直居中,水平居中,水平最长宽对齐,水平最窄宽对齐 - **第三排**:垂直长高对齐、垂直短高对齐、水平指定宽间距、垂直指定高间距 - **第四排**:宽增加、高减小、宽减小、高增加 ## 控件属性设置区 显示在 [属性界面区](#属性界面区) 选中的控件的属性,并可以对其属性值进行修改 ![img](../1.EDM/assets/clip_image002-17184996194623.jpg) ![img](../1.EDM/assets/clip_image002-17184996241534.jpg) **常规属性** - **文本对齐**:设置文本的对齐方式。可设置值:左对齐、右对齐、居中 - **左边距**:设置左边距 - **高度**:设置控件高 - **宽度**:设置控件款 - **不能为空**:设置控件取值不能为空,保存数据时校验 - **提示**:设置控件提示信息 - **默认图片**:图片类型控件,设置默认图片 - **标题**:设置控件显示文本 - **样式**:按钮类型控件设置单击类型。可设置值:正常、搜索物料 - **按钮类型**:编辑框控件设置按钮的类型,可设置值:正常、选择、下拉、只读选择 - **数据类型**:控件设置取值类型,可设置值:文本、整数、小数、日期、日期时间、字母 - **使用初始值**:编辑框控件设置是否使用初始值 - **初始值类型**:编辑框控件设置初始值类型,“使用初始值”启用时属性设置才有效,可设置值:用户输入、当前用户 ID、当前用户岗位、当前用户部门、当前日期时间、当前日期、当前 时间、当前年、当前月、当前日、编码、创建时间、修改时间 - **初始值文本**:编辑框控件设置输入文本类型初始值,“使用初始值”启用且“初始值类 型”为“用户输入”时属性设置才有效 - **字体颜色**:设置字体大小及样式颜色 - **脚本**:编写脚本内容 - **按钮单击执行**:设置脚本,窗体表单实例中,脚本在单击按钮时执行 - **值改变时执行**:设置脚本,窗体表单实例中,脚本在属性值改变时执行 - **单击执行**:设置脚本,窗体表单实例中,脚本在单击控件时执行 - **双击执行**:设置脚本,窗体表单实例中,脚本在双击控件时执行 - **获得焦点执行**:设置脚本,窗体表单实例中,脚本在控件获取焦点时执行 - **失去焦点执行**:设置脚本,窗体表单实例中,脚本在控件失去焦点时执行 ### 脚本配置 根据操作的不同,为对应的事件配置脚本 其脚本格式为`Delphi`,参考代码如下: ```Delphi uses MyClass,Variables,BaseUtil,CommonFunc,DataConst,CFFrm,CFSimplePropFrm,Forms,StdCtrls,Variants,SysUtils,Classes,Controls,Dialogs, CHostIntf,ProductClas,DocClas,LoginClas,VirtualTrees,CEntClas,PathClas; var StringList: TStringList; begin // 创建和初始化TStringList StringList := TStringList.Create; try // 如果fedtusr_substrate_id的值不为空,则将值添加到StringList中 if fedtusr_substrate_id.Text <> '' then StringList.Add(fedtusr_substrate_id.Text); if fedtusr_substrate_id2.Text <> '' then StringList.Add(fedtusr_substrate_id2.Text); if fedtusr_substrate_id3.Text <> '' then StringList.Add(fedtusr_substrate_id3.Text); if fedtusr_substrate_id4.Text <> '' then StringList.Add(fedtusr_substrate_id4.Text); // 转换为逗号分隔的字符串 mmmusr_substrate2.Text := StringList.DelimitedText; // 默认使用逗号作为分隔符 // 如果需要指定其他分隔符,可以设置Delimiter属性 // StringList.Delimiter := ';'; // 设置分隔符为分号 // Result := StringList.DelimitedText; finally StringList.Free; end; end. ```