Ejemplo n.º 1
0
        public Control makeValueBox(int x, int y, String initValue, String name)
        {
            NumberTextBox textBox = new NumberTextBox();

            textBox.HideSelection = false;
            textBox.Location      = new System.Drawing.Point(x, y);
            textBox.Name          = name;
            textBox.Size          = new System.Drawing.Size(_textWidth, _textHeight);
            textBox.TabIndex      = 0;
            try { textBox.Text = initValue; }
            catch { textBox.Text = "0"; }

            return(textBox);
        }
Ejemplo n.º 2
0
        public void AddRow(String name, String value = "0")
        {
            if (valueDic.ContainsKey(name))
            {
                this[name].Text = value;
                return;
            }

            int y = 0;
            int x = 0;

            setValueX();
            if (isInit == true)
            {//디자이너에서 보여주기 위해 초기에 라벨이 추가되어 있다.
                //하지만 사용자가 addRow를 호출하는 순간 기존의 것은 없어져야 한다.
                isInit = false;
                this.clear();
                _initWidth = this.Width;
                isInit     = false;
            }
            int count = values.Count;

            if (count > 0)
            {//이전에 addRow를 호출하여 추가된 것이 있다면 그 추가된 것의 위치를 차용해 온다.
                x  = names[count - 1].Location.X;
                y  = values[count - 1].Location.Y;
                y += values[count - 1].Height;
                y += _rowPadding;
            }
            if (y + 30 > this.Height)
            {                             //만일 초기 높이를 넘어갔다면
                if (_isScrollEnabled == false)
                {                         //스크롤 불가시 옆(오른쪽)으로 확장해 주어야 한다.
                    if (_isColWidthFixed) //한 열의 크기가 고정되어 있다면
                    {                     //고정된 만큼만 우측으로 이동하여 그려준다.
                        x += _fixedColWidth;
                        y  = 0;
                        _numOfCols++;
                    }
                    else //고정이 아니라면, 비율에 따라서 이동하여야 할 것이다.
                    {//여기서 비율은 실시간으로 계산되어, col의 개수로 나뉜다.
                        _numOfCols++;
                        _isNeedReposition = true;
                        if (_isAutoRedraw)
                        {
                            reDrawAll();                //2개 이상의 col이라면 이전에 그린 줄의 위치를 재설정 해야 한다.
                        }
                        //그러나 autoRedraw 설정이 되어 있어야만 그리고, 그렇지 않다면 사용자가 직접 reDrawAll명령을
                        //호출해야 할 것이다.

                        x = (int)((_initWidth) * ((double)(_numOfCols - 1) / (double)_numOfCols));
                        y = 0;
                    }
                }//스크롤 가능 시에는 스크롤 바의 움직임에 따라 백그라운드를 리프레시 해 주는 루틴을 넣는다.
                else if (_isNeedScroll == false) //두 번 루틴을 넣는 것을 방지하기 위해 _isNeedScroll변수를 셋팅한다.
                {
                    _isNeedScroll = true;
                    //scroll이 필요할 때 정해 줄 것
                    BackPanel.Scroll           += new ScrollEventHandler(BackPanel_Scroll);
                    ScrolltimerTickEventHandler = new EventHandler(scrollTimer_Tick);
                    BackPanel.MouseWheel       += new MouseEventHandler(BackPanel_MouseWheel);
                    scrollTimer          = new Timer();
                    scrollTimer.Interval = 1000;
                    scrollTimer.Tick    += ScrolltimerTickEventHandler;
                }
            }

            setValueX();
            Label nameLabel = makeLabel(x, y, name);
            int   valuePos  = (valueX > nameLabel.Width)? valueX : nameLabel.Width;

            if (value.Equals(""))
            {
                value = "0";
            }
            NumberTextBox valueTextBox = makeTextBox(x + valuePos, y, value, name);

            nameLabel.MouseHover  += new EventHandler(valueLabel_MouseHover);
            nameLabel.MouseLeave  += new EventHandler(valueLabel_MouseLeave);
            nameLabel.ForeColor    = _foreColors[0];
            valueTextBox.ForeColor = _foreColors[1];


            names.Add(nameLabel);
            nameString.Add(name);
            values.Add(valueTextBox);
            valueDic[name] = valueTextBox;

            BackPanel.Controls.Add(nameLabel);
            BackPanel.Controls.Add(valueTextBox);
            if (_isUnderLine)
            {
                UserControl underLine = new UserControl();
                underLine.Location  = new Point(0, y + valueTextBox.Height);
                underLine.Width     = (_isScrollEnabled) ? _initWidth - 20 : _initWidth;//스크롤바가 생겼을 때를 대비
                underLine.Height    = 1;
                underLine.BackColor = _underLineColor;
                BackPanel.Controls.Add(underLine);
            }


            //valueDic.Add(name, valueTextBox);

            //BackPanel.SuspendLayout();

            //BackPanel.ResumeLayout();
        }