怎么根据字符串长度来定控件Width?

jamesyue2008 2012-11-26 09:53:49
Edit2->Width = Edit2->Text.Length()*n

控件宽度 与 字符串长度好象不成比例关系。
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2012-11-26
  • 打赏
  • 举报
回复
我帮你写一个函数来搞定:
void __fastcall CrnAdjustEditWidth(TEdit *edt)
{
    TControlCanvas *cc = new TControlCanvas();

    cc->Font->Assign(edt->Font);
    cc->Control = edt;
    edt->Width = cc->TextWidth(edt->Text) + 8;

    delete cc;
}
测试一下:
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Edit1->Text = "123";
    CrnAdjustEditWidth(Edit1);
}

// ---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Edit1->Text = "12fadsfdsafdsfdsa3";
    CrnAdjustEditWidth(Edit1);
}

// ---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    Edit1->Text = "CSDN论坛";
    CrnAdjustEditWidth(Edit1);
}
jamesyue2008 2012-11-26
  • 打赏
  • 举报
回复
我想让控件随字符的长度来变化,并设定了Edit2->AutoSize = true; 但运行时并不变化。不知为什么? 谢谢!
ccrun.com 2012-11-26
  • 打赏
  • 举报
回复
没看懂你的需求,到底是想让控件随字符的长度来变化还是不变化?
jamesyue2008 2012-11-26
  • 打赏
  • 举报
回复
Edit2->AutoSize = true; 怎么控件宽度不自动随内容变化?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧