有一相对变通的方法,供你参考.首先设Form及memo的字体都为宋体(因为宋体的字符为等宽的),且字号相等
然后:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
a:integer;
u:uint;
begin
i:=StrToInt(edit1.Text);
u:=uint('A');
if not GetCharWidth32(canvas.Handle,u,u,a) then
ShowMessage('error');
Memo1.Width:=a*(i+1);
end;
这样,在edit1中设memo的字符数后,按button1,memo就会调整至该字符数