Hola gsilvei.
Lo que sucede es que estas dibujando un frame, pero es sólo eso: Un dibujo, no un TButton.
Creo que una de las soluciones es poner un
TButton en el form, asignar su propiedad
Visible a
False, algún código en el evento
OnClick y
luego hacer algo así:
Código Delphi
[-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
DrawRect: TRect;
begin
if Column.Field.FieldName = 'Nombre_de_tu_campo' then
begin
if (gdFocused in State) then
begin
Button1.Left:= Rect.Left + DBGrid1.Left+2;
Button1.Top:= Rect.Top + DBGrid1.Top+2;
Button1.Width:= Rect.Right-Rect.Left;
Button1.Height:= Rect.Bottom - Rect.Top;
Button1.Visible:= True;
end
else
begin
DrawRect:= Rect;
InflateRect(DrawRect,-1,-1);
DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect, 0, 1);
end;
end;
end;
Podés jugar con los valores y el código dependiendo si queres que siempre se muestre el botón u ocultándolo en evento
OnColExit del
TDBgrid, etc, etc, dependiendo esto del comportamiento que desees tenga el botón.
El código es como para acercarte alguna idea.
Saludos.