增加料仓上料功能

master
lhiven 2 years ago
parent fff73c6b39
commit b3277c6f8b

@ -23,7 +23,7 @@ namespace Rs.MotionPlat.Commom
{
SysConfigParam.Init();
int errNum = 0;
Task.Run(() => {
//Task.Run(() => {
#region 初始化固高卡
ErrorCode errCode = GugaoPulseCardManager.Instance.Init();
if (errCode > ErrorCode.Ok)
@ -121,9 +121,10 @@ namespace Rs.MotionPlat.Commom
Ops.Off("下左相机光源触发");
Ops.Off("下右相机光源触发");
Ops.Off("上相机光源触发");
TakeTrayFlow.Instance.Start();
StockManager.Instance.Start();
MonitorSystemButton.Instance.Start();
});
//});
}

@ -92,6 +92,7 @@ namespace Rs.AutoDischarge.V3.Flow
//trayHeight = GlobalVar.Instance.GetValue("TrayHeight");
}
private ETrayTestStep Step= ETrayTestStep.;
bool bStop= false;
IAxis StockFlow = null;
@ -117,8 +118,11 @@ namespace Rs.AutoDischarge.V3.Flow
}
else if (NeedLoad)
{
if(!Ops.IsOn($"{stockNo}号料仓料盘到位光电检测"))
if(!Ops.IsOn($"{stockNo}号料仓料盘到位光电检测") || m_bWholeLoad==false)
{
Ops.Off($"{stockNo}号料仓斜推气缸");
Ops.Off($"{stockNo}号料仓斜推气缸");
Thread.Sleep(500);
//上料
Status = ETrayStatus.Loading;
finished = false;
@ -308,12 +312,14 @@ namespace Rs.AutoDischarge.V3.Flow
public void Unload()
{
Status = ETrayStatus.Unloading;
finished = false;
NeedUnload = true;
}
public void Load(bool bWholeLoad)
{
Status = ETrayStatus.Loading;
m_bWholeLoad = bWholeLoad;
finished = false;
NeedLoad = true;
@ -338,5 +344,10 @@ namespace Rs.AutoDischarge.V3.Flow
{
return Status;
}
public void ChangeStatus(ETrayStatus status)
{
Status=status;
}
}
}

@ -31,6 +31,8 @@ namespace Rs.MotionPlat.Flow
}
}
TrayTest Empty1 = new TrayTest(1);
TrayTest Input = new TrayTest(2);
TrayTest Ok = new TrayTest(3);
@ -38,6 +40,15 @@ namespace Rs.MotionPlat.Flow
TrayTest Multi = new TrayTest(5);
TrayTest Empty2 = new TrayTest(6);
public TrayTest Empty1Tray { get { return Empty1; } }
public TrayTest InputTray { get { return Input; } }
public TrayTest OkTray { get { return Ok; } }
public TrayTest NgTray { get { return Ng; } }
public TrayTest MultiTray { get { return Multi; } }
public TrayTest Empty2Tray { get { return Empty2; } }
public void Start()
{
Empty1.Start();
@ -50,8 +61,34 @@ namespace Rs.MotionPlat.Flow
public bool HasTray(EStockType stockType)
{
if (Ops.IsOff($"{(int)stockType}号料仓料盘到位光电检测"))
{
//switch (stockType)
//{
// case EStockType.Empty1:
// Empty1.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Input:
// Input.Status = ETrayStatus.Loaded;
// break;
// case EStockType.Ok:
// Ok.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Ng:
// Ng.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Multi:
// Multi.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Empty2:
// Empty2.Status = ETrayStatus.Loaded;
// break;
// default:
// break;
//}
return false;
}
return true;
}
@ -156,5 +193,30 @@ namespace Rs.MotionPlat.Flow
}
return ETrayStatus.UnKnown;
}
public void ChangeStatus(EStockType stock, ETrayStatus status)
{
switch (stock)
{
case EStockType.Empty1:
Empty1.ChangeStatus(status);
break;
case EStockType.Input:
Input.ChangeStatus(status);
break;
case EStockType.Ok:
Ok.ChangeStatus(status);
break;
case EStockType.Ng:
Ng.ChangeStatus(status);
break;
case EStockType.Multi:
Multi.ChangeStatus(status);
break;
case EStockType.Empty2:
Empty2.ChangeStatus(status);
break;
}
}
}
}

@ -26,6 +26,7 @@ namespace Rs.MotionPlat.Flow
,
,
,
,
,
,
,
@ -102,9 +103,7 @@ namespace Rs.MotionPlat.Flow
case ETakeTrayFlowStep.:
if (Ops.IsStop("LoadX", "LoadY"))
{
Ops.Off($"{(int)m_fromTray}号料仓斜推气缸");
Ops.Off($"{(int)m_toTray}号料仓斜推气缸");
Thread.Sleep(500);
step = ETakeTrayFlowStep.;
}
break;
@ -128,6 +127,9 @@ namespace Rs.MotionPlat.Flow
stopwatch.Stop();
Ops.On("夹爪真空吸");
Thread.Sleep(150);
Ops.Off($"{(int)m_fromTray}号料仓斜推气缸");
Ops.Off($"{(int)m_toTray}号料仓斜推气缸");
Thread.Sleep(500);
step = ETakeTrayFlowStep.;
}
else if(stopwatch.ElapsedMilliseconds > 5000)
@ -136,6 +138,9 @@ namespace Rs.MotionPlat.Flow
stopwatch.Restart();
Ops.On("夹爪真空吸");
Thread.Sleep(150);
Ops.Off($"{(int)m_fromTray}号料仓斜推气缸");
Ops.Off($"{(int)m_toTray}号料仓斜推气缸");
Thread.Sleep(500);
step = ETakeTrayFlowStep.;
}
break;
@ -169,7 +174,7 @@ namespace Rs.MotionPlat.Flow
errCode = AxisControl.LoadX.MovePos(centerX + cameraCenterX, GlobalVar.TakeTraySpeed);
if (errCode == Motion.ErrorCode.Ok)
{
errCode = AxisControl.LoadY.MovePos(centerY + cameraCenterY-2, GlobalVar.TakeTraySpeed);
errCode = AxisControl.LoadY.MovePos(centerY + cameraCenterY - 2, GlobalVar.TakeTraySpeed);
if (errCode == Motion.ErrorCode.Ok)
{
step = ETakeTrayFlowStep.;
@ -178,6 +183,14 @@ namespace Rs.MotionPlat.Flow
break;
case ETakeTrayFlowStep.:
if (Ops.IsStop("LoadX", "LoadY"))
{
step = ETakeTrayFlowStep.;
}
break;
case ETakeTrayFlowStep.:
if (StockManager.Instance.GetStockStatus(m_toTray) == ETrayStatus.Unloaded
|| StockManager.Instance.GetStockStatus(m_toTray) == ETrayStatus.IDLE
|| StockManager.Instance.GetStockStatus(m_toTray) == ETrayStatus.Loaded)
{
step = ETakeTrayFlowStep.;
}

@ -35,13 +35,19 @@ namespace Rs.MotionPlat.Flow
case SchedulingStatusInfo.InfoType.State:
break;
case SchedulingStatusInfo.InfoType.RunStatus:
WorkEnvironment.Instance.Ready();
Task.Run(() => {
if (WorkEnvironment.Instance.EnvReadyOkEvent.WaitOne())
{
WorkFlow.Instance.Start();
TurnoverFlow.Instance.Start();
TakeTrayFlow.Instance.Start();
StockManager.Instance.Start();
MachineManage.Instance.RunState = ERunState.Waiting;
MachineManage.Instance.RunStatus = ERunStatus.Started;
MachineManage.Instance.MachineStatus = EMachineStatus.Working;
}
});
MachineManage.Instance.RunStatus = ERunStatus.Started;
MachineManage.Instance.RunState = ERunState.Interrupt;
break;
case SchedulingStatusInfo.InfoType.RunMode://手动自动
MachineManage.Instance.RunMode = (ERunMode)Enum.Parse(typeof(ERunMode), ssi.Info.ToString());

@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Rs.MotionPlat.Flow
@ -24,6 +25,7 @@ namespace Rs.MotionPlat.Flow
EStockCheckStep step= EStockCheckStep.Input;
EStockCheckStep restoreStep;
public bool EnvironmentOk { get; set; } = false;
public ManualResetEvent EnvReadyOkEvent = new ManualResetEvent(false);
private static WorkEnvironment instance;
public static WorkEnvironment Instance
{
@ -38,6 +40,7 @@ namespace Rs.MotionPlat.Flow
{
Task.Run(() =>
{
EnvironmentOk = false;
while(true && !EnvironmentOk)
{
switch (step)
@ -48,20 +51,27 @@ namespace Rs.MotionPlat.Flow
LogHelper.Debug("Input料仓无料开始给Input料仓上料");
StockManager.Instance.Load(EStockType.Input);
}
else
{
StockManager.Instance.ChangeStatus(EStockType.Input, AutoDischarge.V3.Flow.ETrayStatus.Loaded);
}
if (!StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓无料开始给Empty2料仓上料");
StockManager.Instance.Load(EStockType.Empty2);
}
else
{
StockManager.Instance.ChangeStatus(EStockType.Empty2, AutoDischarge.V3.Flow.ETrayStatus.Loaded);
}
step = EStockCheckStep.Ok;
break;
case EStockCheckStep.Ok:
if (!StockManager.Instance.HasTray(EStockType.Ok))
{
LogHelper.Debug("Ok料仓无料开始给Ok料仓上料");
if (StockManager.Instance.HasTray(EStockType.Empty2))
//if (StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Ok");
//LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Ok");
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ok);
step = EStockCheckStep.;
restoreStep = EStockCheckStep.Ng;
@ -69,6 +79,7 @@ namespace Rs.MotionPlat.Flow
}
else
{
StockManager.Instance.ChangeStatus(EStockType.Ok, AutoDischarge.V3.Flow.ETrayStatus.Loaded);
step = EStockCheckStep.Ng;
}
break;
@ -76,9 +87,9 @@ namespace Rs.MotionPlat.Flow
if (!StockManager.Instance.HasTray(EStockType.Ng))
{
LogHelper.Debug("Ng料仓无料开始给Ng料仓上料");
if (StockManager.Instance.HasTray(EStockType.Empty2))
//if (StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Ng");
//LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Ng");
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ng);
step = EStockCheckStep.;
restoreStep = EStockCheckStep.Multi;
@ -86,6 +97,7 @@ namespace Rs.MotionPlat.Flow
}
else
{
StockManager.Instance.ChangeStatus(EStockType.Ng, AutoDischarge.V3.Flow.ETrayStatus.Loaded);
step = EStockCheckStep.Multi;
}
break;
@ -93,9 +105,9 @@ namespace Rs.MotionPlat.Flow
if (!StockManager.Instance.HasTray(EStockType.Multi))
{
LogHelper.Debug("Multi料仓无料开始给Multi料仓上料");
if (StockManager.Instance.HasTray(EStockType.Empty2))
//if (StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Multi");
//LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Multi");
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Multi);
step = EStockCheckStep.;
restoreStep = EStockCheckStep.;
@ -103,6 +115,7 @@ namespace Rs.MotionPlat.Flow
}
else
{
StockManager.Instance.ChangeStatus(EStockType.Multi, AutoDischarge.V3.Flow.ETrayStatus.Loaded);
step = EStockCheckStep.;
}
break;
@ -127,6 +140,7 @@ namespace Rs.MotionPlat.Flow
{
LogHelper.Debug("所有料仓准备就绪");
EnvironmentOk = true;
EnvReadyOkEvent.Set();
}
break;
}

@ -179,12 +179,12 @@ namespace Rs.MotionPlat.Flow
}
else
{
Msg.ShowInfo("Input料盘缺料请手动切盘后点击确定");
GlobalTray.InputTray.ResetTray();
GlobalTray.InputTray.Fill();
//TakeTrayFlow.Instance.Take(EStockType.Input, EStockType.Empty1, ELoadUnloadType.Unload);
//restoreFlowStep = EWorkFlowStep.到取料位上方;
//flowStep = EWorkFlowStep.等待Input料盘搬运完成;
// Msg.ShowInfo("Input料盘缺料请手动切盘后点击确定");
// GlobalTray.InputTray.ResetTray();
// GlobalTray.InputTray.Fill();
TakeTrayFlow.Instance.Take(EStockType.Input, EStockType.Empty1, ELoadUnloadType.Unload);
restoreFlowStep = EWorkFlowStep.;
flowStep = EWorkFlowStep.Input;
}
}
if (curSlotPoint != null)
@ -590,16 +590,16 @@ namespace Rs.MotionPlat.Flow
}
else
{
Msg.ShowInfo("OK料盘已满请手动切盘后点击确定");
GlobalTray.OkTary.ResetTray();
GlobalTray.OkTary.Clear();
//Msg.ShowInfo("OK料盘已满请手动切盘后点击确定");
//GlobalTray.OkTary.ResetTray();
//GlobalTray.OkTary.Clear();
//TakeTrayFlow.Instance.Take(EStockType.Input, EStockType.Empty1, ELoadUnloadType.Unload);
//StockManager.Instance.UnLoad(EStockType.Ok);
//restoreFlowStep = EWorkFlowStep.到放料位上方;
//flowStep = EWorkFlowStep.等待Ok料仓收料完成;
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ok);
StockManager.Instance.UnLoad(EStockType.Ok);
restoreFlowStep = EWorkFlowStep.;
flowStep = EWorkFlowStep.Ok;
}
}
else if (curNozzle.ToType == TurnoverType.Failed)
@ -611,14 +611,14 @@ namespace Rs.MotionPlat.Flow
}
else
{
Msg.ShowInfo("NG料盘已满请手动切盘后点击确定");
GlobalTray.NgTray.ResetTray();
GlobalTray.NgTray.Clear();
//Msg.ShowInfo("NG料盘已满请手动切盘后点击确定");
//GlobalTray.NgTray.ResetTray();
//GlobalTray.NgTray.Clear();
//StockManager.Instance.UnLoad(EStockType.Ng);
//restoreFlowStep = EWorkFlowStep.到放料位上方;
//flowStep = EWorkFlowStep.等待Ng料仓收料完成;
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ng);
StockManager.Instance.UnLoad(EStockType.Ng);
restoreFlowStep = EWorkFlowStep.;
flowStep = EWorkFlowStep.Ng;
}
}
else if (curNozzle.ToType == TurnoverType.Multifunction)
@ -630,18 +630,16 @@ namespace Rs.MotionPlat.Flow
}
else
{
Msg.ShowInfo("多功能料盘已满,请手动切盘后点击确定!");
GlobalTray.MultiTray.ResetTray();
GlobalTray.MultiTray.Clear();
//Msg.ShowInfo("多功能料盘已满,请手动切盘后点击确定!");
//GlobalTray.MultiTray.ResetTray();
//GlobalTray.MultiTray.Clear();
//StockManager.Instance.UnLoad(EStockType.Multi);
//restoreFlowStep = EWorkFlowStep.到放料位上方;
//flowStep = EWorkFlowStep.等待Multi料仓收料完成;
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Multi);
StockManager.Instance.UnLoad(EStockType.Multi);
restoreFlowStep = EWorkFlowStep.;
flowStep = EWorkFlowStep.Multi;
}
}
}
if (curSlotPoint!=null)

@ -265,6 +265,7 @@ namespace Rs.MotionPlat
private void timer1_Tick(object sender, EventArgs e)
{
//获取运行信息
while (MessageQueue.Instance.HaveMessage())
{
@ -414,6 +415,7 @@ namespace Rs.MotionPlat
GlobalTray.Empty2Tray = trayEmpty2;
GlobalTray.TurnoverTray = trayTurnover;
tabControlEx1.TabPages.RemoveAt(1);
}
private void btnWholeHome_Load(object sender, EventArgs e)
@ -468,5 +470,32 @@ namespace Rs.MotionPlat
MachineManage.Instance.MachineStatus = EMachineStatus.Stop;
}
private void timer2_Tick(object sender, EventArgs e)
{
if(trayEmpty1.Status != StockManager.Instance.Empty1Tray.Status.ToString())
{
trayEmpty1.Status = StockManager.Instance.Empty1Tray.Status.ToString();
}
if(trayInput.Status != StockManager.Instance.InputTray.Status.ToString())
{
trayInput.Status = StockManager.Instance.InputTray.Status.ToString();
}
if(trayOk.Status != StockManager.Instance.OkTray.Status.ToString())
{
trayOk.Status = StockManager.Instance.OkTray.Status.ToString();
}
if(trayNg.Status != StockManager.Instance.NgTray.Status.ToString())
{
trayNg.Status = StockManager.Instance.NgTray.Status.ToString();
}
if(trayMulti.Status != StockManager.Instance.MultiTray.Status.ToString())
{
trayMulti.Status = StockManager.Instance.MultiTray.Status.ToString();
}
if(trayEmpty2.Status != StockManager.Instance.Empty2Tray.Status.ToString())
{
trayEmpty2.Status = StockManager.Instance.Empty2Tray.Status.ToString();
}
}
}
}

@ -108,6 +108,7 @@
this.hwin_vac6 = new ChoiceTech.Halcon.Control.HWindow_Final();
this.groupBox5 = new System.Windows.Forms.GroupBox();
this.hwin_vac5 = new ChoiceTech.Halcon.Control.HWindow_Final();
this.timer2 = new System.Windows.Forms.Timer(this.components);
this.panel1.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
this.panel3.SuspendLayout();
@ -560,10 +561,12 @@
this.trayEmpty1.RowNum = 9;
this.trayEmpty1.RowSpace = 3;
this.trayEmpty1.SelectSlot = null;
this.trayEmpty1.ShowStatus = true;
this.trayEmpty1.ShowText = false;
this.trayEmpty1.SinglePoint = false;
this.trayEmpty1.Size = new System.Drawing.Size(121, 399);
this.trayEmpty1.SortDir = Rs.Controls.ESortDir.Horizontal;
this.trayEmpty1.Status = null;
this.trayEmpty1.TabIndex = 0;
this.trayEmpty1.TopSpaceHeight = 20;
//
@ -587,10 +590,12 @@
this.trayInput.RowNum = 9;
this.trayInput.RowSpace = 3;
this.trayInput.SelectSlot = null;
this.trayInput.ShowStatus = true;
this.trayInput.ShowText = false;
this.trayInput.SinglePoint = false;
this.trayInput.Size = new System.Drawing.Size(121, 399);
this.trayInput.SortDir = Rs.Controls.ESortDir.Horizontal;
this.trayInput.Status = null;
this.trayInput.TabIndex = 0;
this.trayInput.TopSpaceHeight = 20;
//
@ -614,10 +619,12 @@
this.trayOk.RowNum = 9;
this.trayOk.RowSpace = 3;
this.trayOk.SelectSlot = null;
this.trayOk.ShowStatus = true;
this.trayOk.ShowText = false;
this.trayOk.SinglePoint = false;
this.trayOk.Size = new System.Drawing.Size(121, 399);
this.trayOk.SortDir = Rs.Controls.ESortDir.Horizontal;
this.trayOk.Status = null;
this.trayOk.TabIndex = 0;
this.trayOk.TopSpaceHeight = 20;
//
@ -642,10 +649,12 @@
this.trayNg.RowNum = 9;
this.trayNg.RowSpace = 3;
this.trayNg.SelectSlot = null;
this.trayNg.ShowStatus = true;
this.trayNg.ShowText = false;
this.trayNg.SinglePoint = false;
this.trayNg.Size = new System.Drawing.Size(121, 399);
this.trayNg.SortDir = Rs.Controls.ESortDir.Horizontal;
this.trayNg.Status = null;
this.trayNg.TabIndex = 0;
this.trayNg.TopSpaceHeight = 20;
//
@ -670,10 +679,12 @@
this.trayMulti.RowNum = 9;
this.trayMulti.RowSpace = 3;
this.trayMulti.SelectSlot = null;
this.trayMulti.ShowStatus = true;
this.trayMulti.ShowText = false;
this.trayMulti.SinglePoint = false;
this.trayMulti.Size = new System.Drawing.Size(121, 399);
this.trayMulti.SortDir = Rs.Controls.ESortDir.Horizontal;
this.trayMulti.Status = null;
this.trayMulti.TabIndex = 0;
this.trayMulti.TopSpaceHeight = 20;
//
@ -698,10 +709,12 @@
this.trayEmpty2.RowNum = 9;
this.trayEmpty2.RowSpace = 3;
this.trayEmpty2.SelectSlot = null;
this.trayEmpty2.ShowStatus = true;
this.trayEmpty2.ShowText = false;
this.trayEmpty2.SinglePoint = false;
this.trayEmpty2.Size = new System.Drawing.Size(124, 399);
this.trayEmpty2.SortDir = Rs.Controls.ESortDir.Horizontal;
this.trayEmpty2.Status = null;
this.trayEmpty2.TabIndex = 0;
this.trayEmpty2.TopSpaceHeight = 20;
//
@ -750,10 +763,12 @@
this.trayTurnover.RowNum = 4;
this.trayTurnover.RowSpace = 3;
this.trayTurnover.SelectSlot = null;
this.trayTurnover.ShowStatus = false;
this.trayTurnover.ShowText = false;
this.trayTurnover.SinglePoint = false;
this.trayTurnover.Size = new System.Drawing.Size(244, 193);
this.trayTurnover.SortDir = Rs.Controls.ESortDir.Horizontal;
this.trayTurnover.Status = null;
this.trayTurnover.TabIndex = 1;
this.trayTurnover.TopSpaceHeight = 20;
//
@ -1321,6 +1336,12 @@
this.hwin_vac5.Size = new System.Drawing.Size(180, 375);
this.hwin_vac5.TabIndex = 11;
//
// timer2
//
this.timer2.Enabled = true;
this.timer2.Interval = 300;
this.timer2.Tick += new System.EventHandler(this.timer2_Tick);
//
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -1455,5 +1476,6 @@
private ChoiceTech.Halcon.Control.HWindow_Final himgNozzle8;
private System.Windows.Forms.GroupBox gboxNozzle4;
private ChoiceTech.Halcon.Control.HWindow_Final himgNozzle4;
private System.Windows.Forms.Timer timer2;
}
}

@ -132,4 +132,7 @@
<metadata name="Content.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="timer2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>107, 17</value>
</metadata>
</root>

@ -174,6 +174,7 @@ namespace Rs.MotionPlat
private void Home2_Load(object sender, EventArgs e)
{
timer1.Enabled = false;
Ops.Init();
//SetFormStyle();
panel_main.Controls.Clear();
@ -196,7 +197,6 @@ namespace Rs.MotionPlat
ActiveForms.Add(form);
btnMain.Selected = true;
}
timer1.Enabled = true;
lblVersion.Text ="Version:"+System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
}

@ -293,7 +293,7 @@
this.panelEx2.Dock = System.Windows.Forms.DockStyle.Left;
this.panelEx2.Location = new System.Drawing.Point(158, 0);
this.panelEx2.Name = "panelEx2";
this.panelEx2.Size = new System.Drawing.Size(200, 33);
this.panelEx2.Size = new System.Drawing.Size(419, 33);
this.panelEx2.TabIndex = 2;
//
// tableLayoutPanel3

Loading…
Cancel
Save