Example #1
0
        /// <summary>
        /// 复制控件
        /// </summary>
        /// <param name="newName">新的名称</param>
        /// <param name="control">控件</param>
        /// <param name="parent">父控件</param>
        public void copyControl(String newName, FCView control, FCView parent)
        {
            XmlNode      parentNode = m_nodes[parent];
            XmlNode      newNode    = m_nodes[control].Clone();
            XmlAttribute xmlAtr     = null;

            //检查是否存在属性
            foreach (XmlAttribute atr in newNode.Attributes)
            {
                if (atr.Name.ToLower() == "name")
                {
                    xmlAtr = atr;
                    break;
                }
            }
            if (xmlAtr == null)
            {
                xmlAtr = m_xmlDoc.CreateAttribute("name");
                newNode.Attributes.Append(xmlAtr);
            }
            xmlAtr.Value = newName;
            parentNode.AppendChild(newNode);
            FCView newControl = createControl(newNode, newNode.Name.ToLower());

            setAttributesBefore(newNode, newControl);
            parent.addControl(newControl);
            setAttributesAfter(newNode, newControl);
            m_controls.Add(newControl);
            onAddControl(newControl, newNode);
        }
Example #2
0
 /// <summary>
 /// 添加控件
 /// </summary>
 /// <param name="control">控件</param>
 /// <param name="column">列</param>
 /// <param name="row">行</param>
 public virtual void addControl(FCView control, int column, int row)
 {
     base.addControl(control);
     m_columns.add(column);
     m_rows.add(row);
     m_tableControls.add(control);
 }
Example #3
0
        /// <summary>
        /// 结束秒表
        /// </summary>
        /// <param name="var">变量</param>
        /// <returns>状态</returns>
        private double STOPTIMER(CVariable var)
        {
            FCView control = m_xml.findControl(m_indicator.getText(var.m_parameters[0]));

            control.stopTimer((int)m_indicator.getValue(var.m_parameters[1]));
            return(0);
        }
Example #4
0
        /// <summary>
        /// 调用控件线程的方法
        /// </summary>
        /// <param name="invokeSerialID">消息ID</param>
        public virtual void onInvoke(int invokeSerialID)
        {
            object args    = null;
            FCView control = null;

            lock (m_invokeArgs) {
                if (m_invokeArgs.containsKey(invokeSerialID))
                {
                    args = m_invokeArgs.get(invokeSerialID);
                    m_invokeArgs.remove(invokeSerialID);
                }
            }
            lock (m_invokeControls) {
                if (m_invokeControls.containsKey(invokeSerialID))
                {
                    control = m_invokeControls.get(invokeSerialID);
                    m_invokeControls.remove(invokeSerialID);
                    m_invokeArgs.put(m_invokeSerialID, control);
                }
            }
            if (control != null)
            {
                control.onInvoke(args);
            }
        }
Example #5
0
        /// <summary>
        /// 获取集合的交集
        /// </summary>
        /// <returns>集合</returns>
        public static List <String> getUnionProperties(List <FCView> controls)
        {
            List <String>            unionProperites = new List <String>();
            Dictionary <String, int> propertyNames   = new Dictionary <String, int>();
            int targetsSize = controls.Count;

            for (int i = 0; i < targetsSize; i++)
            {
                FCView        target    = controls[i];
                List <String> pList     = target.getPropertyNames();
                int           pListSize = pList.Count;
                for (int j = 0; j < pListSize; j++)
                {
                    String pName = pList[j];
                    if (!propertyNames.ContainsKey(pName))
                    {
                        propertyNames[pName] = 1;
                    }
                    else
                    {
                        propertyNames[pName] = propertyNames[pName] + 1;
                    }
                }
            }
            foreach (String key in propertyNames.Keys)
            {
                if (propertyNames[key] == targetsSize)
                {
                    unionProperites.Add(key);
                }
            }
            propertyNames.Clear();
            return(unionProperites);
        }
Example #6
0
        /// <summary>
        /// 注册事件
        /// </summary>
        /// <param name="control">控件</param>
        private void registerEvents(FCView control)
        {
            FCTouchEvent  clickButtonEvent = new FCTouchEvent(clickButton);
            List <FCView> controls         = control.getControls();
            int           controlsSize     = controls.Count;

            for (int i = 0; i < controlsSize; i++)
            {
                FCView   subControl = controls[i];
                FCButton button     = subControl as FCButton;
                FCGrid   grid       = subControl as FCGrid;
                if (button != null)
                {
                    button.addEvent(clickButtonEvent, FCEventID.CLICK);
                }
                else if (grid != null)
                {
                    FCGridRowStyle rowStyle = new FCGridRowStyle();
                    grid.RowStyle              = rowStyle;
                    rowStyle.BackColor         = FCColor.None;
                    rowStyle.SelectedBackColor = FCDraw.FCCOLORS_SELECTEDROWCOLOR;
                    rowStyle.HoveredBackColor  = FCDraw.FCCOLORS_HOVEREDROWCOLOR;
                    rowStyle.SelectedTextColor = FCDraw.FCCOLORS_TEXTCOLOR4;
                }
                registerEvents(subControl);
            }
        }
Example #7
0
 /// <summary>
 /// 按钮点击事件
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="mp">坐标</param>
 /// <param name="button">按钮</param>
 /// <param name="click">点击次数</param>
 /// <param name="delta">滚轮滚动值</param>
 private void clickButton(object sender, FCTouchInfo touchInfo)
 {
     if (touchInfo.m_firstTouch && touchInfo.m_clicks == 1)
     {
         FCView control = sender as FCView;
         String name    = control.Name;
         if (name == "btnCancel")
         {
             close();
         }
         else if (name == "btnOK")
         {
             FCTextBox            txtName          = getTextBox("txtName");
             FCTextBox            txtScript        = getTextBox("txtScript");
             List <IndicatorData> indicatorDatas   = m_mainFrame.m_indicators;
             IndicatorData        newIndicatorData = null;
             //判断是否重复
             int indicatorDatasSize = indicatorDatas.Count;
             for (int i = 0; i < indicatorDatasSize; i++)
             {
                 IndicatorData indicatorData = indicatorDatas[i];
                 if (indicatorData.m_name == txtName.Text)
                 {
                     if (m_isEdit)
                     {
                         newIndicatorData = indicatorData;
                     }
                     else
                     {
                         MessageBox.Show("该指标名称已经存在!", "提示");
                         return;
                     }
                 }
             }
             //添加指标
             if (!m_isEdit)
             {
                 newIndicatorData = new IndicatorData();
                 indicatorDatas.Add(newIndicatorData);
             }
             newIndicatorData.m_name   = txtName.Text;
             newIndicatorData.m_script = txtScript.Text;
             String path    = Application.StartupPath + "\\indicators.txt";
             String content = JsonConvert.SerializeObject(indicatorDatas);
             FCFile.write(path, content);
             if (!m_isEdit)
             {
                 m_mainFrame.addIndicator(newIndicatorData);
             }
             close();
             Native.update();
             Native.invalidate();
         }
         else if (name == "lblDelete")
         {
             m_mainFrame.removeIndicator(m_indicatorData);
             close();
         }
     }
 }
Example #8
0
 /// <summary>
 /// 添加控件
 /// </summary>
 /// <param name="control">控件</param>
 /// <param name="node">节点</param>
 public virtual void onAddControl(FCView control, XmlNode node)
 {
     m_controls.add(control);
     //设置事件
     setEvents(node, control);
     m_event.callFunction(control, FCEventID.LOAD);
 }
Example #9
0
        /// <summary>
        /// 创建FCGridBand
        /// </summary>
        /// <param name="node">节点</param>
        /// <param name="control">控件</param>
        protected virtual void createBandedGridBands(XmlNode node, FCView control)
        {
            FCGridBand gridBand = control as FCGridBand;

            foreach (XmlNode subNode in node.ChildNodes)
            {
                FCView     subControl = createControl(subNode, subNode.Name.ToLower());
                FCGridBand band       = subControl as FCGridBand;
                if (band != null)
                {
                    band.Native = m_native;
                    gridBand.AddBand(band);
                    setAttributesBefore(subNode, band);
                    createBandedGridBands(subNode, band);
                    setAttributesAfter(subNode, band);
                    onAddControl(band, subNode);
                }

                FCBandedFCGridColumn bandcolumn = subControl as FCBandedFCGridColumn;
                if (bandcolumn != null)
                {
                    bandcolumn.Native = m_native;
                    gridBand.AddColumn(bandcolumn);
                    setAttributesBefore(subNode, bandcolumn);
                    setAttributesAfter(subNode, bandcolumn);
                    onAddControl(bandcolumn, subNode);
                }
            }
        }
Example #10
0
 /// <summary>
 /// 读取文件体
 /// </summary>
 /// <param name="node">XML节点</param>
 /// <param name="control">控件</param>
 public virtual void readBody(XmlNode node, FCView control)
 {
     foreach (XmlNode subNode in node.ChildNodes)
     {
         readNode(subNode, control);
     }
 }
Example #11
0
 /// <summary>
 /// 下拉列表控件索引改变事件
 /// </summary>
 /// <param name="sender">调用者</param>
 private void comboBoxSelectedIndexChanged(object sender)
 {
     if (m_xml != null)
     {
         if (!m_settingProperty)
         {
             m_settingProperty = true;
             FCComboBox comboBox = sender as FCComboBox;
             if (comboBox != null)
             {
                 m_designerDiv.saveUndo();
                 String name        = comboBox.Tag.ToString();
                 String value       = comboBox.SelectedText;
                 int    targetsSize = m_targets.Count;
                 for (int i = 0; i < targetsSize; i++)
                 {
                     FCView target = m_targets[i];
                     m_xml.setProperty(target, name, value);
                     target.update();
                 }
                 Native.update();
                 Native.invalidate();
             }
             m_settingProperty = false;
         }
     }
 }
Example #12
0
 /// <summary>
 /// 将属性保存到XML中
 /// </summary>
 /// <param name="control">控件</param>
 /// <param name="name">属性名称</param>
 /// <param name="value">属性值</param>
 public void setProperty(FCView control, String name, String value)
 {
     if (m_nodes.ContainsKey(control))
     {
         XmlNode      node   = m_nodes[control];
         XmlAttribute xmlAtr = null;
         //检查是否存在属性
         foreach (XmlAttribute atr in node.Attributes)
         {
             if (atr.Name.ToLower() == name.ToLower())
             {
                 xmlAtr = atr;
                 break;
             }
         }
         if (xmlAtr == null)
         {
             xmlAtr = m_xmlDoc.CreateAttribute(name.ToLower());
             node.Attributes.Append(xmlAtr);
         }
         xmlAtr.Value = value;
         control.setProperty(name.ToLower(), value);
         onDocumentChanged();
     }
 }
Example #13
0
        /// <summary>
        /// 创建树的节点
        /// </summary>
        /// <param name="node">节点</param>
        /// <param name="control">控件</param>
        /// <param name="treeNode">树节点</param>
        protected virtual void createTreeNode(XmlNode node, FCView control, FCTreeNode treeNode)
        {
            FCTree tree = control as FCTree;

            if (tree != null)
            {
                FCTreeNode appendNode = new FCTreeNode();
                if (treeNode == null)
                {
                    tree.appendNode(appendNode);
                }
                else
                {
                    treeNode.appendNode(appendNode);
                }
                setAttributesBefore(node, appendNode);
                foreach (XmlNode subNode in node.ChildNodes)
                {
                    if (subNode.Name.ToLower() == "node")
                    {
                        createTreeNode(subNode, control, appendNode);
                    }
                }
                setAttributesAfter(node, appendNode);
            }
        }
Example #14
0
 /// <summary>
 /// 按键抬起方法
 /// </summary>
 /// <param name="key">按键</param>
 public override void onKeyUp(char key)
 {
     if (!IsDragging)
     {
         m_step = 1;
         base.onKeyUp(key);
         if (m_offsetX != 0 || m_offsetY != 0)
         {
             int targetsSize = m_targets.Count;
             if (targetsSize > 0)
             {
                 m_designerDiv.saveUndo();
                 for (int i = 0; i < targetsSize; i++)
                 {
                     FCView  target      = m_targets[i];
                     FCPoint oldLocation = target.Location;
                     oldLocation.x += m_offsetX;
                     oldLocation.y += m_offsetY;
                     m_xml.setProperty(target, "location", FCStr.convertPointToStr(oldLocation));
                     target.update();
                 }
                 m_designerDiv.Designer.refreshProperties();
             }
             refreshStatusBar();
             Parent.invalidate();
         }
     }
     m_offsetX = 0;
     m_offsetY = 0;
 }
Example #15
0
 /// <summary>
 /// 读取字符串,加载到控件中
 /// </summary>
 /// <param name="xml">字符串</param>
 /// <param name="control">控件</param>
 public override void loadXml(String xml, FCView control)
 {
     if (control != null)
     {
         m_nodes.Clear();
     }
     base.loadXml(xml, control);
 }
Example #16
0
 /// <summary>
 /// 创建树的节点
 /// </summary>
 /// <param name="node">节点</param>
 /// <param name="control">控件</param>
 protected virtual void createTreeNodes(XmlNode node, FCView control)
 {
     foreach (XmlNode subNode in node.ChildNodes)
     {
         createTreeNode(subNode, control, null);
     }
     control.update();
 }
Example #17
0
 /// <summary>
 /// 加载到某个控件中
 /// </summary>
 /// <param name="skinPath">文件的路径</param>
 /// <param name="control">控件</param>
 public override void loadFile(String fileName, FCView control)
 {
     if (control != null)
     {
         m_nodes.Clear();
     }
     base.loadFile(fileName, control);
 }
Example #18
0
        /// <summary>
        /// 读取头部
        /// </summary>
        /// <param name="node">XML节点</param>
        /// <param name="control">控件</param>
        public override void readHead(XmlNode node, FCView control)
        {
            WinHostEx host = Native.Host as WinHostEx;

            if (host.LoadingDesigner)
            {
                base.readHead(node, control);
            }
        }
Example #19
0
 /// <summary>
 /// 创建表格行
 /// </summary>
 /// <param name="node">节点</param>
 /// <param name="control">控件</param>
 protected virtual void createGridRows(XmlNode node, FCView control)
 {
     foreach (XmlNode node2 in node.ChildNodes)
     {
         if (node2.Name.ToLower() == "row" || node2.Name.ToLower() == "tr")
         {
             createGridRow(node2, control);
         }
     }
 }
Example #20
0
        /// <summary>
        /// 获取按钮
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>按钮</returns>
        public FCButton getButton(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCButton);
            }
            return(null);
        }
Example #21
0
 /// <summary>
 /// 读取子节点
 /// </summary>
 /// <param name="node">节点</param>
 /// <param name="control">控件</param>
 public virtual void readChildNodes(XmlNode node, FCView control)
 {
     if (node.ChildNodes != null && node.ChildNodes.Count > 0)
     {
         foreach (XmlNode subNode in node.ChildNodes)
         {
             readNode(subNode, control);
         }
     }
 }
Example #22
0
        /// <summary>
        /// 获取下拉控件
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>下拉控件</returns>
        public FCComboBox getComboBox(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCComboBox);
            }
            return(null);
        }
Example #23
0
        /// <summary>
        /// 获取图层
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>按钮</returns>
        public FCDiv getDiv(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCDiv);
            }
            return(null);
        }
Example #24
0
        /// <summary>
        /// 获取窗体
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>窗体</returns>
        public FCWindow getWindow(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCWindow);
            }
            return(null);
        }
Example #25
0
        /// <summary>
        /// 获取图形控件
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>复选框</returns>
        public FCChart getChart(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCChart);
            }
            return(null);
        }
Example #26
0
        /// <summary>
        /// 获取标签
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>按钮</returns>
        public FCLabel getLabel(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCLabel);
            }
            return(null);
        }
Example #27
0
        /// <summary>
        /// 获取日期控件
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>日期控件</returns>
        public FCDateTimePicker getDatePicker(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCDateTimePicker);
            }
            return(null);
        }
Example #28
0
        /// <summary>
        /// 获取菜单项控件
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>菜单项控件</returns>
        public FCMenuItem getMenuItem(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCMenuItem);
            }
            return(null);
        }
Example #29
0
        /// <summary>
        /// 获取表格
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>表格</returns>
        public FCGrid getGrid(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCGrid);
            }
            return(null);
        }
Example #30
0
        /// <summary>
        /// 获取树控件
        /// </summary>
        /// <param name="name">控件名称</param>
        /// <returns>树控件</returns>
        public FCTree getTree(String name)
        {
            FCView control = findControl(name);

            if (control != null)
            {
                return(control as FCTree);
            }
            return(null);
        }