Exemple #1
0
        /// <summary>
        /// 加载宏
        /// </summary>
        /// <param name="macro">宏信息</param>
        private void LoadMacro(Macro macro)
        {
            TextBoxA  txtMacroName        = GetTextBox("txtMacroName");
            TextBoxA  txtMacroDescription = GetTextBox("txtMacroDescription");
            TextBoxA  txtMacroScript      = GetTextBox("txtMacroScript");
            SpinA     spinInterval        = GetSpin("spinInterval");
            SpinA     spinCD    = GetSpin("spinCD");
            ButtonA   btnDelete = GetButton("btnDelete");
            ButtonA   btnApply  = GetButton("btnApply");
            ButtonA   btnCreate = GetButton("btnCreate");
            ButtonA   btnSave   = GetButton("btnSave");
            ComboBoxA cbType    = GetComboBox("cbType");

            m_divIcon.BackImage      = macro.m_icon;
            txtMacroName.Text        = macro.m_name;
            txtMacroDescription.Text = macro.m_description;
            txtMacroScript.Text      = macro.m_script;
            spinInterval.Value       = macro.m_interval;
            spinCD.Value             = macro.m_cd;
            cbType.SelectedIndex     = macro.m_type;
            bool btnEnabled = (macro.m_macroID != null && macro.m_macroID.Length > 0);

            btnDelete.Enabled = btnEnabled;
            btnSave.Enabled   = btnEnabled;
        }
Exemple #2
0
        /// <summary>
        /// 获取K线静态数值
        /// </summary>
        /// <param name="div">K线层</param>
        private void SetCandleStaticValue(SandBoxCandleDiv div)
        {
            SecurityData data       = div.Data;
            SpinA        spinOpen   = GetSpin("txtOpen");
            SpinA        spinClose  = GetSpin("txtClose");
            SpinA        spinHigh   = GetSpin("txtHigh");
            SpinA        spinLow    = GetSpin("txtLow");
            SpinA        spinVolume = GetSpin("txtVolume");
            SpinA        spinAmount = GetSpin("txtAmount");
            LabelA       lblDate    = GetLabel("lblDate");

            data.m_open   = (float)spinOpen.Value;
            data.m_close  = (float)spinClose.Value;
            data.m_high   = (float)spinHigh.Value;
            data.m_low    = (float)spinLow.Value;
            data.m_volume = spinVolume.Value;
            data.m_amount = spinAmount.Value;
            String strDate = lblDate.Text;

            if (strDate != null && strDate.Length > 0)
            {
                data.m_date = m_chart.Chart.ConvertDateToNum(Convert.ToDateTime(strDate));
            }
            div.Data = data;
        }
Exemple #3
0
        /// <summary>
        /// 加载代理信息
        /// </summary>
        private void LoadProxyInfo()
        {
            ComboBoxA        cbProxyType      = GetComboBox("cbProxyType");
            TextBoxA         txtProxyIP       = GetTextBox("txtProxyIP");
            SpinA            spinProxyPort    = GetSpin("spinProxyPort");
            TextBoxA         txtProxyUserName = GetTextBox("txtProxyUserName");
            TextBoxA         txtProxyUserPwd  = GetTextBox("txtProxyUserPwd");
            TextBoxA         txtProxyDomain   = GetTextBox("txtProxyDomain");
            List <ProxyInfo> proxyInfos       = new List <ProxyInfo>();

            m_proxyService.GetProxyInfos(proxyInfos);
            int proxyInfosSize = proxyInfos.Count;

            for (int i = 0; i < proxyInfosSize; i++)
            {
                ProxyInfo proxyInfo = proxyInfos[i];
                if (cbProxyType.SelectedIndex == proxyInfo.m_type)
                {
                    txtProxyIP.Enabled       = (proxyInfo.m_type == 1 || proxyInfo.m_type == 2);
                    spinProxyPort.Enabled    = (proxyInfo.m_type == 1 || proxyInfo.m_type == 2);
                    txtProxyUserName.Enabled = (proxyInfo.m_type == 1 || proxyInfo.m_type == 2 || proxyInfo.m_type == 3);
                    txtProxyUserPwd.Enabled  = (proxyInfo.m_type == 1 || proxyInfo.m_type == 2 || proxyInfo.m_type == 3);
                    txtProxyDomain.Enabled   = proxyInfo.m_type == 2;
                    txtProxyIP.Text          = proxyInfo.m_ip;
                    spinProxyPort.Value      = proxyInfo.m_port;
                    txtProxyUserName.Text    = proxyInfo.m_name;
                    txtProxyUserPwd.Text     = proxyInfo.m_pwd;
                    txtProxyDomain.Text      = proxyInfo.m_domain;
                    break;
                }
            }
            m_window.Invalidate();
            proxyInfos.Clear();
        }
Exemple #4
0
        /// <summary>
        /// 保存配置
        /// </summary>
        private void SaveData()
        {
            List <ConnectInfo> connectInfos = new List <ConnectInfo>();

            m_connectServer.GetConnects(connectInfos);
            int connectInfosSize = connectInfos.Count;

            for (int i = 0; i < connectInfosSize; i++)
            {
                ConnectInfo connectInfo = connectInfos[i];
                String      type        = connectInfo.m_type;
                if (type == "主服务器")
                {
                    connectInfo.m_ip   = m_cbMainServerIP.Text;
                    connectInfo.m_port = CStr.ConvertStrToInt(m_txtMainServerPort.Text);
                }
                m_connectServer.UpdateConnect(connectInfo);
            }
            connectInfos.Clear();
            //保存代理信息
            ComboBoxA cbProxyType      = GetComboBox("cbProxyType");
            TextBoxA  txtProxyIP       = GetTextBox("txtProxyIP");
            SpinA     spinProxyPort    = GetSpin("spinProxyPort");
            TextBoxA  txtProxyUserName = GetTextBox("txtProxyUserName");
            TextBoxA  txtProxyUserPwd  = GetTextBox("txtProxyUserPwd");
            TextBoxA  txtProxyDomain   = GetTextBox("txtProxyDomain");
            ProxyInfo proxyInfo        = new ProxyInfo();

            proxyInfo.m_domain = txtProxyDomain.Text;
            proxyInfo.m_ip     = txtProxyIP.Text;
            proxyInfo.m_port   = (int)spinProxyPort.Value;
            proxyInfo.m_name   = txtProxyUserName.Text;
            proxyInfo.m_pwd    = txtProxyUserPwd.Text;
            proxyInfo.m_type   = cbProxyType.SelectedIndex;
            proxyInfo.m_use    = true;
            List <ProxyInfo> proxyInfos = new List <ProxyInfo>();

            m_proxyService.GetProxyInfos(proxyInfos);
            int proxyInfosSize = proxyInfos.Count;

            for (int i = 0; i < proxyInfosSize; i++)
            {
                ProxyInfo pInfo = proxyInfos[i];
                if (cbProxyType.SelectedIndex == pInfo.m_type)
                {
                    m_proxyService.UpdateConnect(proxyInfo);
                }
                else
                {
                    pInfo.m_use = false;
                    m_proxyService.UpdateConnect(pInfo);
                }
            }
        }
Exemple #5
0
        /// <summary>
        /// 数值输入变化方法
        /// </summary>
        /// <param name="spinA">数值控件</param>
        public void OnSpinTextChanged(SpinA spin)
        {
            int divsSize = m_divs.Count;

            for (int i = 0; i < divsSize; i++)
            {
                SandBoxCandleDiv div = m_divs[i];
                if (!div.Moving)
                {
                    SecurityData data  = div.Data;
                    String       name  = spin.Name;
                    double       value = spin.Value;
                    if (name == "txtOpen")
                    {
                        data.m_open = (float)value;
                    }
                    else if (name == "txtClose")
                    {
                        data.m_close = (float)value;
                    }
                    else if (name == "txtHigh")
                    {
                        data.m_high = (float)value;
                    }
                    else if (name == "txtLow")
                    {
                        data.m_low = (float)value;
                    }
                    else if (name == "txtVolume")
                    {
                        data.m_volume = value;
                    }
                    else if (name == "txtAmount")
                    {
                        data.m_amount = value;
                    }
                    div.Data = data;
                    m_native.Invalidate();
                    break;
                }
            }
        }
Exemple #6
0
 /// <summary>
 /// 获取参数
 /// </summary>
 private void GetParameters()
 {
     if (m_indicator != null)
     {
         m_window.Text = "参数设置(" + m_indicator.Name + ")";
         IndicatorData indicatorData = m_indicator.Tag as IndicatorData;
         String[]      strs          = indicatorData.m_parameters.Split(new String[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
         int           strsSize      = strs.Length;
         //依此创建控件
         int addHeight = 0;
         for (int i = 0; i < strsSize; i++)
         {
             String   str   = strs[i];
             String[] strs2 = str.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries);
             String   name  = strs2[0];
             String   value = strs2[3];
             //创建标签
             LabelA label    = new LabelA();
             POINT  location = new POINT(50, addHeight + 40);
             label.Location = location;
             label.Text     = name;
             m_window.AddControl(label);
             //创建数值控件
             SpinA spin = new SpinA();
             location.x    = 130;
             location.y    = addHeight + 40;
             spin.Location = location;
             spin.Maximum  = 10000000;
             spin.Value    = CStrA.ConvertStrToDouble(value);
             m_window.AddControl(spin);
             addHeight += 30;
         }
         m_window.Height += addHeight;
         //调整按钮的位置
         ButtonA cancelButton = GetButton("btnCancel");
         ButtonA submitButton = GetButton("btnSubmit");
         cancelButton.Top += addHeight;
         submitButton.Top += addHeight;
     }
 }
Exemple #7
0
        /// <summary>
        /// 注册事件
        /// </summary>
        /// <param name="control">控件</param>
        private void RegisterEvents(ControlA control)
        {
            ControlMouseEvent clickButtonEvent      = new ControlMouseEvent(ClickButton);
            ControlEvent      spinInputChangedEvent = new ControlEvent(SpinTextChanged);
            List <ControlA>   controls = control.GetControls();
            int controlsSize           = controls.Count;

            for (int i = 0; i < controlsSize; i++)
            {
                ButtonA button = controls[i] as ButtonA;
                if (button != null)
                {
                    button.RegisterEvent(clickButtonEvent, EVENTID.CLICK);
                }
                SpinA spin = controls[i] as SpinA;
                if (spin != null)
                {
                    spin.RegisterEvent(spinInputChangedEvent, EVENTID.TEXTCHANGED);
                }
                RegisterEvents(controls[i]);
            }
        }
Exemple #8
0
        /// <summary>
        /// 把指定日期K线的高开低收数据设置到画面的数值控件上
        /// </summary>
        /// <param name="date">日期</param>
        private void SetSpinValue(double date)
        {
            ChartA chart      = m_chart.Chart;
            CTable dataSource = chart.DataSource;
            int    rowsCount  = dataSource.RowsCount;

            if (rowsCount > 0)
            {
                int index = dataSource.GetRowIndex(date);
                if (index < 1)
                {
                    index = rowsCount - 1;
                }
                SpinA  spinOpen   = GetSpin("txtOpen");
                SpinA  spinClose  = GetSpin("txtClose");
                SpinA  spinHigh   = GetSpin("txtHigh");
                SpinA  spinLow    = GetSpin("txtLow");
                SpinA  spinVolume = GetSpin("txtVolume");
                SpinA  spinAmount = GetSpin("txtAmount");
                LabelA lblDate    = GetLabel("lblDate");
                spinOpen.Value   = dataSource.Get2(index, KeyFields.OPEN_INDEX);
                spinClose.Value  = dataSource.Get2(index, KeyFields.CLOSE_INDEX);
                spinHigh.Value   = dataSource.Get2(index, KeyFields.HIGH_INDEX);
                spinLow.Value    = dataSource.Get2(index, KeyFields.LOW_INDEX);
                spinVolume.Value = dataSource.Get2(index, KeyFields.VOL_INDEX);
                spinAmount.Value = dataSource.Get2(index, KeyFields.AMOUNT_INDEX);
                DateTime dateTime = m_chart.Chart.ConvertNumToDate(date);
                int      m_cycle  = m_chart.Cycle;
                if (m_cycle <= 60)
                {
                    lblDate.Text = dateTime.ToString("yyyy-MM-dd HH:mm:ss");
                }
                else
                {
                    lblDate.Text = dateTime.ToString("yyyy-MM-dd");
                }
                m_window.Invalidate();
            }
        }
Exemple #9
0
        /// <summary>
        /// 获取宏信息
        /// </summary>
        /// <param name="macro">宏信息</param>
        public void GetMacro(ref Macro macro)
        {
            TextBoxA txtMacroName        = GetTextBox("txtMacroName");
            TextBoxA txtMacroDescription = GetTextBox("txtMacroDescription");
            TextBoxA txtMacroScript      = GetTextBox("txtMacroScript");
            SpinA    spinInterval        = GetSpin("spinInterval");
            SpinA    spinCD = GetSpin("spinCD");

            if (m_macro.m_macroID != null && m_macro.m_macroID.Length > 0)
            {
                macro.m_macroID = m_macro.m_macroID;
            }
            ComboBoxA cbType = GetComboBox("cbType");

            macro.m_type        = cbType.SelectedIndex;
            macro.m_name        = txtMacroName.Text;
            macro.m_description = txtMacroDescription.Text;
            macro.m_script      = txtMacroScript.Text;
            macro.m_interval    = (int)spinInterval.Value;
            macro.m_cd          = (int)spinCD.Value;
            macro.m_icon        = m_divIcon.BackImage;
            macro.m_userID      = DataCenter.UserID;
        }
Exemple #10
0
        /// <summary>
        /// 文本框输入值变化
        /// </summary>
        /// <param name="sender">控件</param>
        private void SpinTextChanged(object sender)
        {
            SpinA spin = sender as SpinA;

            OnSpinTextChanged(spin);
        }
Exemple #11
0
        /// <summary>
        /// 创建内部控件
        /// </summary>
        /// <param name="parent">父控件</param>
        /// <param name="clsid">控件标识</param>
        /// <returns>内部控件</returns>
        public override ControlA CreateInternalControl(ControlA parent, String clsid)
        {
            //日历控件
            CalendarA calendar = parent as CalendarA;

            if (calendar != null)
            {
                if (clsid == "datetitle")
                {
                    return(new DateTitle(calendar));
                }
                else if (clsid == "headdiv")
                {
                    HeadDiv headDiv = new HeadDiv(calendar);
                    headDiv.Width = parent.Width;
                    headDiv.Dock  = DockStyleA.Top;
                    return(headDiv);
                }
                else if (clsid == "lastbutton")
                {
                    return(new ArrowButton(calendar));
                }
                else if (clsid == "nextbutton")
                {
                    ArrowButton nextBtn = new ArrowButton(calendar);
                    nextBtn.ToLast = false;
                    return(nextBtn);
                }
            }
            //分割层
            SplitLayoutDivA splitLayoutDiv = parent as SplitLayoutDivA;

            if (splitLayoutDiv != null)
            {
                if (clsid == "splitter")
                {
                    ButtonA splitter = new ButtonA();
                    splitter.BackColor = CDraw.PCOLORS_BACKCOLOR;
                    splitter.Size      = new SIZE(5, 5);
                    return(splitter);
                }
            }
            //滚动条
            ScrollBarA scrollBar = parent as ScrollBarA;

            if (scrollBar != null)
            {
                scrollBar.BackColor = COLOR.EMPTY;
                if (clsid == "addbutton")
                {
                    RibbonButton addButton = new RibbonButton();
                    addButton.Size = new SIZE(15, 15);
                    if (scrollBar is HScrollBarA)
                    {
                        addButton.ArrowType = 2;
                    }
                    else if (scrollBar is VScrollBarA)
                    {
                        addButton.ArrowType = 4;
                    }
                    return(addButton);
                }
                else if (clsid == "backbutton")
                {
                    ButtonA backButton = new ButtonA();
                    return(backButton);
                }
                else if (clsid == "scrollbutton")
                {
                    ButtonA scrollButton = new ButtonA();
                    scrollButton.AllowDrag   = true;
                    scrollButton.BackColor   = CDraw.PCOLORS_BACKCOLOR;
                    scrollButton.BorderColor = CDraw.PCOLORS_LINECOLOR3;
                    return(scrollButton);
                }
                else if (clsid == "reducebutton")
                {
                    RibbonButton reduceButton = new RibbonButton();
                    reduceButton.Size = new SIZE(15, 15);
                    if (scrollBar is HScrollBarA)
                    {
                        reduceButton.ArrowType = 1;
                    }
                    else if (scrollBar is VScrollBarA)
                    {
                        reduceButton.ArrowType = 3;
                    }
                    return(reduceButton);
                }
            }
            //页夹
            TabPageA tabPage = parent as TabPageA;

            if (tabPage != null)
            {
                if (clsid == "headerbutton")
                {
                    RibbonButton button = new RibbonButton();
                    button.AllowDrag = true;
                    SIZE size = new SIZE(100, 20);
                    button.Size = size;
                    return(button);
                }
            }
            //下拉列表
            ComboBoxA comboBox = parent as ComboBoxA;

            if (comboBox != null)
            {
                if (clsid == "dropdownbutton")
                {
                    RibbonButton dropDownButton = new RibbonButton();
                    dropDownButton.ArrowType     = 4;
                    dropDownButton.DisplayOffset = false;
                    int   width    = comboBox.Width;
                    int   height   = comboBox.Height;
                    POINT location = new POINT(width - 20, 0);
                    dropDownButton.Location = location;
                    SIZE size = new SIZE(20, height);
                    dropDownButton.Size = size;
                    return(dropDownButton);
                }
                else if (clsid == "dropdownmenu")
                {
                    ComboBoxMenu comboBoxMenu = new ComboBoxMenu();
                    comboBoxMenu.ComboBox = comboBox;
                    comboBoxMenu.Popup    = true;
                    SIZE size = new SIZE(100, 200);
                    comboBoxMenu.Size = size;
                    return(comboBoxMenu);
                }
            }
            //日期选择
            DatePickerA datePicker = parent as DatePickerA;

            if (datePicker != null)
            {
                if (clsid == "dropdownbutton")
                {
                    RibbonButton dropDownButton = new RibbonButton();
                    dropDownButton.ArrowType     = 4;
                    dropDownButton.DisplayOffset = false;
                    int   width    = datePicker.Width;
                    int   height   = datePicker.Height;
                    POINT location = new POINT(width - 16, 0);
                    dropDownButton.Location = location;
                    SIZE size = new SIZE(16, height);
                    dropDownButton.Size = size;
                    return(dropDownButton);
                }
                else if (clsid == "dropdownmenu")
                {
                    MenuA dropDownMenu = new MenuA();
                    dropDownMenu.Padding = new PADDING(1);
                    dropDownMenu.Popup   = true;
                    SIZE size = new SIZE(200, 200);
                    dropDownMenu.Size = size;
                    return(dropDownMenu);
                }
            }
            //数字选择
            SpinA spin = parent as SpinA;

            if (spin != null)
            {
                if (clsid == "downbutton")
                {
                    RibbonButton downButton = new RibbonButton();
                    downButton.ArrowType     = 4;
                    downButton.DisplayOffset = false;
                    SIZE size = new SIZE(16, 16);
                    downButton.Size = size;
                    return(downButton);
                }
                else if (clsid == "upbutton")
                {
                    RibbonButton upButton = new RibbonButton();
                    upButton.ArrowType     = 3;
                    upButton.DisplayOffset = false;
                    SIZE size = new SIZE(16, 16);
                    upButton.Size = size;
                    return(upButton);
                }
            }
            //容器层
            DivA div = parent as DivA;

            if (div != null)
            {
                if (clsid == "hscrollbar")
                {
                    HScrollBarA hScrollBar = new HScrollBarA();
                    hScrollBar.Visible = false;
                    hScrollBar.Size    = new SIZE(15, 15);
                    return(hScrollBar);
                }
                else if (clsid == "vscrollbar")
                {
                    VScrollBarA vScrollBar = new VScrollBarA();
                    vScrollBar.Visible = false;
                    vScrollBar.Size    = new SIZE(15, 15);
                    return(vScrollBar);
                }
            }
            //表格
            GridA grid = parent as GridA;

            if (grid != null)
            {
                if (clsid == "edittextbox")
                {
                    TextBoxA textBox = new TextBoxA();
                    textBox.BackColor = CDraw.PCOLORS_BACKCOLOR;
                    return(textBox);
                }
            }
            return(null);
        }
Exemple #12
0
        /// <summary>
        /// 设置参数
        /// </summary>
        private void SetParameters()
        {
            List <ControlA> controls     = m_window.GetControls();
            List <LabelA>   labels       = new List <LabelA>();
            List <SpinA>    spins        = new List <SpinA>();
            int             controlsSize = controls.Count;

            for (int i = 0; i < controlsSize; i++)
            {
                ControlA control = controls[i];
                LabelA   label   = control as LabelA;
                SpinA    spin    = control as SpinA;
                if (label != null)
                {
                    labels.Add(label);
                }
                else if (spin != null)
                {
                    spins.Add(spin);
                }
            }
            int    labelsSize    = labels.Count;
            String newParameters = "";

            for (int i = 0; i < labelsSize; i++)
            {
                newParameters += labels[i].Text + ",0,0," + spins[i].Value.ToString();
                newParameters += ";";
            }
            labels.Clear();
            spins.Clear();
            m_indicator.Clear();
            m_indicator.SetSourceField(KeyFields.CLOSE, KeyFields.CLOSE_INDEX);
            m_indicator.SetSourceField(KeyFields.HIGH, KeyFields.HIGH_INDEX);
            m_indicator.SetSourceField(KeyFields.LOW, KeyFields.LOW_INDEX);
            m_indicator.SetSourceField(KeyFields.OPEN, KeyFields.OPEN_INDEX);
            m_indicator.SetSourceField(KeyFields.VOL, KeyFields.VOL_INDEX);
            m_indicator.SetSourceField(KeyFields.AMOUNT, KeyFields.AMOUNT_INDEX);
            m_indicator.SetSourceField(KeyFields.CLOSE.Substring(0, 1), KeyFields.CLOSE_INDEX);
            m_indicator.SetSourceField(KeyFields.HIGH.Substring(0, 1), KeyFields.HIGH_INDEX);
            m_indicator.SetSourceField(KeyFields.LOW.Substring(0, 1), KeyFields.LOW_INDEX);
            m_indicator.SetSourceField(KeyFields.OPEN.Substring(0, 1), KeyFields.OPEN_INDEX);
            m_indicator.SetSourceField(KeyFields.VOL.Substring(0, 1), KeyFields.VOL_INDEX);
            m_indicator.SetSourceField(KeyFields.AMOUNT.Substring(0, 1), KeyFields.AMOUNT_INDEX);
            IndicatorData indicatorData = m_indicator.Tag as IndicatorData;

            indicatorData.m_parameters = newParameters;
            String constValue = "";

            if (newParameters != null && newParameters.Length > 0)
            {
                String[] strs     = newParameters.Split(new String[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                int      strsSize = strs.Length;
                for (int i = 0; i < strsSize; i++)
                {
                    String   str   = strs[i];
                    String[] strs2 = str.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    constValue += "const " + strs2[0] + ":" + strs2[3] + ";";
                }
            }
            m_indicator.Script = constValue + indicatorData.m_script;
            m_indicator.OnCalculate(0);
            if (m_indicator.AttachVScale == AttachVScale.Left)
            {
                //m_indicator.Div.TitleBar.Text = m_indicator.Title;
            }
            m_chart.Chart.Update();
            m_chart.Chart.Invalidate();
        }
Exemple #13
0
 /// <summary>
 /// 数值输入变化方法
 /// </summary>
 /// <param name="spinA">数值控件</param>
 public void OnSpinTextChanged(SpinA spin)
 {
     SetParameters();
 }