Nigel,
Thanks. You got me started.
Here is how I am using this:
type
  TMyRecord = record
    MyWidth, MyHeight: integer;
    MyX, MyY: Integer;
    MyRotation: Double;
    MyFileName: String[255];
  end;
var
  PMyRecord: ^TMyRecord;
begin
  New(PMyRecord);
  PMyRecord^.myWidth := iImgWidth;
  PMyRecord^.myHeight := iImgHeight;
  PMyRecord^.MyX := 0;
  PMyRecord^.MyY := 0;
  PMyRecord^.MyRotation := 0;
  PMyRecord^.MyFileName := ''; //Layer 0 has not file attached to it
  ievMain.Layers[0].UserData := PMyRecord;
  ievMain.Layers[0].UserDataLen := SizeOf(PMyRecord);
end;
But now I am facing another problem.
In the file in question there can be n number of layers. Again this is not fixed as to now many layers there will be. So in this case how can I store unique User Data for each layer?
If I use the above code repeatedly for each layer then I think the information will get replaced for all layers User Data.
Finally how do I read back this data?
This code in  is not working...
procedure TfrmMain.ievMainLayerNotify(Sender: TObject; layer: Integer;
  event: TIELayerEvent);
type
  TMyRecord = record
    MyWidth, MyHeight: integer;
    MyX, MyY: Integer;
    MyRotation: Double;
    MyFileName: String[255];
  end;
var
  PMyRecord: ^TMyRecord;
begin
  New(PMyRecord);
  ievMain.Layers[layer].UserData := PMyRecord;
  ievMain.Layers[layer].UserDataLen := SizeOf(PMyRecord);
  ShowMessage(PMyRecord^.MyFileName);
end;
TIA
Yogi Yang