I had a similar issue, but instead of using the TrayIcon, I am trying to populate a TImageList using:
TImageList.AddLazarusResource
Not sure why these methods are public if they aren't supposed to be used, I ended up using the following method and it worked:
TImageList.AddResourceName
Worked like a charm.
Yes, I know you can add images via the GUI to a TImageList, but since I plan on using the same set of icons in multiple windows, I didn't want to add all the icons to many different TImageLists, as that would lead to duplication within the binary file and while the program is running.