Thanks for your paitience!
To show incentive is half the job

I'm not a newbie in programming itself but I'm total newbie in LCL so a couple of things can be unclear and challenging for me. 
I understand and that shouldn't be a problem.
However, and try keep that in mind if you are able, although in basics components work in a similar fashion the details will differ for each individual component.
That is why it is relatively difficult to get the hang of it because the only way to figure that out is by trying... lots of trying.
And of course I'm not an expert, programming is just a hobby for me. Sort of. 
Did we not all started out that way ?
I consider myself a newbie as well even though I have been using FPC and Lazarus for decades. Both lazarus/LCL and FPC/RTL/FCL are a moving target and get new features with each release.
As a hint (take it or leave it as you wish):
I personally treat every component that I am not familiar with as a Christmas present that requires careful unwrapping.
In that regards when start using a new component (that I are unfamiliar with) in an existing project, I never do that right away but experiment with the component first and try figure out that the functionality that my project requires is actually feasible to accomplish with that component. If the components behaves or acts in a way that makes my project more difficult to maintain or to even implement the use of that component then I seek elsewhere or in case a bit more familiar with the component try to change the default behaviour to match the requirements for my project. Worse case scenario requires to create my own component.
The unwrapping sequence allows me to get familiar with the component, get to know it in general but especially its quirks, know how it behaves for different widgetsets and platforms.
As you can imagine that takes time and for sure I have not even touched a quarter of the existing components out there. Therefor I consider that to not have knowledge on any of those other than what I am able to read in the documentation and/or wiki and/or am able to check with existing examples. Questions asked in the forums are sometimes helpful as well especially when there are hardly any examples present and/or the components are undocumented (sometimes even requires to dive into their sources in order to be able to see how it is suppose to behave).
Things get easier the longer you play around with Lazarus and its components. It is a matter of how much time do you wish to invest.
And that answer is different for each individual. Some are able to get by using some buttons, labels and panels with their basic functionality while others require reporting components, database access and 3D drawing/editing controls with detailed modified behaviour to match their project's requirements.
fwiw: There are even individuals that do not get all of this, try the shortcut option and just start copying over other people's snippets, post them on the forum reporting a prolem in the hopes someone else will solve their issues so that they do not have to (they are easy to spot though).
Back to topic.
I redwrote my example to use bitmap as an intermediate layer and it works well.
Yes, I can see. That is nice progress.
I do have a couple of hints but remember that no matter what anyone tries to tell you (unless you are ofc really in the wrong) how you implement
things can be a topic of discussion but in the end if it works (for you) then there is no right nor wrong.
Only one thing seems to me not the best and elegant way to do it.
Ok, let's try provide some pointers. Keep my previous remark in mind.
The bitmap variable in the source is positioned between the components. It is wiser to situate that into a separate section. If you do not have to access that field outside your form then it is custom to make it private (but you could just as well make it part of your other variable declaration block).
Speaking of which. All variables declared right under the form variable declaration are accessible outside your form units as well. It is custom to make these variables part of a private section in your form type declaration.
If you must place them outside your form type declaration it is custom to do that as part of the implementation section. It is rare though but I understand and on occasion use it myself as well in testing phase.
The bitmap can be resized and also be cleared. Therefor there is no actual need to create the bitmap over and over again. You can create it once at form create event and destroy (free) it once at form destruction event.
Other than that I could perhaps start nitpicking on a dozen of other things but it looks as you seem to be doing well. If it works, it works

I rather wait for your epiphany moment regarding cell status (or perhaps you might surprise us with something clever)

Keep it up I would say as you are on the right track !