Ejemplo n.º 1
0
 /// <summary>
 /// Конструктор формы
 /// </summary>
 public MainForm()
 {
     InitializeComponent();
     // Инициализация полей
     pressed = false;
     first   = null;
     links   = new List <LogicalLink>();
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Обновление логического выражения
 /// (не реализовано полностью)
 /// </summary>
 private void UpdateExpression()
 {
     expressionText.Text = "";
     Logicals.LogicalControl root = Root();
     if (root == null)
     {
         return;
     }
     expressionText.Text = root.Code;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Добавление логического элемента на схему
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void addButton_Click(object sender, EventArgs e)
        {
            ToolStripButton s         = (ToolStripButton)sender;
            string          className = string.Format("LogicForms.Logicals.{0}", s.Tag);

            // Control c = (Control)Activator.CreateInstance(null, className).Unwrap();
            Logicals.LogicalControl c = new Logicals.LogicalControl();
            c.BackgroundImage   = (Bitmap)Properties.Resources.ResourceManager.GetObject((string)s.Tag);
            c.Code              = (string)s.Tag;
            c.MouseDown        += ComponentMouseDown;
            c.MouseMove        += ComponentMouseMove;
            c.MouseUp          += ComponentMouseUp;
            c.MouseDoubleClick += ComponentMouseDoubleClick;
            // Относительная (обратная) координата входа для корректной отрисовки связей
            c.input = (string)s.Tag == "LogicalNot" ? 2 : 6;
            // Добавление элемента на схему
            mainPanel.Controls.Add(c);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Двойной щелчок по элементу
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ComponentMouseDoubleClick(object sender, MouseEventArgs e)
 {
     if (first == null)
     {
         first = (Logicals.LogicalControl)sender;
     }
     else
     {
         // Добавление связи
         LogicalLink link = new LogicalLink()
         {
             From = first,
             To   = (Logicals.LogicalControl)sender
         };
         first.Output = link;
         links.Add(link);
         // Принудительно перерисовать
         mainPanel.Invalidate();
         // Связь добавлена
         first = null;
         // Сформировать логическое выражение
         UpdateExpression();
     }
 }