Thursday, September 25, 2008

ImageListAppl classes

The idea with the ImageListAppl classes is that you load and cache a list of images once in for example a form. For each record where you want to show an image, through a display method you just lookup the image in the cached list.

However I often see code where the image list is loaded in the display method itself, putting some overhead on the display method.

Steps to use an ImageListClass
First of all, create a form window control to hold the images. These would be appropriate properties if you place this control in a grid:
ImageModeSize to fit
DataSourceYour controlling datasource
DataMethodYour method to select the right image

In the ClassDeclaration of the form declare your ImageListAppl class:
ImageListAppl_MyImageList imageListAppl;

In the init method of the form, initialize your ImageListAppl object:

imageListAppl = new ImageListAppl_MyImageList();

And still in the init method pass the list of images to your window control:


Implement your display method driving which image to show:

//BP Deviation Documented
display ImageRes myDisplayMethod(MyRecord _myRecord)
ImageRes res = -1;
if (_myRecord.someConditioin())
res = imageListAppl.image(#MyImage);
return res;

That's it...

1 comment:

Amber said...

I followed your instructions. When I try to open the form, I keep getting the error "Error executing code: FormButtonGroupControl object does not have method 'imageList'.
Stack trace


Any ideas?