Hola Patricio
no se puede hacer directo, solo soporta bmp
lo que puedes hacer es cargar la imagen con la clase TImage y despues asignar el handle de la imagen al boton, es algo complicado y tedioso pero funciona...
si no quieres usar la clase TImage, podrias crear tu propia rutina de lectura de png usando las funciones de freeimage.dll, mira la clase TImage para que tengas una idea de como hacerlo,
al final tendras que hacer los mismo, asignarle el handle de la imagen al boton
yo empece a hacer una funcion para que podamos leer directamente los png sin necesidad de usar freeimage.dll, pero por no encontrar interes en los usuarios no continue con el desarrollo, es una lastima pq pense que podria ser de mucha utilidad dejar de usar bmp y empezar a usar png y no solo para los botones sino para darle mas utilidad en otras areas, ya en estos momentos estoy en otros proyectos y se me dificulta continuar ahora en eso, asi que de momento lo unico que te podria funcionar es la freeimage.dll
viewtopic.php?p=96659#p96659