if edt2.Text <> '' then edt2.Text := BtoC(edt2.Text);
  if edt3.Text <> '' then edt3.Text := BtoC(edt3.Text);
  if edt4.Text <> '' then edt4.Text := BtoC(edt4.Text);
  if edt5.Text <> '' then edt5.Text := BtoC(edt5.Text);
  if edt6.Text <> '' then edt6.Text := BtoC(edt6.Text);

解决方案 »

  1.   

    能,
      for i:=a1 to a5 do
        if (trim(TEdit(self.Components[i]).Text)<>'') then
          TEdit(self.Components[i]).Text:=BtoB(TEdit(self.Components[i]).Text)
    但你要知道edt2到edt6的顺序,
      

  2.   

    回3楼的,你指的顺序是指什么?tag还是?回4楼的,是自己写的一个函数,主要是前面的if edt3.Text <> '' then多了的话代码很长
      

  3.   

    不好
    procedure setValue(sender:TEdit)
    begin
        if sender.Text <> '' then sender.Text := BtoC(sender.Text);
    end;调用时
    setValue(edt1);
    setValue(edt2);
    setValue(edt3);
    setValue(edt4);
    **********************************
    实际上上面的方法仍然不好
    这样会更好
    procedure setValue(sender:TEdit);
    begin
        if sender.Text <> '' then sender.Text := BtoC(sender.Text);
    end;procedure willCallProcedure(sender:TEdit);
    begin
        //前端处理代码,灵活性会更高;
        setValue(sender);
    end;
    调用时
    willCallProcedure(edt1);
    willCallProcedure(edt2);
    willCallProcedure(edt3);
    willCallProcedure(edt4);willCallprocedure 起到分离功能代码的作用;
    这只是演示,代码并不合理,自己体会,功能和客户端的藕合性低一点;
    这样改功能代码,不会影响前端的代码
      

  4.   

    实际上连续调用四个相同的东东;仍然不好
    willCallProcedure(edt1);
    willCallProcedure(edt2);
    willCallProcedure(edt3);
    willCallProcedure(edt4);应该是前端调用一个
    看看设计模式,好好设计一下;CallProcedure()
      

  5.   

    那个顺序就是说edit在窗体上的摆放的先后顺序,其实这么说也不太准确,你吊出窗体,点右键,选择"View as Text",可以看到组件定义的先后顺序,是指那个顺序,但是不同的组件似乎有远近之分,TLable的顺序挨着,TEdit的挨着,所以你要试着找到edt2到edt6的self.Components[i]中的i就行了,其实我觉的你那么写就行,数量有不多。