麻烦给出代码.

解决方案 »

  1.   

    canvas.textheight
    canvas.textwidth
      

  2.   

    你指的是Edit控件吧?
    一会给你代码~
      

  3.   

    不一定是EDIT空间,其实我是做报表单元格的字体自适应.所以要根据字数和单元格大小来设置字体.你上班说的canvas是什么对象?
      

  4.   

    while(w>100) do
        begin
            size := size-1;
            canvas.Font.Size := size;
            w := canvas.TextWidth('aaaaaaaaaaaaaa');
        end;    我用上面的代码,怎么W的值一直不变啊?SIZE 都变负的了!
      

  5.   

    方法可能不是很好..暂时也就有这么一个办法..期待有更好的办法出现..
    另:
      对ClientWidth,ClientHeight的作用还不是很明确..不知道是不是不包含边线的区域..希望能有高人指点..var
      MyCanvas:TCanvas;
      StrEdit:string;
      HDCEdit:Integer;
    begin
      MyCanvas:=TCanvas.Create;
      HDCEdit:=GetDC(Edit1.Handle);
      MyCanvas.Handle:=HDCEdit;
      MyCanvas.Font:=Edit1.Font;
      StrEdit:=Edit1.Text;
      Edit1.ClientWidth:=MyCanvas.TextWidth(StrEdit);
      Edit1.ClientHeight:=MyCanvas.TextHeight(StrEdit);
      ReleaseDC(Edit1.Handle,HDCEdit);
      MyCanvas.Free;
    end;
      

  6.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    Tedit(sender).Width:=length(trim(Tedit(sender).Text ))*8;
    end;