How I would do it is, when the image tiles are selected, they each set the same variable, but to different values. Or you could have them just hit the image tile, and then have that end the dialog and run the code from there.
(action_tile "im" "(done_dialog 1)")
(action_tile "im1" "(done_dialog 2)")
(action_tile "im2" "(done_dialog 3)")
(action_tile "im3" "(done_dialog 4)")
(action_tile "cancel" "(done_dialog 0)")
(setq DiaResponse (start_dialog))
(unload_dialog dcl_id)
(cond
((equal DiaResponse 1)
(c:TopPlaneLeft)
)
((equal DiaResponse 2)
(c:RightPlane)
)
((equal DiaResponse 3)
(c:RightPlane)
)
((equal DiaResponse 4)
(c:RightPlane)
)
)
I have never used images in a dcl file, so this is a guess. If you do it this way, then you can remove the Okay button.
Edit: To get this to work you have to change your call to 'image' in the dcl to 'image_button', then selecting them will fire what you want. I just test it and it worked. And I fixed the calls to the functions since they are defined with the 'c:' in front which I didn't add the first time. And fixed a typo.