行BGCOLOR设置整个动态浏览,而不仅仅是1行



在创建动态开放式浏览时,请使用行 - 示波触发器。问题是,当显示数据时,所有行的BGColor仅由最后一行的数据缓冲区内容确定。从来没有静态浏览的问题。

浏览代码看起来像这样:

CREATE BROWSE l-browse-wh IN WIDGET-POOL "pool"
  ASSIGN X = 1
         Y = l-browse-y
         FONT = INT(get-fn("browsedat-fnt"))
         HEIGHT-PIXELS = l-h
         WIDTH-PIXELS = FRAME f-data:WIDTH-PIXELS - 20 
         QUERY = hQuery
         HIDDEN = FALSE
         ROW-HEIGHT-CHARS = 0.67
         READ-ONLY = FALSE
         ROW-MARKERS = FALSE
         SEPARATORS = TRUE
         COLUMN-RESIZABLE = TRUE
         COLUMN-SCROLLING = TRUE
         FIT-LAST-COLUMN = FALSE 
         SCROLLBAR-VERTICAL = FALSE
         FRAME = FRAME f-data:HANDLE
         VISIBLE = TRUE
         SENSITIVE = TRUE
  TRIGGERS:
  ON ROW-DISPLAY
     PERSISTENT RUN row-color-ip IN THIS-PROCEDURE.
  END TRIGGERS.
PROCEDURE row-color-ip:
DEF VAR l-bgcolor AS INT NO-UNDO.
IF tt-sold.t-exclude-sw  /* <-- always uses value from last browse row */
    THEN ASSIGN l-bgcolor = 8.
    ELSE ASSIGN l-bgcolor = 15.
FOR EACH tt-col-handles
    NO-LOCK:
    ASSIGN tt-col-handles.t-wh:BGCOLOR = l-bgcolor.
END.   /* of "FOR EACH tt-col-handles" */
END PROCEDURE.

这是您的代码(您未显示的部分)。我使用了10.2B窗口并复制了您的代码,填充了空白。正如我所期望的那样,这个小程序可以交替。

DEFINE VARIABLE l-browse-wh AS HANDLE      NO-UNDO.
DEFINE VARIABLE hQuery AS HANDLE      NO-UNDO.
define temp-table tt-sold
field cod as int
field name as char
field t-exclude-sw as logical.
create query hQuery.
hQuery:set-buffers(temp-table tt-sold:default-buffer-handle).
hQuery:query-prepare('for each tt-sold').
define temp-table tt-col-handles
field i as int
field t-wh as handle.
create widget-pool 'pool'.
define frame f-data with size 75 by 20.
CREATE BROWSE l-browse-wh IN WIDGET-POOL "pool"
  ASSIGN X = 1
         width = 60
         height = 10
         QUERY = hQuery
         HIDDEN = FALSE
         ROW-HEIGHT-CHARS = 0.67
         READ-ONLY = FALSE
         ROW-MARKERS = FALSE
         SEPARATORS = TRUE
         COLUMN-RESIZABLE = TRUE
         COLUMN-SCROLLING = TRUE
         FIT-LAST-COLUMN = FALSE 
         SCROLLBAR-VERTICAL = FALSE
         FRAME = FRAME f-data:HANDLE
         VISIBLE = TRUE
         SENSITIVE = TRUE
  TRIGGERS:
  ON ROW-DISPLAY
     PERSISTENT RUN row-color-ip IN THIS-PROCEDURE.
  END TRIGGERS.
create tt-sold.
assign tt-sold.cod = 1 tt-sold.name = 'ABC' tt-sold.t-exclude-sw = yes.
create tt-sold.
assign tt-sold.cod = 2 tt-sold.name = 'DEF' tt-sold.t-exclude-sw = no.
create tt-sold.
assign tt-sold.cod = 3 tt-sold.name = 'GHI' tt-sold.t-exclude-sw = yes.
create tt-sold.
assign tt-sold.cod = 4 tt-sold.name = 'JKL' tt-sold.t-exclude-sw = no.

create tt-col-handles.
assign tt-col-handles.i = 1 tt-col-handles.t-wh = l-browse-wh:add-like-column('tt-sold.cod').
create tt-col-handles.
assign tt-col-handles.i = 2 tt-col-handles.t-wh = l-browse-wh:add-like-column('tt-sold.name').
create tt-col-handles.
assign tt-col-handles.i = 3 tt-col-handles.t-wh = l-browse-wh:add-like-column('tt-sold.t-exclude-sw').
hQuery:query-open(). 
l-browse-wh:refresh().
wait-for close of this-procedure.
PROCEDURE row-color-ip:
DEF VAR l-bgcolor AS INT NO-UNDO.
IF tt-sold.t-exclude-sw  /* <-- always uses value from last browse row */
    THEN ASSIGN l-bgcolor = 8.
    ELSE ASSIGN l-bgcolor = 15.
FOR EACH tt-col-handles
    NO-LOCK:
    ASSIGN tt-col-handles.t-wh:BGCOLOR = l-bgcolor.
END.   /* of "FOR EACH tt-col-handles" */
END PROCEDURE.

我为大块的大块表示歉意,但我不能只用手指戴上您出错的地方。也许这个示例会以某种方式为您提供帮助。希望它有帮助!

相关内容

最新更新