예제 #1
0
        public TextDataAdapter(FixedTextDefines defines, string dataText) : this(defines)
        {
            //TODO:テキストが挿入された状態と合わせなければならない、もしくはテキストボックス側を直計算する
            DataRecords = new List <string>();
            //最初の文字からレコード識別を読み込んで、内部情報として保持していく
            KeyLength = TextDefines.Records.First().Items.FirstOrDefault(v => v.Recognition).Length;

            HasCrLf = dataText.IndexOf("\r\n") > 0;
            if (string.IsNullOrEmpty(dataText))
            {
                return;
            }
            var firstKeyValue = dataText.Substring(0, KeyLength);
            int textIndex     = 0;
            while (true)
            {
                try
                {
                    var kind = GetRecordKind(firstKeyValue);
                    var sb   = new StringBuilder();
                    foreach (var item in kind.Items)
                    {
                        sb.Append(dataText.Substring(textIndex, item.Length));
                        textIndex += item.Length;
                    }
                    DataRecords.Add(sb.ToString());
                }
                catch (ArgumentOutOfRangeException)
                {
                    //テキストがなくなったら終わり
                    break;
                }
            }
        }
예제 #2
0
        /// <summary>
        /// オートスクロール可能なパネルに
        /// 定義されたラベル・テキストボックスを作成します
        /// </summary>
        private void MakeControls(FixedTextDefines source)
        {
            foreach (var record in source.Records)
            {
                //タブとパネル
                this.tabControlMain.TabPages.Add(record.Name, record.Name);
                var panel = new Panel()
                {
                    Dock         = DockStyle.Fill
                    , AutoScroll = true
                };

                //パネルの中身
                int y          = 0;
                int startIndex = 0;
                foreach (var item in record.Items)
                {
                    var labelText = LabelTextFactory.Generate(item, startIndex);
                    labelText.Location = new Point(0, y);
                    panel.Controls.Add(labelText);
                    y          += 25;
                    startIndex += item.Length;
                }
                this.tabControlMain.TabPages[record.Name].Controls.Add(panel);
            }
        }
예제 #3
0
        public TextDataAdapter(FixedTextDefines defines) : this()
        {
            TextDefines = defines;
            int start = 0;

            KeyLength = 1;
            bool hasKey = false;

            foreach (var item in defines.Records.First().Items)
            {
                if (item.Recognition)
                {
                    KeyLength = item.Length;
                    hasKey    = true;
                    break;
                }
                start += item.Length;
            }
            KeyStart = start;
            if (!hasKey)
            {
                KeyStart = 0;
            }
        }