最近研究了一下UniGUI的TuniDBGrid,记录一下免得忘记了。

TuniDBGrid的重要属性包括:

1、列—TUniDBGridColumns和TUniDBGridColumn

每个列对象(TUniDBGridColumn)的重要属性包括:

  • CheckBoxField : TUniCheckBoxField

列作为CheckBox操作的相关属性

属性

类型

说明

AutoPost

Boolean

当用户点选CheckBox后,改变前端显示并根据该属性决定:

True—立即自动提交到数据集中并刷新前端显示

False—只改变前端显示,当记录滚动时再提交数据集

BooleanFieldOnly

Boolean

是否只针对Boolean字段,

True—只能识别Boolean字段,非Boolean字段将不能显示CheckBox

False—DisplayValues和FieldValues可以针对非Boolean字段进行处理

Enabled

Boolean

是否允许显示CheckBox

DisplayValues/

FieldValues

string

联合决定了CheckBox不同状态下对应的值,FieldValues存储字段值,DisplayValues存储显示文字,如果空白就表示不显示文字,只显示CheckBox,每个值通过分号(;)区分,文字显示CheckBox的右侧。如下图:

  • DisplayMemo:Boolean

对TMemoField而言,是否显示(Memo)字样,缺省为False

False—不显示字段内容,显示(Memo)字样

True—不显示(Memo)字样,而是直接显示字段内容

  • Filtering : TUniColumnFilter

在列标题下显示过滤编辑框,自动对列数据进行过滤,如下图:

参考Demos下的GridFilter例子。要实现该功能,必须:

A.放一个TUniHiddenPanel控件在窗体上,然后将TUniEdit、TUniComboBox 、TUniDBLookupComboBox等控件放置在这个隐藏的Panel上,如下图:

B.设置每个列的Filtering,将其Editor属性设置对应的编辑控件

C. 对编辑控件进行相关属性设置,如TUniDBLookupComboBox需要设置ListSource等

属性

类型

说明

ChangeDelay

Integer

当用户键入字符后,延时进行过滤处理的毫秒数

Editor

TControl

过滤的输入框,按照输入框内容进行过滤。TUniDBLookupComboBox按照KeyField的值进行过滤

Enabled

Boolean

是否允许进行过滤

  • GroupHeader和GroupHeaderSeparator

多栏显示表头,如GroupHeader = a;b;c 时的样式见下图:

  • ShowSummary:Boolean

是否显示合计值,与Grid的Summary的属性联合使用。

  • Sortable:Boolean

是否允许进行排序操作。允许排序操作时,在字段名称旁显示排序符号,并且在Menu中的排序菜单是可用的,如下图:

  • Editor : TControl;

对该字段进行编辑时,对应的单元采用怎样的控件进行处理,这个功能非常强大,如设置TuniComboBox作为Editor则完全替代字段Picklist的功能,如下图:

  • Memu(TUniColumnMenu)

对列标题下拉显示的菜单进行控制

属性

类型

说明

ColoumnHideable

Boolean

是否允许隐藏字段,缺省True,即允许用户通过勾选隐藏指定的列,如下图:

MenuEnabled

Boolean

是否允许显示列的菜单

MenuText

String

该列显示在菜单上的文字,缺省为空,表示显示字段DisplayLabel,否则显示该文字。如下图:

  • ImageOptions

当该字段需要显示图片时,联合使用ImageOptions属性和OnFieldImage事件,其中:

属性

类型

说明

Height/Width

Integer

显示图片的大小

Visible

Boolean

是否显示图片,True则触发OnFieldImage事件进行图片处理,如:

procedure TMainForm.UniDBGrid1FieldImage(const Column: TUniDBGridColumn;

const AField: TField; var OutImage: TGraphic; var DoNotDispose: Boolean;

var ATransparent: TUniTransparentOption);

begin

if SameText(AField.FieldName, 'gender') then

begin

// 代码处理图片

DoNotDispose := True;

// 根据字段值返回图片

if AField.AsString = 'male' then

OutImage := UniImage1.Picture.Graphic

else if AField.AsString = 'female' then

OutImage := UniImage2.Picture.Graphic;

end;

end;

该方法可以让列显示某项图片按钮,如:

uniGUI试用笔记(十一)的更多相关文章

  1. uniGUI试用笔记(十三)调用WebService

    今天尝试用uniGUI做Web服务器,调用应用服务器的WebService,遇到些问题记录下来备忘. 1.对WebService的调用同一般App程序,只是注意如果WebService的执行时间较长, ...

  2. uniGUI试用笔记(十)

    今天用LoadRunner对uniGUI的Standalone模式的程序进行了一次压力测试,程序采用三层模式,将应用服务器与Web服务器分离,由于条件限制,数据库.应用服务和Web服务都部署在同一条云 ...

  3. uniGUI试用笔记(九)

    uniGUI执行程序部署有3种形式 1.ISAPI模式 部署在IIS或Apache,程序编译为Dll形式,没有试,准备后续专门测试一下. 2.标准执行文件模式 将软件编译成一个独立的Exe文件,包括了 ...

  4. uniGUI试用笔记(八)

    在业务系统中常常使用回车键(Enter)替代Tab键完成焦点跳转,在uniGUI下,可以不用代码,直接使用TUniForm的NavigateKeys进行设置: 其中Next和Prior决定了焦点向下一 ...

  5. uniGUI试用笔记(七)

    uniGUI的文件下载由于TUniSession的存在而变得非常简单,最典型的一个例子就是将列表中的所有数据导出到Excel中.服务器上采用TMS FlexCel控件,先将数据集中的记录导入到Exce ...

  6. uniGUI试用笔记(六)

    uniGUI提供了一个文件上传控件TUniFileUpload,进行数据的导入就变得比较容易.首先将TUniFileUpload控件放置在窗体上,按下导入按钮后,执行TUniFileUpload的文件 ...

  7. uniGUI试用笔记(五)

    uniGUI的主窗体可以采用多页面方式进行管理,参考网上的资料,都是用TUniFrame + TUniPageControl 来实现,尝试了一下,效果还不错,如下图: 用TUniFrame 能够使用继 ...

  8. uniGUI试用笔记(四)

    uniGUI下有专用的登录窗体类:TUniLoginForm,该类属于AppForm,构建代码为: function frmWebLogin: TfrmWebLogin; begin Result : ...

  9. uniGUI试用笔记(三)

    uniGUI下的MessageDlg使用发生了变化,最大的特点是: 1.成为了uniGUIForm的成员函数: 2.变成过程(procedure)了,也就是没有返回值了,使得程序不再具有线程阻塞性. ...

随机推荐

  1. Spark实战记录

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~PipelineExample winutils.exe java.lang.NullPointException~~~~~~~~~~~~~ ...

  2. JavaScript原型继承的实例

    // 创建构造函数实例(获取DOM节点) <div id="app">测试字符</div>

  3. 001-http协议-请求报文以及服务器响应状态

    Http协议的几个概念: 1.连接(Connection):浏览器和服务器之间传输数据的通道. 一般请求完毕就关闭,http不保持连接.不保持连接会降低处理速度(因为建立连接速度很慢),保持连接的话就 ...

  4. clear/reset select2,重置select2,恢复默认

    4.0 version //方法一$('#yourButton').on('click', function() { $('#yourfirstSelect2').val(null).trigger( ...

  5. Git-分支的建立与合并

    举一个实际工作中可能会遇到的分支建立与合并的例子: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照 ...

  6. Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04(转)

    http://www.powerxing.com/install-hadoop/ http://blog.csdn.net/beginner_lee/article/details/6429146 h ...

  7. Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门

    各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览.接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来. 本 ...

  8. 连接远程数据库时出现 SSH: expected key exchange group packet from server / 2003 - Can't connect to MySQL server on 'XXX' (10038) / 1130 - Host 'XXX' is not allowed to connect to this MySQL server

    昨天在自己的远程服务器上玩,把系统重装了.新装了MySQL,在本地用navicat连接的时候出了几个小问题. 问题一:SSH: expected key exchange group packet f ...

  9. Python OS模块常用功能 中文图文详解

    一.Python OS模块介绍 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: >>> i ...

  10. Axis2基础

    本章主要介绍如何使用axis2开发webservice接口. 以下以一个实例程序讲解如何编写一个axis2的服务端和客户端. axis2版本:axis2-1.5.4-bin.zip 目录结构: 关键代 ...