有一相对变通的方法,供你参考.首先设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就会调整至该字符数
然后:
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就会调整至该字符数