1 / 36

第 7 章 数据窗口控件

第 7 章 数据窗口控件. 实现数据窗口的基本过程见图。. 第 7 章 数据窗口控件. 7.1 数据窗口控件 7.2 数据窗口控件属性 7.3 数据窗口控件事务对象 7.4 数据窗口控件的函数 7.5 数据窗口控件的事件 7.6 数据窗口编程 7.7 数据窗口编程实例 7.8 小结. 2. 点击小三角,展开窗口控件. 3. 点击数据窗口控件. 1. 创建或打开窗口. 5. 在数据窗口的边沿或四角,拖动调整数据窗口的大小. 4. 在窗口上点击,出现数据窗口. 6. 在数据窗口内部,拖动调整数据窗口的位置.

noelle
Télécharger la présentation

第 7 章 数据窗口控件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章数据窗口控件 实现数据窗口的基本过程见图。

  2. 第7章数据窗口控件 7.1数据窗口控件 7.2 数据窗口控件属性 7.3 数据窗口控件事务对象 7.4 数据窗口控件的函数 7.5 数据窗口控件的事件 7.6 数据窗口编程 7.7 数据窗口编程实例 7.8 小结

  3. 2. 点击小三角,展开窗口控件 3. 点击数据窗口控件 1. 创建或打开窗口 5. 在数据窗口的边沿或四角,拖动调整数据窗口的大小 4. 在窗口上点击,出现数据窗口 6. 在数据窗口内部,拖动调整数据窗口的位置 图7-2 在窗口上布置数据窗口控件 7.1 数据窗口控件 在窗口上布置数据窗口控件的方法与第4章中布置其它控件的方法相同。

  4. 7.1 数据窗口控件 • 单击数据窗口控件属性卡General页中DataObject栏右边的“…”按钮,选择一个数据窗口对象,就完成了数据窗口控件与数据窗口对象的关联。 • 在应用程序中,可以动态地关联数据窗口对象,这样,一个数据窗口控件就能够在不同的时刻动态显示不同的数据窗口对象。数据窗口控件与数据窗口对象的关联是通过给数据窗口控件的DataObject属性赋值实现的,DataObject属性的数据类型为字符串(String)。程序中通过给DataObject属性赋不同的值而让数据窗口控件关联不同的数据窗口对象,这个值就是数据窗口对象的名称。 • 数据窗口对象d_another必须已经定义并保存在应用程序库中。每当在应用程序中修改了DataObject属性后,还需要依次重新执行数据窗口控件的对象函数SetTransObject ( )和Retrieve (),这两个函数执行之后新的数据窗口对象才能在数据窗口控件中显示出来。

  5. 7.2 数据窗口控件属性 通过设置数据窗口控件属性,可以决定数据窗口控件的外观和行为。数据窗口对象的常用属性既可以通过数据窗口控件的对象函数来访问,也可以使用属性表达式在应用程序中设置或调整,应用程序几乎可以操纵数据窗口的所有属性。 当选中窗口上的一个数据窗口控件时,属性卡中就显示该数据窗口控件的属性,见图7-3。

  6. 数据窗口控件 的标题(选 中TitleBar有效) 选择关联的数据窗 口对象 具有控制菜单 (选中TitleBar有效) 具有标题栏 具有水平滚动条 具有最大化功能 具有最小化功能 具有垂直滚动条 分割数据窗口控件 数据随滚动 条的移动而滚动 图7-3 数据窗口控件的属性卡 7.2 数据窗口控件属性

  7. 7.3 数据窗口控件事务对象 事务对象具有15个属性,见表。

  8. 7.3 数据窗口控件事务对象 • 事务对象(Transaction Object)是一个不可见的对象,它包含了与数据库连接的相关属性参数。在数据窗口的实现过程中,与数据库中数据的连接是依靠定义事务对象的参数来完成的。 • 用数据窗口画笔定义数据窗口对象时,如果我们选择了从数据库中提取数据的数据源,那么在数据窗口控件能够检索数据之前,还必须为数据窗口控件分配事务对象。该事务对象必须已经与数据库建立了连接。 • 应用程序与数据库的连接通过事务对象来完成,在建立连接前需要给事务对象的相关属性赋值,用嵌入式SQL语句CONNECT建立连接。不同的数据库管理系统使用的事务对象属性也不尽相同。如果应用程序只访问一个数据库,那么使用缺省事务对象SQLCA就可以了。SQLCA是个全局对象,在应用程序的任何地方都可以访问。

  9. 7.3 数据窗口控件事务对象 • 下面是使用SQLCA与ODBC数据源建立连接的简单示例: SQLCA.DBMS="ODBC“ //设置事务对象属性SQLCA.DBParm="ConnectString='DSN=MyDatabase;UID=dba;PWD=sql'" CONNECT USING SQLCA; // 与数据库连接 If SQLCA.SQLCode<0 Then // 检查连接是否成功 MessageBox("连接失败", SQLCA.SQLErrText, Exclamation!) End If • 利用PowerBuilder的初始化文件PB.INI,下面是更通用的代码: environment env // 保存环境信息 string startupfile // 保存初始化文件名 IF ( GetEnvironment(env) <> 1 ) THEN // 获取环境信息 MessageBox( "系统出错", "得不到环境信息.~n终止应用 ..." ) HALT // 终止应用程序的执行 END IF

  10. 7.3 数据窗口控件事务对象 CHOOSE CASE env.OSTyp // 根据当前使用的操作系统选择 初始化文件 CASE Windows!, WindowsNT! startupfile="pb.ini" CASE Sol2!, AIX!, OSF1!, HPUX! startupfile=".pb.ini" CASE Macintosh! startupfile = "PowerBuilder Preferences" CASE ELSE MessageBox( “系统出错”, “未知的操作系统。~n终止应 用...” ) HALTEND CHOOSE

  11. 7.3 数据窗口控件事务对象 /* 根据当前PB.INI的设置值设置SQLCA属性*/ • SQLCA.DBMS=ProfileString (startupfile, "database", "dbms","") • SQLCA.database= ProfileString (startupfile, "database","database","") • SQLCA.userid= ProfileString (startupfile, "database", "userid","") • SQLCA.dbpass= ProfileString (startupfile, "database", "dbpass","") • SQLCA.logid= ProfileString (startupfile, "database", "logid","") • SQLCA.logpass= ProfileString (startupfile, "database","LogPassWord", "") • SQLCA.servername=ProfileString(startupfile, "database","servername", "") • SQLCA.dbparm=ProfileString (startupfile, "database", "dbparm","") • CONNECT USING SQLCA; //与数据库连接 If SQLCA.SQLCode<0 Then //检查连接是否成功 MessageBox("连接失败",SQLCA.SQLErrText,Exclamation!) End If

  12. 7.3 数据窗口控件事务对象 • 需要时,应用程序也可以创建新的事务对象,以适应同时连接到多个数据库管理系统的要求。 • 创建新的事务对象的方法是:先说明一个类型为Transaction的事务对象变量,然后用CREATE语句创建事务对象实例。 • 创建了对象实例后,给事务对象属性赋值,用CONNECT语句建立与数据库的连接。用CREATE语句创建的事务对象不再使用时,用DESTROY语句删除该对象。 • 某个数据库连接不再使用时,应该及时地使用DISCONNECT语句断开与数据库的连接。数据库连接是数据库服务器的宝贵资源。为数据窗口控件分配事务对象在使用数据窗口控件检索数据前,必须通知数据窗口使用哪个事务对象来操作数据库。 • 在指定了事务对象并与数据库连接之后,要使数据窗口控件能够访问数据库,还必须为数据窗口控件指定事务对象,使数据窗口控件明确究竟使用哪一个事务对象同数据库进行交互。提供了两个函数SetTransObject和SetTrans,可以选择其中一个。

  13. 7.3 数据窗口控件事务对象 1. SetTransObject函数 调用格式:dwcontrol.SetTransObject(transaction) 其中:dwcontro为数据窗口控件的名称;transaction为缺省的或 用户定义的事务对象。返回值:1-成功;-1-失败。 SetTransObject函数为数据库维持了一个开放性的连接,不需要反复连接和断开数据库,对数据窗口的更新进行提交或滚回操纵。只有在用户改变数据窗口对象或者用户断开与数据库连接后,才要再次调用SetTransObject函数。 SetTransObject ()函数的特点是,在使用之前要求建立事务对象与数据库的连接,一直保持这一连接,直到代码执行DISCONNECT语句后才断开与数据库的连接。它在检索和更新数据时所花的时间只是检索和更新所需的时间,效率上明显高于SetTrans ()函数。 例如,在完成了数据库的连接之后,如果在某个窗口中有个数据窗口控件dw_1,可以在窗口打开的open事件中,添加如下代码: dw_1.SetTransObject(SQLCA) 此后,就可以使用其它函数访问数据库了。

  14. 7.3 数据窗口控件事务对象 2. SetTrans函数 调用格式:dwcontrol.SetTrans(transaction) 参数及返回值与SetTransObject函数相同。不同点是SetTrans使用内部事务对象,用户不必先进行数据库的连接,而是每进行一次数据库操作,都会自动产生一个数据库的连接,并在操作结束时自动断开与数据库的连接。每当操作数据库时,都会完成连接、操作、断开数据库这一系列步骤。 对绝大多数数据库管理系统来说,CONNECT、DISCONNECT操作是件极为耗时的工作。如果应用程序对数据库操作频繁,SetTrans需要花费的资源比较多,效率比较低。一般应用在远端使用应用程序或者对数据库操作较少的场合。

  15. 7.4 数据窗口控件的函数 数据窗口控件提供了丰富的对象函数,这些函数在增强数据窗口功能的同时,也方便了应用程序的开发,加快了开发进度。 数据窗口函数编程注意事项: 1. 窗口函数触发数据窗口事件 窗口函数会触发某些数据窗口事件,如果在这些数据窗口事件中调用能够触发该事件的数据窗口函数,就会造成死循环。 2. PowerBuilder的数据处理机制 • 数据窗口在客户机的本地内存中开辟了四个缓冲区:主缓冲区、删除缓冲区、过滤缓冲区、原始缓冲区,从数据库中检索到数据后,数据窗口根据不同情况把数据放置到不同的缓冲区。四个缓冲区各司其职,协作完成数据的增删改,最后把结果提交给数据库管理系统。 • 除了在数据窗口画笔中可以定义数据窗口对象外,还提供了根据SQL SELECT语句和指定的属性动态创建数据窗口的能力,这样,应用程序就能够构造的更加灵活,以适应千变万化的用户需求。

  16. 7.4 数据窗口控件的函数 • 当使用数据窗口控件的Retrieve()函数从数据库中提取数据后,数据被存入了数据窗口的主缓冲区中,程序对数据窗口中数据的操作均在缓冲区中完成。 • 用户在向数据窗口中输入数据时,并没有直接把数据输入到数据窗口的主缓冲区中,而是把数据输入到悬浮在数据窗口当前单元上面的编辑控件中,当用户移动了输入焦点或代码中使用AcceptText ()函数操作之后,系统验证输入数据的有效性,通过有效性验证的数据才被放置到数据窗口控件的主缓冲区中。 • 当插入数据时,插入的数据也存放在主缓冲区。当删除数据行时,不管是使用DeleteRow()函数直接删除一行还是使用RowsMove()函数在缓冲区之间移动数据行,被删除数据行从主缓冲区移动到删除缓冲区。 • 当使用数据窗口控件的对象函数Update()将数据窗口的修改发送到数据库管理系统后,被成功删除的记录均从删除缓冲区中清除。在保存数据时,删除缓冲区用于生成DELETE语句。过滤缓冲区用于保存那些满足数据源定义,而不满足过滤条件的行。 • 原始缓冲区保存数据窗口从数据库中检索出的原始数据。可以通过把GetItem簇函数的入口参数originalvalue设置为true来访问原始缓冲区中数据。

  17. 7.4 数据窗口控件的函数 数据窗口缓冲区之间的关系见图。

  18. 7.4 数据窗口控件的函数 • 主缓冲区的记录行数可以通过数据窗口控件的对象函数RowCount()得到,删除缓冲区的记录行数通过数据窗口控件的对象函数DeletedCount()得到,过滤缓冲区的记录行数通过数据窗口控件的对象函数FilterCount()得到。 • 利用数据窗口控件的对象函数SetFilter(),可以动态改变过滤条件,然后使用数据窗口控件的对象函数Filter()更新主缓冲区和过滤缓冲区中的数据。数据窗口控件只显示主缓冲区中的数据,用户的所有操作也都是针对主缓冲区进行的。 • 编辑状态标志在数据窗口控件的主缓冲区、过滤缓冲区和删除缓冲区中,每一行和每一行中的每个列都有个编辑状态标志,这个标志指示了相应行是否是新增加的行、相应列的数据是否被修改。在往数据库中保存数据时,数据窗口利用这个标志值来决定产生什么类型的SQL语句。 • 需要获得某行/某列的编辑状态标志的方法是使用数据窗口控件的GetItemStatus ()对象函数。修改行或列的编辑状态标志的数据窗口控件对象函数是SetItemStatus()。

  19. 7.4 数据窗口控件的函数 编辑状态标志是个dwItemStatus枚举类型的量,其意义以及对数据操作的影响见表。

  20. 7.4 数据窗口控件的函数 3. 访问的缓冲区 dwBuffer用来指定数据窗口控件函数访问的缓冲区,dwBuffer使用枚举数据类型。 表7-4 dwBuffer枚举数据类型与指定的缓冲区 4.数据窗口的打印 数据窗口的打印函数Print( )是一种自动化程度很高的实现数据窗口打印的方法,但是一次只能打印一个数据窗口。另一种打印方法是使用通用的打印函数,具体分为三个步骤: (1)建立并打开一个打印作业,函数格式为: PrintOpen({jobname}) 其中,参数jobname指定打印作业的名称,该名称将显示在打印作业管理器中。该函数返回一个长整数型的作业号jobnumber。

  21. 7.4 数据窗口控件的函数 (2)实施打印作业。打印数据窗口的函数格式为: PrintDataWindow(jobnumber,dwcontrol) 其中jobnumber为上一步打开一个打印作业时返回的作业号,dwcontrol为数据窗口控件的名称。 (3)关闭打印作业,以释放所占用的资源。函数格式为: PrintClose(jobnumber) 其中jobnumber为第一步打开一个打印作业时返回的作业号。 中途要取消打印作业,可使用函数PrintCancel(jobnumber)。 例如,在打印按钮的Clicked事件中编写如下代码,完成两个数据窗口dw_1和dw_2的打印: long ll_jobnum ll_jobnum=PrintOpen(“打印两个数据窗口”) PrintDataWindow(ll_jobnum,dw_1) PrintDataWindow(ll_jobnum,dw_2) PrintClose(ll_jobnum) 为了使打印更加自由,PowerBuilder还提供了打印特定对象和改变打印机参数的一些函数,

  22. 7.4 数据窗口控件的函数 5. 数据窗口控件的编辑控件 • 使用数据窗口控件时,最重要概念之一是编辑控件。数据窗口中的列可以编辑时,自动创建一个没有边框的编辑控件。当用户按Tab键或通过单击改变输入焦点时,编辑控件随之移动到得到焦点的项上,同时编辑控件根据该项的设置及相应列的编辑风格调整自己的大小和显示。 • 实际上用户是在编辑控件中键入、编辑、修改数据。编辑控件是个文本型控件,在它里面输入的所有数据都被当作字符串保存。列的编辑风格控制着数据的显示和操作方式,而显示格式则控制着编辑控件不再有效时数据的显示方式。当用户按Tab键或通过单击改变输入焦点时,数据窗口通过适当的有效性检查接受编辑控件中的数据,并将其置入数据窗口的主缓冲区中。 • 有时,程序需要在编辑控件中的数据被放到主缓冲区之前获取用户在编辑控件中输入的值,可以使用数据窗口控件的对象函数GetText()。一般GetText()函数在数据窗口控件的ItemChanged和ItemError事件的事件处理程序中调用。有时候需要在代码中设置编辑控件的值。注意:GetText( )、SetText ( )函数访问“漂浮”在数据窗口上的编辑控件,而GetItem簇函数访问数据窗口已经放置到数据窗口缓冲区中的数据。

  23. 7.5 数据窗口控件的事件 • 数据窗口控件有三十多个预定义事件,需要控制它的行为和响应用户操作以及处理各种错误时,就可以通过对事件的编程来实现。对数据窗口控件来说,除操作能够触发事件外,某些函数在执行过程中也将触发事件。 • 编程过程中,应根据实际需要选择恰当的事件,对其编写程序,事件参数是事件触发时系统提供的信息,而事件返回值则是编程者在事件编程结束处返回(return)的控制后续进程的代码。 • 检索结果中有大量数据时,不要对RetrieveRow事件编程,即使在该事件的事件处理程序中写上一行注释,也会显著地降低提取数据的速度。 • RetrieveRow事件编程一般用在检索的数据量不大或对速度没有要求的场合,通过对RetrieveRow事件编程,用户有机会在检索结束前终止进一步的检索操作。

  24. 7.6 数据窗口编程 数据窗口控件是附属于窗口的一个对象,把窗口和数据窗口对象联系起来。通过数据窗口控件,程序能够显示、修改和控制数据窗口对象,并响应用户的操作。数据窗口控件具有众多的事件、属性和函数,通过数据窗口控件来发挥数据窗口对象的功能。数据窗口控件是运用数据窗口对象的一条有效途径(另一条途径是在数据存储中使用数据窗口对象)。 一般而言,使用数据窗口的基本过程是: (1)创建数据窗口对象。数据窗口对象的创建方法已经在第六章中进行了介绍; (2)在窗口对象中布置数据窗口控件控件,并将数据窗口控件的DataObject属性与数据窗口对象关联。具体方法见本章第一节使用数据窗口控件中的介绍;

  25. 7.6 数据窗口编程 (3)为数据窗口对象分配事务对象,将数据从数据库检索到数据窗口中。例如,假设在应用程序开始时,已经完成了与数据库的连接,窗口中的数据窗口控件dw_1关联着一个使用Quick Select方式创建数据窗口对象,则可以在窗口的Open事件中使用如下代码: dw_1.SetTransObject(SQLCA) dw_1.Retrieve() 上面第2行程序也可以放在其它地方。 如果数据窗口对象的数据源方式为SQL Select,那么上面第2行程序就需要改为带参数的检索。例如检索参数为name,则检索程序为: dw_1.Retrieve(ls_name) ls_name为与检索参数name相同数据类型的变量。 (4)必要时,编写使用的对象和控件的事件脚本。在脚本编写时,可以使用数据窗口控件的函数。

  26. 7.7 数据窗口编程实例 完成数据窗口的显示功能。具体步骤为: (1)首先打开上一章建立的工作空间和应用exwin。 (2)新建一个窗口w_main。在窗口中放置一个数据窗口控件dw_1,在其General属性的DataObject栏右侧有一个“…”小按钮,点击时弹出选择对象对话框,选择上一章创建的数据窗口对象d_product1,数据窗口对象就通过数据窗口控件在窗口上显示出来。同样方法,再放置2个数据窗口控件dw_2和dw_3,分别关联到数据窗口对象d_product2和d_product3。在dw_1下方放置三个按钮,分别是“插入”、“删除”和“更新”。在窗口底部放置3个按钮,分别是“打开检索窗口”、“全部更新”和“退出程序”。

  27. 图7-5 窗口画板上控件的布置 7.7 数据窗口编程实例 窗口编辑画板的外观见图。 (3)编写窗口的脚本。在窗口的Open事件中,编写将数据窗口控件与事物处理对象相关联以及将数据检索到数据窗口控件中的有关初始化脚本: dw_1.settransobject(sqlca) dw_1.retrieve() dw_2.settransobject(sqlca) dw_2.retrieve() dw_3.settransobject(sqlca) dw_3.retrieve()

  28. (4)编写控件的脚本 l“插入”按钮的脚本 integer li_rowIserted li_rowIserted=dw_1.insertRow(0) dw_1.scrollToRow(li_rowIserted) l“删除”按钮的脚本 dw_1.deleteRow(0) l“更新”按钮的脚本 integer ret ret=dw_1.Update() if ret>0 then COMMIT USING SQLCA; else ROLLBACK USING SQLCA; end if l“全部更新”按钮的脚本 dw_1.Update() dw_2.Update() dw_3.Update() l“退出程序”按钮的脚本 close(parent) ldw_1、dw_2、dw_3的dberror事件脚本 MessageBox("错误","数据库错误!~r~n可能主关键字相同或外键错误等!",StopSign!) Return 1 l dw_1、dw_2、dw_3的itemerror事件脚本 MessageBox("输入错误","输入数据有错!~r~n可能数据类型不匹配或数据值超出设定范围!" ,StopSign!) Return 1 7.7 数据窗口编程实例

  29. 图7-6 检索窗口上控件的布置 7.7 数据窗口编程实例 (5)新建检索窗口w_retrieve。在窗口上布置一个数据窗口控件dw_4,它关联的数据窗口对象为d_product4;2个静态文本“单价大于”和“单价小于”;2个单行文本编辑框,sle_min和sle_max;1个按钮“检索”和1个图片按钮,选择准备好的“返回”图片。

  30. 7.7 数据窗口编程实例 (6)为检索窗口及控件编写脚本 l在窗口的Open事件中脚本 dw_4.settransobject(sqlca) dw_4.retrieve(0,10000) l“检索”按钮的脚本 integer li_min, li_max li_min=integer(sle_min.text) li_max=integer(sle_max.text) dw_4.retrieve(li_min, li_max) l图片按钮的脚本 close(parent) (7)为w_main窗口中“打开检索窗口”按钮编写脚本: open(w_retrieve)

  31. 7.7 数据窗口编程实例 (8)在系统树形结构区双击“应用”exwin,为“应用”的Open事件编写脚本: open(w_main) (9)保存并运行应用程序。当在一个数据窗口中增加或删除记录时,由于没有向数据库作最后提交,在其它数据窗口中的数据并没有发生变化,当使用“全部更新”按钮时,所有数据窗口的数据才一致起来。在检索窗口的2个输入框中分别输入单价的下限和上限,单击“检索”按钮,在下面的数据窗口中就检索出数据库中全部满足要求的记录。

  32. 7.8 小结 用PowerBuilder开发数据库应用程序基本步骤为: (1)使用数据窗口画笔创建数据窗口对象; (2)在窗口上放置数据窗口控件; (3)通过属性设置或编码将数据窗口控件与数据窗口对象联系起来; (4)设置数据窗口控件的属性,以控制它的外观和行为; 如果应用程序尚未与数据库建立连接,那么在某个事件处理程序中使用CONNECT语句与数据库建立连接; (5)将数据窗口控件与事务对象联系起来(使用数据窗口控件的对象函数SetTransObject ( )或SetTrans ( )); (6)使用数据窗口控件的对象函数Retrieve ()把数据库中的数据装入数据窗口中; (7)针对具体应用,编写某些数据窗口控件事件的事件处理程序,响应用户的操作; (8)需要时使用数据窗口控件的对象函数Update ()保存用户对数据的修改。

  33. 7.8 小结 1.数据窗口控件常用属性 DataObject 数据窗口窗口控件常用函数: • Retrieve()检索数据 • update()更新表数据 • InsertRow(long row) 在第row行插入一空行, row=0表示在末尾插入 • DeleteRow(long row) 删除第row行 • getrow() 返回数据窗口当前行的行号 • getcolumn() 得到数据窗口控件当前列的列号 • GetColumnName( ) 得到数据窗口控件当前列的列名 • RowCount() 返回数据窗口控件当前可用行数。 • ScrollToRow (long row ) 滚动数据窗口控件的显示到row行,该函数改变当前行但不改变当前列。 • GetItemDecimal(long row,int column)得到数据窗口控件中row行、col列的数据值。返回值为Decimal • Getitemnumber(long row,int column)得到数据窗口控件中row行、col列的数据值。返回值为Number

  34. 7.8 小结 • Getitemstring(long row,int column) 得到数据窗口控件中row行、col列的数据值。返回值为string • GetItemDate(long row,int column) 得到数据窗口控件中row行、col列的数据值。返回值为Date • GetItemDateTime(long row,int column) 得到数据窗口控件中row行、col列的数据值。返回值为DateTime • Getitemtime(long row,int column) 得到数据窗口控件中row行、col列的数据值。返回值为Time • SetItem (long row, int column, value ) 将value写到数据窗口控件的row行、col列。 • SetSort (string format ) 定义数据窗口控件的排序条件 • Sort ( )根据当前的排序条件排序数据窗口控件的行 • SetFilter ( string format )定义数据窗口控件的过滤条件 • Filter ( )在数据窗口控件中显示满足当前过滤条件的行,不满足过滤条件的行从主缓冲区中移动到过滤缓冲区 • IsSelected (long row )检测数据窗口控件中指定行是否被选择。 被选择的行以反相形式加亮显示。返回值true/false • SelectRow (long row, boolean choice )在数据窗口控件中选择或去掉选择(加亮或去掉加亮)指定的行。row=0表示所有行

  35. 7.8 小结 • SetRowFocusIndicator(pointer)设置焦点行的指针形状,其中pointer的值为: Off! 无指针 FocusRect! 虚框 Hand! 手 PictureControll 图片控件名 • SetRow(long row)将第row行设为当前行。成功则返回1,失败返回-1。 • SetColumn(int col)将第col列设为当前列。成功则返回1,失败返回-1。 2.数据窗口窗口控件常用事件 • DoubleClicked当用户双击数据窗口控件时触发 • RowFocusChanged当数据窗口控件的当前行被改变时触发 • ItemFocusChanged当焦点从一个可编辑字段切换到另一个可编辑字段时触发 • ItemChanged当数据窗口控件中某个域被修改并且该域失去输入焦点时触发

  36. 7.8 小结 dberror在数据窗口控件访问数据库过程中发生数据库错误时触发。该事件返回值的为: 0─缺省值,系统显示出错信息; 1─系统不显示出错信息 ItemError当用户修改了字段、然后移走焦点、但数据未能通过该列的有效性检查时触发。该事件返回值的为: 0─(缺省值),拒绝输入值并显示有效性检查出错信息,同时 不允许移走焦点 1─拒绝输入值,但不显示出错信息,同时不允许移走焦点 2─接收输入值 3─拒绝输入值,但允许移走焦点

More Related