7

TEdit に収まるようにファイル名を短くしたいのですが、次のようなものです。

Edit1.Text := MinimizeName(FileName, Edit1.Canvas, Edit1.Width);

Canvas残念ながら、TEdit には直接プロパティがあるため、これはコンパイルされません。フォント メトリックにはキャンバスが必要です。TEdit のキャンバスにアクセスするにはどうすればよいですか?

( MinimizeNameVcl.FileCtrl で宣言されています。)

4

3 に答える 3

5

わかりました、見つけました。興味のある方へ:

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;


于 2015-12-06T16:17:54.423 に答える
1

キャンバスはメトリックを取得するためだけに使用されるため、TEdit メトリックがフォーム メトリックと同じであると仮定すると、MinimizeName 呼び出しでフォーム キャンバスを使用するだけで十分です。これはより単純で、メトリックが異なる理由がない限り有効です。

于 2015-12-07T19:59:21.463 に答える