Вам нужен прозрачный элемент управления, который наследует от TWinControl
, поскольку вы хотите, чтобы он мог получать фокус, это никогда не было легкой задачей. Однако, начиная с последних версий, Embarcadero предоставляет элемент управления, обеспечивающий это. TCustomTransparentControl
является потомком TWinControl
, который немного облегчает вам задачу.
Итак, я хотел бы создать новый компонент и унаследовать его от TCustomTransparentControl
, а затем переписать метод Paint
следующим образом:
procedure TMyTransparentButton.Paint;
var
rc: TRect;
begin
if not (csDestroying in ComponentState) then
begin
// Specify size and location of the image.
rc := Rect(0, 0, pngImage.Width, pngImage.Height);
// Draw the image on the canvas.
pngImage.Draw(Canvas, rc);
end;
end;
При таком подходе вы сможете получить прозрачность и прозрачность, которые вы ищете. Однако вам все равно нужно разобраться с ситуацией, когда кнопка отключена, нажата и т. Д.