gpt4 book ai didi

openedge - 是否可以根据进度条中的完成百分比显示不同的颜色?

转载 作者:行者123 更新时间:2023-12-02 22:09:34 25 4
gpt4 key购买 nike

进展专家您好!!!

我正在尝试根据进度条中的完成百分比显示不同的颜色,例如百分比 0% - 25% - 红色,25% - 50% - 黄色,50% - 100% - 绿色。

这里的问题是以下代码有助于在填写框中提供完成百分比,但我不知道如何给出颜色。

注意 - 颜色应在填充框中逐渐变化和移动。(就像我们通常在复制并粘贴到另一个文件夹时在系统中看到进度条一样)。

我听说我们可以使用正在进行中的.NET 方法。如果可以的话用这个就更好了。

这可能是一个愚蠢的问题(逐渐进行)或者在进展中不可行。是的!如您所知,不断问为什么或为什么不有助于获得一些知识。

请在这里放一盏小灯,它可以照亮黑暗。

DEFINE VARIABLE I                  AS INTEGER NO-UNDO.
DEFINE VARIABLE iPercentage AS INTEGER NO-UNDO.
DEFINE VARIABLE iComp AS INTEGER NO-UNDO.
DEFINE VARIABLE iRec AS INTEGER NO-UNDO.

ASSIGN
I = 0
iComp = 0
iRec = 0
iPercentage = 0.


/* Calculating Total records*/
FOR EACH <table> NO-LOCK:
iRec = iRec + 1.
END.
/* Taking each records from the same table to update*/
FOR EACH <table> NO-LOCK:
I = I + 1.

IF I = 1 THEN DO:
RUN UpdateRecord.p (INPUT <table>.<tablefield>)
ASSIGN
iComp = iComp + I.
iPercentage = 100 * (iComp / iRec).

DO WITH FRAME {&FRAME-NAME}:
ASSIGN
/* fiProgress is FILL-IN */
fiProgress:SCREEN-VALUE = STRING(iPercentage) + '%'.
PROCESS EVENTS.
END.
IF iPercentage = 100 THEN DO:
MESSAGE "Record Updation Is completed".
END.
ELSE DO:
I = 0
NEXT.
END.

END.

END.

最佳答案

(...) color should change and move gradually (...)

如果您逐渐想要真正的渐变效果,那么使用纯粹的 Progress 就不太走运了。 BGCOLOR 仅接受调色板中定义的颜色(1-15,除非您想创建自己的动态新颜色(这是可能的,但需要一些工作)。但是,您可以使用 RGB-VALUE 函数将其分配给 ActiveX 字段(以前称为 OCX),但如果您沿着这条路线走下去,我打赌您可能会找到一个 ActiveX 进度条来使用并消除这种需要重新创建轮子。我会将您的问题视为您想要添加的纯粹进度功能。

为了代码的可重用性和适应性,这是本网站的目标,我决定创建一些可以独立于您发布的代码的东西(如果您允许的话),但可以轻松地内置到其中。

因此,在这个示例中,您应该有 2 个填充项,其中一个带有 NO-LABEL,位于第一个填充项的顶部,位于完全相同的列和行坐标。

DEFINE VARIABLE iCount AS INTEGER     NO-UNDO.
DEFINE VARIABLE iCalc AS INTEGER NO-UNDO.
REPEAT:
ASSIGN fill-in-1:BGCOLOR = IF iCount = 0 THEN 12
ELSE IF iCount = 25 THEN 14
ELSE IF iCount = 50 THEN 2
ELSE IF iCount = 75 THEN 10
ELSE fill-in-1:BGCOLOR.
ASSIGN iCount = iCount + 1.

/* Calculate reduction and placement of white fill-in */
ASSIGN iCalc = INT((100 - iCount) * fill-in-1:WIDTH / 100)
fill-in-2:WIDTH = if iCalc <> 0 then iCalc else 0.1
fill-in-2:COLUMN = fill-in-1:COLUMN + (fill-in-1:WIDTH - iCalc).

IF iCalc = 0 THEN
ASSIGN fill-in-2:VISIBLE = NO.
/* /End calculation */

ASSIGN fill-in-1:SCREEN-VALUE = STRING(iCount).
IF iCount = 100 THEN LEAVE.
PAUSE 0.2 NO-MESSAGE.
PROCESS EVENTS.
END.

此代码片段本身会休眠 0.2 秒,因此您可以了解发生了什么。删除暂停并将 iCount 替换为您的百分比,您应该得到您想要的内容。处理事件是一个好主意,但不是必须的。

希望这有帮助。

编辑:向我的好友 Marlon Berkenbrock @marlonberkenbrock 致敬,他引起了我的注意,他收到了零宽度警告(由于我的 session 配置,该警告从未向我显示过)。当前版本修复了这个问题。

关于openedge - 是否可以根据进度条中的完成百分比显示不同的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com