Jor*_*man 6 delphi tcanvas delphi-xe8
我想缩短文件名以适应TEdit,比如
Edit1.Text := MinimizeName(FileName, Edit1.Canvas, Edit1.Width);
不幸的是,这不能编译,因为TEdit Canvas直接拥有属性.其字体指标需要画布.如何访问TEdit的画布?
(MinimizeName在Vcl.FileCtrl中声明.)
你可以用TControlCanvas.您还应该考虑控件的Font.
例如:
var
  Canvas: TControlCanvas;
Canvas := TControlCanvas.Create;
try
  Canvas.Control := Edit1;
  Canvas.Font.Assign(Edit1.Font); 
  // Do something with Canvas... 
finally
  Canvas.Free;
end;
好的,我找到了。对于那些有兴趣的人:
procedure TForm1.Button1Click(Sender: TObject);  
var  
  aCanvas: TCanvas;  
begin  
  if FileOpenDialog1.Execute then begin  
    aCanvas := TCanvas.Create;  
    try  
      aCanvas.Handle := GetDC(Edit1.Handle);  
      Edit1.Text := MinimizeName(FileOpenDialog1.FileName, aCanvas, Edit1.Width - 8);  
    finally  
      ReleaseDC(Edit1.Handle, aCanvas.Handle);
      aCanvas.Free;  
    end;  
  end;  
end;
| 归档时间: | 
 | 
| 查看次数: | 1938 次 | 
| 最近记录: |