AntdUI.Steps 用于展示流程进度,例如订单流转、工单处理、发布上线、审批进度等。它强调“当前流程走到哪一步”,如果还需要记录历史事件或处理日志,通常与 Timeline 组合使用。
重要:
Steps.Current与steps.Items使用 .NET/AntdUI 习惯,从0开始计数;aardio 普通数组仍从1开始。
import win.ui;
import dotNet.AntdUI;
/*DSG{{*/
var winform = win.form(text="AntdUI Steps";right=760;bottom=260)
winform.add(host={cls="custom";left=0;top=0;right=760;bottom=260;db=1;dl=1;dr=1;dt=1;z=1})
/*}}*/
var steps = AntdUI.Steps(winform.host);
steps.Current = 1; // 0 基:当前为第 2 步
steps.Status = AntdUI.TStepState.Process;
steps.Gap = 12;
steps.Items.Add(AntdUI.StepsItem("创建订单","已完成","用户已提交订单"));
steps.Items.Add(AntdUI.StepsItem("支付","处理中","等待支付结果"));
steps.Items.Add(AntdUI.StepsItem("发货","待开始"));
steps.Items.Add(AntdUI.StepsItem("完成"));
steps.ItemClick = function(sender,e){
var item = e.Item;
winform.msgbox("点击步骤:" + item.Title);
}
winform.show();
win.loopMessage();
里程碑模式适合展示“每个阶段发生的时间点”。常用做法是为每个 StepsItem 设置 MilestoneTimePoint,并开启 MilestoneMode。
import win.ui;
import dotNet.AntdUI;
import System;
/*DSG{{*/
var winform = win.form(text="Steps 里程碑";right=820;bottom=260)
winform.add(host={cls="custom";left=20;top=20;right=790;bottom=220;db=1;dl=1;dr=1;dt=1;z=1})
/*}}*/
var steps = AntdUI.Steps(winform.host);
steps.Current = 2;
steps.Status = AntdUI.TStepState.Process;
steps.MilestoneMode = true;
steps.MilestoneType = AntdUI.TMilestoneType.Full;
steps.MilestoneCurrentCompleted = true;
steps.MilestoneTimeFormat = "MM-dd HH:mm";
steps.MilestoneTimelineThickness = 3;
var addStep = function(id,title,subTitle,description,month,day,hour,minute){
var item = AntdUI.StepsItem(title,subTitle,description);
item.ID = id;
item.Tag = id;
item.MilestoneTimePoint = System.DateTime(2026,month,day,hour,minute,0);
steps.Items.Add(item);
}
addStep("submit","提交","已完成","申请人已提交资料",7,6,9,0);
addStep("review","审核","已完成","主管完成初审",7,6,10,30);
addStep("deploy","实施","进行中","工程师正在实施",7,6,14,0);
addStep("verify","验收","待开始","等待业务验收",7,7,9,30);
winform.show();
win.loopMessage();
| 成员 | 说明 |
|---|---|
Items |
步骤项集合,添加 AntdUI.StepsItem。这是 .NET 集合,索引从 0 开始。 |
Current |
当前步骤索引,从 0 开始。 |
Status |
当前步骤状态,常用 AntdUI.TStepState.Wait/Process/Finish/Error。 |
Vertical |
是否垂直显示。 |
Gap |
步骤间距。 |
ForeColor |
文字颜色;aardio 中直接使用 0xAARRGGBB 数值。 |
PauseLayout |
批量更新时暂停布局,添加大量项前设为 true,添加后恢复为 false。 |
MilestoneMode |
是否启用里程碑模式。 |
MilestoneAnimation |
里程碑动画。 |
MilestoneType |
里程碑时间显示类型,常用 AntdUI.TMilestoneType.Day/Time/Full。 |
MilestoneCurrentCompleted |
里程碑模式下当前步骤是否按已完成绘制。 |
MilestoneTimeFormat |
里程碑时间格式,例如 "MM-dd HH:mm"。 |
MilestoneTimelineThickness |
里程碑时间线粗细。 |
ItemClick |
点击步骤项事件,事件对象 e.Item 为 StepsItem。 |
| 属性 | 说明 |
|---|---|
ID / Name |
业务标识或名称,适合绑定稳定 key。 |
Title |
标题。 |
SubTitle |
子标题。 |
Description |
描述。 |
LocalizationTitle / LocalizationSubTitle / LocalizationDescription |
本地化键。 |
Icon / IconSvg |
图标。 |
IconSize |
图标大小。 |
MilestoneTimePoint |
里程碑时间点,System.DateTime?。 |
BackColor / ForeColor |
单项背景色与文字色;aardio 中直接使用 0xAARRGGBB 数值。 |
Visible |
是否显示。 |
Tag |
自定义数据,可保存业务 key 或对象。 |
StepsItem 还提供链式方法:SetID()、SetName()、SetTitle()、SetSubTitle()、SetDescription()、SetIcon()、SetVisible()、SetTag()。
AntdUI.TStepState.Wait:等待。AntdUI.TStepState.Process:进行中。AntdUI.TStepState.Finish:完成。AntdUI.TStepState.Error:错误/异常。AntdUI.TMilestoneType.Day:里程碑显示日期。AntdUI.TMilestoneType.Time:里程碑显示时间。AntdUI.TMilestoneType.Full:里程碑显示完整日期时间。ItemClick 的事件委托参数为 (sender,e),被点击的步骤项在 e.Item 中:
steps.ItemClick = function(sender,e){
var item = e.Item;
winform.text = item.ID + " / " + item.Title;
}
e 还继承常见鼠标事件信息,例如 e.Button、e.Clicks、e.X、e.Y、e.Location。
Current 从 0 开始,第二步应设置为 1;如果用 aardio 数组保存业务标题,通常用 array[steps.Current + 1] 读取。steps.Items.get_Item(0) 读取第一项,steps.Items.Count 是项数;不要把 aardio 1 基数组习惯直接套到 .NET 集合。Status 是“当前步骤”的状态,不是每一项各自的状态;如果要记录各阶段历史,请配合 Timeline。StepsItem 后设置属性再加入集合。