Unfortunately, I don't think it's implemented in Lazarus. But if you don't care about staying cross-platform, you can still do it directly via CreatePalette, RealizePalette, SelectPalette and DeleteObject, while assuming, that Canvas.Handle - is actually HDC.