在单价列处在编辑状态时,下拉出如下信息:   成本价格:12.30
   经销价格:15.00
   零售价格:17.50选择后,把价格(关键是踢除前面的文字,只要数字)保存在编辑单元处。如何处理?
注:我用的是DBGRIDEH控件。

解决方案 »

  1.   

    s:='成本价格:12.30';
    s:=copy(s,pos(':')+1,MaxInt),
    ShowMessage(s);
      

  2.   

    s:='成本价格:12.30';
    s:=copy(s,pos(':',s)+1,MaxInt),
    ShowMessage(s);
      

  3.   

    madyak(无天):意思是:
        我的价格有多种,当我把它们加到gridr的drawdownlist中时,需要把文字加上去,而选择后把文字去掉,因为价格列是浮点型的。
      

  4.   

    在drawdownlist中必须有唯一标志符,以便分开字符与数字,
    保存时,只提数据部分就行了:
    假若‘:’是标志符,最终的s就是你要求得的数值了:12.30
    s:='成本价格:12.30';
    s:=copy(s,pos(':',s)+1,MaxInt),
      

  5.   

    s:='成本价格:12.30';
    s:=copy(s,pos(':')+1,MaxInt),
    f := StrToFloat(s);
      

  6.   

    一种方法是用静态字段:
    然后结合静态字段的OnSetText事件
    可参考下面,注意你的数据类型
    procedure TForm1.ADOQuery1Field1SetText(Sender: TField;
      const Text: String);
    begin
      Sender.Value:=Copy(s,pos(':',s)+1,MaxInt),end;
      

  7.   

    一种方法是用静态字段:
    然后结合静态字段的OnSetText事件
    可参考下面,注意你的数据类型
    procedure TForm1.ADOQuery1Field1SetText(Sender: TField;
      const Text: String);
    begin
      Sender.Value:=Copy(s,pos(':',s)+1,MaxInt);end;
      

  8.   

    to:无天:
       你说的方法不错,可是,用户在编辑价格列时,要求下拉出价格列表,再去选择即可。如果那样的话,S如何取得?我考虑过了,是不是只能把一个Tcombobox在dbgrideh价格列的上面?
      

  9.   

    S可通过procedure TForm1.ADOQuery1Field1SetText(Sender: TField;
      const Text: String);
    中的TEXT参数取得!你可以试试,不用"是只能把一个Tcombobox在dbgrideh价格列的上面?"
      

  10.   

    参考下面
    procedure TForm1.ADOQuery1Field1SetText(Sender: TField;
      const Text: String);
    begin
      Sender.Value:=Copy(Text,pos(':',Text)+1,MaxInt);end;