开发者

Need help with deriving from TImage (to store the path to image's file)

开发者 https://www.devze.com 2023-01-16 23:36 出处:网络
I have an Object Inspector, just like Delphi\'s, which I show at run-time to allow the user to change properties of components displayed in my app.

I have an Object Inspector, just like Delphi's, which I show at run-time to allow the user to change properties of components displayed in my app.

I would like to create a component derived from TImage with one extra proper开发者_如何学JAVAty where I can store the path from which the image was loaded. To do so, I presume that I can subclass TImage, have an event to select the image by using something like ...

   var OpenPictureDialog: TPictureEditorDlg;
    if OpenPictureDialog1.Execute then
       OpenPictureDialog1.FileName  <-- contains what I want 

But, if I wrap that in a proc/fn, what's the signature and how do I get it to be called when the user clicks on the ellipsis next to the Picture property in the Object Inspector?


Or perhaps my question ought to have been whether there is an existing 3rd party component which already does this ...


50 point bounty for a free component which can be used in commercial applications (I will increase the bounty for an very good component)


If anyone can give the URL of a component that does this then I will start another bounty, 100 this time, and award it to them


That depends on how your Object Inspector works. It would help if we knew where you got it from.

The way it works in Delphi's Object Inspector is that BPL packages can register property designers with the IDE, so when it sees a certain type, such as your custom TImage, it opens that designer instead of whatever it would normally open. See if your Object Inspector supports this, or if not, if you can add the functionality.


TImage does not know the file name of the loaded picture. Because it receives only the image content, not the file name. So in order to get this information you must replace that default open picture select dialog with your own, and in it you pass the filename and the image content. Then your custom TImage can store this information.


MiTeC's ImageEx is a small, simple and free component that extends Delphi's TImage. It doesn't have a "path" property, but it has an "about" property that you could use as the path property, or as a template to add your own path property.

For something more comprehensive and not too expensive, you might try the Envision Image library by Interval Software, It is integrated with Delphi's TImage. It costs $69 US.


If i understood correctly, you want to load an image, then get the path to image's file. This should work:

procedure TForm1.Button1Click(Sender: TObject);
var Imagefilepath:String;    //Declare Imagefilepath:String;
begin
//Get name of file path
if opendialog1.Execute then Imagefilepath:=opendialog1.FileName;

//Load the picture
image1.Picture.LoadFromFile(Imagefilepath);

//show the name
showmessage(Imagefilepath);
end;

And make sure you have written in uses "JPEG" so that it loads JPEG images

Easy Peasy

0

精彩评论

暂无评论...
验证码 换一张
取 消