PythonStudio是一个极强的开发Python的IDE工具,它使用的是Delphi的控件,常用的内容是与Delphi一致的。但是相关文档并一定完整。现在我试试能否逐步把它的控件常用用法写一点点,也作为PythonStudio的参考。
从1.2.1版开始,PythonStudio又增加了很多新的控件。
TValueListEditor从文字来看,是一个键值组的列表,其实在窗体设计器中的对象检查器就是一个键值组的列表
除了这样的属性-值对以外,也可以用这个控件来完成比如团队任务列表等功能,比如:
这个组件说是键值对,事实上和真正的KEY-VALUE还是有区别的,它可以使用重复的KEY。
组件位置
位于Additional下
常用属性和方法
常用的属性包括外观属性和内容属性
外观属性包括:
ColCount 和 ColWidth
事实上,这个控件可以设置多列的,但是在实际使用中,在第一屏显示时,只会显示第1和第2列,其余列需要通过滚动条才能看到,同时,代码中只允许对第1、2两列进行标题和内容的设置,所以一般情况下,不建议修改ColCount.
ColWidth可以设置每一列的宽度,但同样由于上述原因,只建议修改第一列的宽度,即ColWidth[0],这个值是以像素为单位的。
RowHeight
这个是行高,标题行为第一行,用RowHeight[0]来设置,其余行依此类推。
DisplayOptions
这个属性可以直接在对象检查器中设置,当分别设置为True时,会有以下显示
- doColumnTitles:标题行固定
- doAutoColResize:调整控件大小时,各列的宽度自动调整
- doKeyColFixed:调整控件大小时,只有第二列调整宽度
Options
该属性值是一个集合类型,元素说明如下。
goFixedVertLine:表格中固定列的垂直滚动条被画,
goFixedHorzLine:表格中固定行的水平滚动条被画。
goVertLine:在表格中绘制垂直线。
goHorzLine:在表格中绘制水平线。
goRangeSelect:用户能够同时选中多个单元格区域,如果Options属性包含goEditing选项,
goRangeSelect将被忽略。
goDrawFocusSelected:当单元格被选中时,将高亮显示。
goRowSizing:行能够被单独地调整大小。
goColSizing:列能够被单独地调整大小。
goRowMoving:非固定行能够通过鼠标移动。
goColMoving:非固定列能够通过鼠标移动。
goEditing:用户能够编辑单元格。如果Options属性包含该选项,则goRangeSelect不起作用。
goTabs:用户按Tab键或Shift+Tab键能够使焦点在单元格间移动。
goRowSelect:表格整行被选中。如果Options属性包含该选项,则goAlwaysShowEditor不起作用。
goAlwaysShowEditor:表格被锁定为编辑状态。用户在输入数据时,不需要按F2或Enter键便可以使表格处于编辑状态。如果Options选项不包含goEditing,该选项不起作用;如果Options包含goRowSelect,该选项也不起作用。
goThumbTracking:当用户拖动滚动块时,更新表格,否则,表格不被更新,直到用户释放拖动的滚动块。
内容属性和方法常用的是
TitleCaptions
这个是标题,第一列为TitleCaption[0]
列标题也可以直接在对象检查器里进行设置
KeyOptions
这个可以在对象检查 器中进行设置,主要对于第一列(Key列)进行约束
如果分别设置为True,将会有以下功能
- keyEdit:允许编辑
- keyAdd:允许添加(在操作时,需要使用 键盘向下键 ,就可以添加行了)
- keyDelete:允许删除(实际上没有操作方法)
- keyUnique:键值 不允许重复
InsertRow方法
插入键值对,语法是 InsertRow(键,值,True)
以上的内容可以用一段代码来演示
# 第一列的宽度
self.ValueListEditor1.ColWidths[0]=60
# 每列的列名
self.ValueListEditor1.TitleCaptions[0]='姓名'
self.ValueListEditor1.TitleCaptions[1]='任务'
# 插入内容
self.ValueListEditor1.InsertRow("李四","打扫卫生",True)
self.ValueListEditor1.InsertRow("王五","开车",True)
# 设置行高
for i in range(self.ValueListEditor1.RowCount):
self.ValueListEditor1.RowHeights[i-1]=25
Keys和Values
设定第一列的值,注意,它只能修改或读取已有行的键名,不能超过行数
# 修改第3行的键名(第3行必须存在)
self.ValueListEditor1.Keys[2]="姓名"
Values也一样,不多说了。
Cells
Cells属性与Excel中Vba的单元格是相反的,是先列再行,可以读取也可以设置
# 显示第1列第2行的值
ShowMessage(self.ValueListEditor1.Cells[0,1])
# 修改第2列第3行的值
self.ValueListEditor1.Cells[1,4]="烧饭"
Strings
这个是最简单的设置行内容 的方法,直接可以通过“key=value”的方式来进行设置
# 每列的宽度
self.ValueListEditor1.ColWidths[0]=60
# 每列的列名
self.ValueListEditor1.TitleCaptions[0]='项目'
self.ValueListEditor1.TitleCaptions[1]='内容'
# 添加行
for i in range(4):
self.ValueListEditor1.InsertRow(i,"",True)
# 设置行高
self.ValueListEditor1.RowHeights[i]=25
# 修改键列
self.ValueListEditor1.Strings[0]="姓名=张三"
self.ValueListEditor1.Strings[1]="性别=男"
self.ValueListEditor1.Strings[2]="年龄=25"
self.ValueListEditor1.Strings[3]="籍贯=浙江"
用Strings时要注意,直接输入“姓名=张三”,它直接认为等号前后是字符。
Col与Row
读取当前焦点的列、行值
ItemProps
对值列进行下拉框选择或设置,从而防止非法输入
-下拉框
# 第二行 下拉选择
self.ValueListEditor1.ItemProps[1].PickList.Add("米饭")
self.ValueListEditor1.ItemProps[1].PickList.Add("流质")
self.ValueListEditor1.ItemProps[1].PickList.Add("半流质")
self.ValueListEditor1.ItemProps[1].PickList.Add("不订餐")
- 带格式编辑
这一功能可以使用TMaskEdit中的掩码来进行编辑
# 设置日期掩码
self.ValueListEditor1.ItemProps[0].EditMask="0000年90月90日"
- 最长输入字符数
self.ValueListEditor1.ItemProps[0].MaxLength=5
- 只读
self.ValueListEditor1.ItemProps[0].ReadOnly=True
RowCount
读取控件中的行数
DeleteRow方法
这个是方法,所以语法是 DeleteRow(行号),千万不要写成DeleteRow[行号]
事件
有几个事件可以注意使用
OnStringsChange
在第二列数据变化后触发
OnStringsChanging
在第二列数据变化时触发
其他事件都可以理解,不多说了。