Files
WorkNote/SanPinPLM/相关操作/4.other/15.自定义控件页面.md
SeedList 0b55f96382 250122
2025-01-22 10:21:35 +08:00

146 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 介绍
无论是 [自定义对象常规属性](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.
```