TValueListEditor 控件使用方法

 

TValueListEditor 控件使用方法

 

CST 2005-07-19

1 文档目的

 

1.1 写作目的

 

本文简单介绍了TvalueListEditor控件的基本使用方法。可以使用该控件实现类似DELPHI中OBJECT INSPECTOR的功能。

 

 

1.2 备注

 

下文所有vle为一个TvalueListEditor对象。

 

2 简单操作

 

操作

代码

添加个属性编辑

InsertRow(Field,Value,Append);

删除一个属性

DeleteRow(RowIndex);

统计属性个数

RowCount;

获得激活的属性INDEX

Row

定位

根据KEYSTR定位,找到后的位置保存在INDEX中

FindRow(KeyStr,Index);

获得KEY的内容字符串

skey:=vle.Keys[vle.row];

修改/获得VALUE的内容字符串

vle.Values[key]:=txtvalue.Text;

属性值只读

Vle.ItemProp[I].ReadOnly:=True;

 

 

3 数据绑定形式

 

3.1 数据存储格式

 

TvalueListEditor的数据实体是保存在TvalueListEditor对象的Strings成员中,Strings成员是一个Tstring类型对象,通常以TstringList实现。

 

在TstringList中每个string必须以如下形式存储:

 

KeyStr=ValueStr

 

如果等号没有找到,整个string会被作为Value处理,此时Key为空。

 

修改GRID内容后,会影响到STRINGS的数据。

 

 

3.2 导入导出

 

TSTRING对象可以将数据导出,函数为:

 

SaveToFile和LoadFromFile

 

 

 

4 编辑样式设置

 

4.1 KEY字段的样式

 

KEY字段(属性名称)是4种显示样式的组合。

 

样式

介绍

KeyEdit

KEY列的内容也可以由用户修改

KeyAdd

用户可以添加一个属性

按INS键或者在最后条按DOWN

必须和KEYEDIT配合使用

KeyDelete

用户可以删除一个属性

按DEL键(未实现)

KeyUnique

禁止创建重复KEY的属性

 

vle.KeyOptions:=[keyUnique, keyEdit, keyAdd] ;

 

建议使用keyUnique样式,禁止创建重名的属性,便于根据KEY定位到值。

 

当创建重名属性时会raise一个Exception。

 

 

4.2 项目编辑方式

 

ItemProps.EditStyle属性决定了编辑的样式:普通,下拉列表,弹出窗口。

 

esSimple, esEllipsis, esPickList

 

 

4.2.1 下拉列表

 

先设置某项的ItemProps为esPickList,然后将一个TstringList对象赋值给ItemProps的PickList成员。该StringList将成为下拉列表中的选项内容。

 

ItemProps[I].EditStype:=esPickList;

 

ItemProps[i].PickList:=TStringList_Object;

 

其中参数I可以是KEY(STR)也可以是INDEX(INTEGER)。

 

 

4.2.2 普通编辑方式

 

使用Input Mask

 

ItemProps[I].EditStype:=esSimple;

 

ItemProps[i].Mask:=StrMaskCharacters;

 

MASK串的相应功能可以参考HELP。

 

 

4.2.3 使用弹出编辑器

 

ItemProps[i].EditStyle:=esEllipsis;

 

用户按下[…]按钮后会触发TvalueListEditor的OnEditButtonClick事件。我们可以在此前的OnClick时间中记录选中的行号:

 

strGlobalSelKey:=vle.Key(vle.Row);

 

 

在事件OnEditButtonClick 中判断要打开的编辑窗口。为VLE.STRING每个STRING维护一个TSTRINGLIST,记录编辑样式和弹出窗口ID。

 

1.        根据SWITCH判断要打开的编辑窗口

 

2.        将激活的KEY传递给编辑窗口

 

3.        编辑窗口完成编辑后将VLE.VALUE(KEY):=EditValue;保存返回。

 

 

(in FormMain Unit)

 

......

 

    with FormEdit do

 

    begin

 

        key:=FormMain.skey;

 

        Caption:='edit: '+skey ;

 

        ShowModal ;

 

    end;

 

......

 

 

(in FormEditing Unit)

 

......

 

    formmain.vle.Values[key]:=txtvalue.Text;

 

    self.Close;

 

......

 

 

 

5 可能会需要用到的一些类型转换函数

 

l         StrToBool

 

l         StrToDate/StrToDateTime

 

l         StrToFloat

 

l         StrToIntDef

 

 

 

6 小结

 

本文参考的DELPHI 6的帮助文档,并简单描述了TVALUELISTEDITOR的使用方法,研究此控件是为了在一个DELPHI项目中实现自定义控件的动态编辑。只要对该控件进行一层封装就可以被自定义的组件所调用。没有实现的功能为DELPHI中可以展开的项目。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值