各位大侠:我想请教大家一个问题,如何让一个edit的宽度随着输入字符的增多而动态变化宽度。谢谢!

解决方案 »

  1.   

    在TEdit的Onchange(好像是)响应事件里调整宽度length属性.
      

  2.   

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      edit1.MaxLength:=length(edit1.Text);
    end;
      

  3.   

    不是吧,楼上的,你的方法只是让edit1容纳更多的字符而已,并不调整edit的宽度啊。还有楼主你要动态调整宽度的话有一点比较麻烦,万一用户输入的字符串非常的长,那你的edit岂不是宽度非常的长?简单方法就是设置MaxLength为多少个字符。然后再设定宽度,其实代码比较简单,但是稍微麻烦点,先要得到输入字符的宽度,然后给Edit的宽度增加相应的宽度
      

  4.   

    //Use the default MaxLength.
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
     //Assume the charactor's length is 50
     if Length(Edit1.Text)*50 > Edit1.Width then
     begin
      Edit1.Width:=Edit1.Width+50;
     end;
    end;
    //if the length is not enough,The TEdit will auto stentch.
    //Good Luck.
      

  5.   

    楼上的,我看你的信誉分呵呵要下降了,对于楼主的问题,你可以在EDIT的OnChange里来写代码,不过不太理想,如果你输入的很长,那编辑框将变的很宽
      

  6.   

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      edit1.MaxLength:=length(edit1.Text);
    end;应该可以
      

  7.   

    edit1.Width :=length(edit1.Text)+50;对了,这样肯定可以了,测试通过。
      

  8.   

    这段代码一定可以实现procedure TForm1.Edit1Change(Sender: TObject);
    begin
        Edit1.Width := Canvas.TextWidth(Edit1.Text) + 8;
    end;引用TForm的Canvas来检测字符串宽度
      

  9.   

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      edit1.MaxLength:=length(edit1.Text);
      edit1.width:=Canvas.TextWidth(Edit1.Text) + 8;end;