|
|
|
@ -49,12 +49,38 @@ namespace Rs.Controls
|
|
|
|
|
|
|
|
|
|
public enum ESlotStatus
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 有料
|
|
|
|
|
/// </summary>
|
|
|
|
|
Have,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 无料
|
|
|
|
|
/// </summary>
|
|
|
|
|
NotHave,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 测试OK
|
|
|
|
|
/// </summary>
|
|
|
|
|
Ok,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 测试NG
|
|
|
|
|
/// </summary>
|
|
|
|
|
Ng,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 禁用
|
|
|
|
|
/// </summary>
|
|
|
|
|
Disable,
|
|
|
|
|
Null
|
|
|
|
|
/// <summary>
|
|
|
|
|
///
|
|
|
|
|
/// </summary>
|
|
|
|
|
Null,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 扫码失败
|
|
|
|
|
/// </summary>
|
|
|
|
|
ScanFail,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 被选择
|
|
|
|
|
/// </summary>
|
|
|
|
|
Selected
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public partial class RsTray : UserControl
|
|
|
|
@ -197,6 +223,31 @@ namespace Rs.Controls
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public TraySlot GetSlot(ESlotStatus[] status, bool reverse = false)
|
|
|
|
|
{
|
|
|
|
|
if (reverse)
|
|
|
|
|
{
|
|
|
|
|
for (int row = 0; row < RowNum; row++)
|
|
|
|
|
{
|
|
|
|
|
for (int col = ColumnNum; col > 0; col--)
|
|
|
|
|
{
|
|
|
|
|
int index = row * (ColumnNum) + col;
|
|
|
|
|
if (status.Contains( traySlotsDic[index].SlotStatus))
|
|
|
|
|
return traySlotsDic[index];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
foreach (KeyValuePair<int, TraySlot> kv in traySlotsDic)
|
|
|
|
|
{
|
|
|
|
|
if (status.Contains(kv.Value.SlotStatus))
|
|
|
|
|
return kv.Value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据穴位的状态获取穴位
|
|
|
|
|
/// </summary>
|
|
|
|
@ -724,6 +775,34 @@ namespace Rs.Controls
|
|
|
|
|
{
|
|
|
|
|
UpdateSlotPos();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void scanFailToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ChangeSlotStatus(ESlotStatus.ScanFail);
|
|
|
|
|
List<TraySlot> slots = new List<TraySlot>();
|
|
|
|
|
foreach (KeyValuePair<int, TraySlot> kvSlot in traySlotsDic)
|
|
|
|
|
{
|
|
|
|
|
if (drawRect.IntersectsWith(kvSlot.Value.Bound))
|
|
|
|
|
{
|
|
|
|
|
slots.Add(kvSlot.Value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
DrawTrayAfterEvent?.Invoke(this, ESlotStatus.ScanFail, slots);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void selectedToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ChangeSlotStatus(ESlotStatus.Selected);
|
|
|
|
|
List<TraySlot> slots = new List<TraySlot>();
|
|
|
|
|
foreach (KeyValuePair<int, TraySlot> kvSlot in traySlotsDic)
|
|
|
|
|
{
|
|
|
|
|
if (drawRect.IntersectsWith(kvSlot.Value.Bound))
|
|
|
|
|
{
|
|
|
|
|
slots.Add(kvSlot.Value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
DrawTrayAfterEvent?.Invoke(this, ESlotStatus.Selected, slots);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -805,6 +884,12 @@ namespace Rs.Controls
|
|
|
|
|
case ESlotStatus.Null:
|
|
|
|
|
g.FillRectangle(new SolidBrush(Color.FromArgb(11, 16, 36)), Bound.X, Bound.Y, Bound.Width - 1, Bound.Height - 1);
|
|
|
|
|
break;
|
|
|
|
|
case ESlotStatus.ScanFail:
|
|
|
|
|
g.FillRectangle(new SolidBrush(Color.FromArgb(235, 23, 110)), Bound.X, Bound.Y, Bound.Width - 1, Bound.Height - 1);
|
|
|
|
|
break;
|
|
|
|
|
case ESlotStatus.Selected:
|
|
|
|
|
g.FillRectangle(new SolidBrush(Color.FromArgb(255, 0, 0)), Bound.X, Bound.Y, Bound.Width - 1, Bound.Height - 1);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|