在点击事件上更改TImage图片时出错

时间:2017-03-10 00:42:54

标签: delphi delphi-2010 timage

我有以下基本代码:

procedure TForm4.shrek1Click(Sender: TObject);
begin
  shrek1.Picture.LoadFromFile('donkey.jpeg');
end;

其中shrek1TImage,而donkey.jpeg是我想要点击时加载shrek1的图片。

donkey.jpeg位于字面上每个其他相关项目文件的同一目录中,但当我尝试运行代码时出现错误:

  

异常类EFOpenError,带有消息'无法打开文件" \(已删除隐私目录)\ donkey.jpeg"。系统找不到指定的文件

我做错了什么?

1 个答案:

答案 0 :(得分:3)

始终使用绝对路径。相对路径是相对于调用进程的当前工作目录,它可以(并且通常确实)在进程的生命周期内改变值,并且不总是您期望的。

如果JPG文件与EXE位于同一文件夹中,则可以改为:

var
  AppPath: string;

procedure TForm4.shrek1Click(Sender: TObject);
var
  FileName: string;
begin
  FileName := AppPath+'donkey.jpeg'; // <-- make sure this path is accurate!
  shrek1.Picture.LoadFromFile(FileName);
end;

initialization
  AppPath := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));