Progress 4gl 使用Progress 10.2b如何使滚动条正常工作

Progress 4gl 使用Progress 10.2b如何使滚动条正常工作,progress-4gl,openedge,Progress 4gl,Openedge,在“我的进度”应用程序中使用浏览器时,滚动条无法正常工作。它将显示我只能向下滚动一点,然后继续。这是一个正在进行的bug还是我可以做些什么来修复这个问题 /* Connected Databases sports2000 PROGRESS */ &Scoped-define WINDOW-NAME wWin {adecomm/appserv.i} CREATE WIDGET-POOL. {src/adm2/widgetprto.i} &Scoped-de

在“我的进度”应用程序中使用浏览器时,滚动条无法正常工作。它将显示我只能向下滚动一点,然后继续。这是一个正在进行的bug还是我可以做些什么来修复这个问题

/* Connected Databases 
      sports2000       PROGRESS
*/
&Scoped-define WINDOW-NAME wWin
{adecomm/appserv.i}
CREATE WIDGET-POOL.
{src/adm2/widgetprto.i}
&Scoped-define PROCEDURE-TYPE SmartWindow
&Scoped-define DB-AWARE no
&Scoped-define ADM-CONTAINER WINDOW
&Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source
&Scoped-define FRAME-NAME fMain
&Scoped-define BROWSE-NAME BROWSE-2
&Scoped-define INTERNAL-TABLES Order
&Scoped-define FIELDS-IN-QUERY-BROWSE-2 Order.PO Order.OrderDate ~
Order.Ordernum 
&Scoped-define ENABLED-FIELDS-IN-QUERY-BROWSE-2 Order.PO Order.OrderDate ~
Order.Ordernum 
&Scoped-define ENABLED-TABLES-IN-QUERY-BROWSE-2 Order
&Scoped-define FIRST-ENABLED-TABLE-IN-QUERY-BROWSE-2 Order
&Scoped-define QUERY-STRING-BROWSE-2 FOR EACH Order NO-LOCK INDEXED-REPOSITION
&Scoped-define OPEN-QUERY-BROWSE-2 OPEN QUERY BROWSE-2 FOR EACH Order NO-LOCK INDEXED-REPOSITION.
&Scoped-define TABLES-IN-QUERY-BROWSE-2 Order
&Scoped-define FIRST-TABLE-IN-QUERY-BROWSE-2 Order
&Scoped-define OPEN-BROWSERS-IN-QUERY-fMain ~
~{&OPEN-QUERY-BROWSE-2}
&Scoped-Define ENABLED-OBJECTS BROWSE-2 
DEFINE VAR wWin AS WIDGET-HANDLE NO-UNDO.

DEFINE QUERY BROWSE-2 FOR 
  Order SCROLLING.
DEFINE BROWSE BROWSE-2
  QUERY BROWSE-2 NO-LOCK DISPLAY
  Order.PO FORMAT "x(20)":U
  Order.OrderDate FORMAT "99/99/99":U
  Order.Ordernum FORMAT "zzzzzzzzz9":U
  ENABLE
  Order.PO
  Order.OrderDate
  Order.Ordernum
WITH NO-ROW-MARKERS SEPARATORS SIZE 59 BY 8.1 FIT-LAST-COLUMN.
/* ************************  Frame Definitions  *********************** */
DEFINE FRAME fMain
 BROWSE-2 AT ROW 4.81 COL 13 WIDGET-ID 200
WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY 
     SIDE-LABELS NO-UNDERLINE THREE-D 
     AT COL 1 ROW 1
     SIZE 80 BY 17 WIDGET-ID 100.

IF SESSION:DISPLAY-TYPE = "GUI":U THEN
CREATE WINDOW wWin ASSIGN
     HIDDEN             = YES
     TITLE              = "<insert SmartWindow title>"
     HEIGHT             = 17
     WIDTH              = 80
     MAX-HEIGHT         = 28.81
     MAX-WIDTH          = 146.2
     VIRTUAL-HEIGHT     = 28.81
     VIRTUAL-WIDTH      = 146.2
     RESIZE             = no
     SCROLL-BARS        = no
     STATUS-AREA        = no
     BGCOLOR            = ?
     FGCOLOR            = ?
     THREE-D            = yes
     MESSAGE-AREA       = no
     SENSITIVE          = yes.
ELSE {&WINDOW-NAME} = CURRENT-WINDOW.

{src/adm2/containr.i}
IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(wWin)
THEN wWin:HIDDEN = yes.
&Scoped-define SELF-NAME wWin
ON END-ERROR OF wWin /* <insert SmartWindow title> */
OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO:
/* This case occurs when the user presses the "Esc" key.
 In a persistently run window, just ignore this.  If we did not, the
 application would exit. */
IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY.
END.

ON WINDOW-CLOSE OF wWin /* <insert SmartWindow title> */
DO:
  /* This ADM code must be left here in order for the SmartWindow
     and its descendents to terminate properly on exit. */
  APPLY "CLOSE":U TO THIS-PROCEDURE.
  RETURN NO-APPLY.
END.

&Scoped-define BROWSE-NAME BROWSE-2
&UNDEFINE SELF-NAME

/* ***************************  Main Block  *************************** */

/* Include custom  Main Block code for SmartWindows. */
{src/adm2/windowmn.i}

/* **********************  Internal Procedures  *********************** */

PROCEDURE adm-create-objects :

END PROCEDURE.

PROCEDURE disable_UI :
  /* Delete the WINDOW we created */
  IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(wWin)
  THEN DELETE WIDGET wWin.
  IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
END PROCEDURE.


PROCEDURE enable_UI :
  ENABLE BROWSE-2 
      WITH FRAME fMain IN WINDOW wWin.
  {&OPEN-BROWSERS-IN-QUERY-fMain}
  VIEW wWin.
END PROCEDURE.


PROCEDURE exitObject :

  APPLY "CLOSE":U TO THIS-PROCEDURE.
  RETURN.

END PROCEDURE.
/*连接的数据库
体育2000进展
*/
&作用域定义窗口名wWin
{adecomm/appserv.i}
创建WIDGET-POOL。
{src/adm2/widgetprto.i}
&作用域定义过程类型SmartWindow
&作用域定义DB-AWARE否
&作用域定义ADM-CONTAINER窗口
&作用域定义ADM支持的链接数据目标、数据源、页面目标、更新源、更新目标、筛选目标、筛选源
&作用域定义帧名称fMain
&作用域定义BROWSE-NAME BROWSE-2
&作用域定义内部表顺序
&作用域定义字段-IN-QUERY-BROWSE-2 Order.PO Order.OrderDate~
Order.Ordernum
&作用域定义启用字段-IN-QUERY-BROWSE-2 Order.PO Order.OrderDate~
Order.Ordernum
&作用域定义已启用-表-IN-QUERY-BROWSE-2顺序
&作用域定义第一个启用的表-IN-QUERY-BROWSE-2顺序
&为每个订单定义范围查询-STRING-BROWSE-2无锁索引-重新定位
&范围为每个订单定义OPEN-QUERY-BROWSE-2 OPEN-QUERY-BROWSE-2无锁索引重新定位。
&作用域定义表-IN-QUERY-BROWSE-2顺序
&作用域定义-表-查询-浏览-2顺序
&在查询fMain中定义作用域打开的浏览器~
~{&OPEN-QUERY-BROWSE-2}
&作用域定义启用对象浏览-2
将VAR wWin定义为WIDGET-HANDLE NO-UNDO。
定义的查询浏览-2
订单滚动。
定义浏览-2
查询浏览-2无锁显示
Order.PO格式“x(20)”:U
Order.OrderDate格式“99/99/99”:U
Order.Ordernum格式“zzz 9”:U
使可能
订单号
Order.OrderDate
Order.Ordernum
无行标记分隔符尺寸为59 x 8.1的最后一列。
/***********************************框架定义****************************************/
定义帧格式
浏览-2第4.81行第13列小部件ID 200
有1个向下的无框保留选项卡顺序覆盖
侧标签无下划线三维
第1列第1行
尺寸为80 x 17-ID100。
如果会话:DISPLAY-TYPE=“GUI”:U则
在分配中创建窗口
隐藏=是
TITLE=“”
高度=17
宽度=80
最大高度=28.81
最大宽度=146.2
虚拟高度=28.81
虚拟宽度=146.2
调整大小=否
滚动条=否
状态-区域=否
BGCOLOR=?
FGCOLOR=?
三维=是
消息区域=否
敏感=是。
ELSE{&WINDOW-NAME}=CURRENT-WINDOW。
{src/adm2/containr.i}
如果会话:DISPLAY-TYPE=“GUI”:U和VALID-HANDLE(wWin)
然后wWin:HIDDEN=yes。
&作用域定义自名wWin
wWin/**/
或{&WINDOW-NAME}任意位置的ENDKEY执行以下操作:
/*当用户按下“Esc”键时会发生这种情况。
在一个持续运行的窗口中,忽略这一点。如果我们不这样做,那么
应用程序将退出*/
如果此-PROCEDURE:PERSISTENT,则返回NO-APPLY。
结束。
wWin/**/
做:
/*必须将此ADM代码保留在此处才能使用SmartWindow
以及其后代在退出时正确终止*/
将“关闭”:U应用于本步骤。
退货不适用。
结束。
&作用域定义BROWSE-NAME BROWSE-2
&未定义自名
/*************************************************************************************************************************主块*/
/*包括SmartWindows的自定义主块代码*/
{src/adm2/windowmn.i}
/*****************************内部程序***************************************/
创建对象的过程:
结束程序。
过程禁用用户界面:
/*删除我们创建的窗口*/
如果会话:DISPLAY-TYPE=“GUI”:U和VALID-HANDLE(wWin)
然后删除小部件wWin。
如果THIS-PROCEDURE:PERSISTENT,则删除过程THIS-PROCEDURE。
结束程序。
程序启用用户界面:
启用浏览-2
框架fMain位于窗口wWin中。
{在查询fMain中打开浏览器(&O)}
查看wWin。
结束程序。
程序出口对象:
将“关闭”:U应用于本步骤。
返回。
结束程序。

当我使用这样的浏览器时,我将滚动条向下拉到底部,然后单击滚动条上的向下箭头,仍然有行(即使滚动条位于屏幕底部)。

我修改了您的示例代码以使用“sports2000”数据库,我可以看到发生了什么

define query browse-4 for customer.

DEFINE BROWSE BROWSE-4
QUERY BROWSE-4 NO-LOCK DISPLAY
  custNum name
/* ENABLE name */
WITH NO-ROW-MARKERS SEPARATORS SIZE 32 BY 6.46 FIT-LAST-COLUMN.
.

open query browse-4 preselect each customer no-lock.

enable browse-4.

wait-for window-close of current-window.
关键的更改是在打开的查询中使用PRESELECT。否则,只返回结果集的一部分。这是一个已知的特征


不过要小心——如果您的查询涉及数千条记录,那么PRESELECT的性能不会很好。当然,在UI中显示这么多记录可能不是一个好主意。

也许您可以显示一些示例代码?谢谢,我在问题中添加了一些代码。您的代码无法编译。至少您的“browse-4”查询丢失了。如果您提供的东西能够与sports或sports2000数据库一起使用,这也是最好的。