2011-03-28 22 views
0

可能重复:
Can I retrieve Filename for TPicture directly?
Need help with deriving from TImage (to store the path to image's file)如何获得TImage的TPicture的文件路径?

这一个已经困扰我多年。

我有我自己的Object Inspector(嗯,实际上是TMS),它在运行时可见。当用户添加一个TImage时,他可以点击“image”旁边的省略号(...),弹出一个标准的“文件打开”对话框。但是,单击“加载”后,无法获取磁盘上映像的文件路径(我想用相同的文件名将副本复制到不同的目录中)。

有谁知道FOSS组件会让我这么做?或者知道我需要分班才能推出自己的产品?

+2

这个问题最好在SO上提问。 – 2011-03-28 07:49:10

+0

请不要在那里重新发布它,如果有足够的人在这里投票结束,它将被自动化。 – 2011-03-28 08:19:15

+0

请您指定您正在使用的组件。 – 2011-03-28 12:32:35

回答

1

您必须创建TMS对象检查器的后代,并挂钩到显示用于选择文件的对话框的位置。然后,您可以将文件名存储在后代为该信息提供的新属性中。

没有您使用的TMS组件,我无法告诉您这是否可行。

您也可以为TGraphic编写替代属性编辑器;这会影响每一个TImage,但是。 JEDI JVCL有几个自定义属性编辑器的例子(比如用于TLabel.Caption之类的多行字符串属性编辑器)。该属性编辑器将提供它自己的TOpenPictureDialog,并可以做它想要的文件名。

+0

在选择文件时挂钩到TMS对象检查器中? [声音熟悉](http://stackoverflow.com/questions/3887016/how-to-override-loading-a-timage-from-the-object-inspector-at-run-time) – 2011-03-28 14:11:59

+0

@Rob:是的,它确实如此。 :)我也注意到其中一位版主最近删除了该文件。 – 2011-03-28 16:03:48

0

使用标准的VCL TPicture后代,你不能。

TPicture后代存储图形数据本身,并不要求这张图片被存储在文件中一次。

例如,你可以有来自其他来源TPicture后裔的情况下,没有参与任何文件,例如:在运行时创建

  • 图片是从网上或设备获得
  • 图片流(例如摄像机,扫描仪,摄像头等等),
  • 图象从剪贴板

粘贴如果你一定要知道,以任何理由,费尔源e,你必须自己编写自己的TPicture后代并跟踪这些信息。如果你自己的后代与库(包括VCL)或IDE本身交互,你会发现问题,因为那些不会使用或设置你的自定义属性,或者将使用类似LoadFromStream而不是LoadFromfile。例如,在这种情况下,您没有提及该流的来源。

相关问题