Пример #1
0
        //20170929 leo: undo redo 用
        public void readProgramR8(R8 r8)
        {
            //清空畫面
            foreach (Button b in buttons)
            {
                b.Dispose();
            }
            buttons.Clear();
            buttonsLocationY = buttonStartY;

            //標籤也要清空
            foreach (Label l in lineLabels)
            {
                l.Dispose();
            }
            lineLabels.Clear();


            //20170322 leo: 增加[New File] 模式,清空 variable 後就 return
            if (r8 == null)
            {
                formMain.formVariables.showVariables(null);
                formMain.formFunction.showFunction(null);
                R8.clearLogBox();
                this.Text = Program_Functions + "  " + buttons.Count + " of " + FormMain.r8.getFunctionsCount();
                return;
            }
            Function        function     = null;
            List <Function> functionList = new List <Function>();

            //改為 sort 完依 posY 排序再放 button
            for (int i = 0; i < r8.getFunctionSnLast(); i++)
            {
                function = r8.functions[i];
                if (function == null)
                {
                    continue;
                }
                functionList.Add(function);
            }

            functionList.Sort(delegate(Function i1, Function i2) { return(i1.posY.CompareTo(i2.posY)); });
            for (int i = 0; i < functionList.Count; i++)
            {
                function = functionList.ElementAt(i);
                addButton(getFunctionShowText(function), function.sn, function.enable);
                function.posY = buttons.Count;//讀出 button 後,應該要再依實際 button 位置進行 posY排序
            }
            this.Text = Program_Functions + "  " + buttons.Count + " of " + FormMain.r8.getFunctionsCount();
            formMain.formVariables.showVariables(null);
            formMain.formFunction.showFunction(null);
            this.Invalidate();
            return;
        }