要求实现一个分列的功能,一段显示在edit下的文字,要能够被分成一列一列的,比如:
No pain,no gain
需要能够从“,”两边开始分成三列,第一列“No pain”,第二列“,”,第三列“no gain”,不同的列需要用不同的背景色区分

解决方案 »

  1.   

    说的是lookupcombobox吗??
    如果是的话,用用ww的,或cx的都行@~~~~~~~~~~~~
      

  2.   

    lookupcombobox没接触过,用于数据库的吗?我的意思是一行文本显示出来,默认是一列,然后我可以用插入分格符的方式,将文本分成两列,还是以上一个文本为例,用户先在","前面插入分格符,再在逗号后面插入分格符,这样就得到三列,然后可以分别对这三列做一些设置
      

  3.   

    我也想过richEdit,它最多只能实现不同段的字不同颜色,其他的很难实现,而且用户用起来特别扭
      

  4.   

    或者不用edit控件,随便一个控件,只要能实现要求即可
      

  5.   

    用stringgrid,同时贴一个edit上去把值取出来
    代码:
    procedure TRuleSetFrm.N1Click(Sender: TObject);//分割
    var
      i:Integer;
    begin
      SG1.ColCount:=SG1.ColCount+1;
      SG1.Cells[SG1.Selection.Left,0]:=Copy(myEdit.Text,1,myEdit.SelStart);
      if SG1.ColCount>2 then for i:=SG1.ColCount-1 downto SG1.Selection.Left+2 do
        SG1.Cells[i,0]:=SG1.Cells[i-1,0];
      SG1.Cells[SG1.Selection.Left+1,0]:=
        Copy(myEdit.Text,myEdit.SelStart+1,Length(myEdit.Text)-myEdit.SelStart);
      myEdit.Visible:=False;
      ReWidthSG(SG1,charWidth);
      if Assigned(labelList) then begin
        if SG1.Selection.Left>labelList.Count-1 then labelList.Add(LabelAry2Str(MakeADefaultLabel))
        else labelList.Insert(SG1.Selection.Left,LabelAry2Str(MakeADefaultLabel));
      end;
    end;procedure TRuleSetFrm.SG1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      if State=[gdFocused,gdSelected] then begin
        myEdit.SetBounds(Rect.Left,Rect.Top,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top);
        myEdit.Text:=SG1.Cells[ACol,ARow];
        myEdit.Visible:=True;
      end;
    end;