PDA

Ver la Versión Completa : cambiar el color de un toolbutton


PaulaGV
30-04-2012, 05:28:16
hola!!buenas noches, estoy realizando un procesador de texto, así que utilice una toolbar y uno de sus toolbutton tiene asociado un colordialog, lo que quiero hacer, si es que es posible, es que cada vez que se seleccione un color, el toolbutton asociado quede de ese color. Estuve investigando y vi muchas sugerencias acerca de utilizar un evento llamado CustomDrawButton pero me cambia el color de todos los botones.
Espero que puedan ayudarme, y desde ya, muchas gracias!:)

ecfisa
30-04-2012, 06:06:56
Hola Paula.

Podés hacer:

...
implementation

var
GlobalColor: TColor = clBtnFace; // color con que desees que se inicie

procedure TForm1.ToolBar1CustomDrawButton(Sender: TToolBar;
Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Button.Name = 'ToolButtonColor' then
with Sender.Canvas do
begin
Pen.Style:= psClear;
Brush.Color:= GlobalColor;
Rectangle(Button.BoundsRect);
end;
end;

procedure TForm1.ToolButtonColorClick(Sender: TObject);
begin
if ColorDialog1.Execute then
begin
GlobalColor:= ColorDialog1.Color;
TToolButton(Sender).Parent.Invalidate;
end;
end;


Saludos.

PaulaGV
30-04-2012, 06:58:10
muchas gracias por tu respuesta!!a modo de prueba le agregue al toolbutton una imagen alusiva a la función que cumple (formato BMP-16x16) y ademas implemente el código de tu respuesta, y quedo muy bien!!(segun mi criterio:)) ya que la imagen no se modifica, pero cada vez que cambio de color, los bordes de la imagen quedan de ese color :D

ecfisa
30-04-2012, 18:34:16
Hola Paula.

Eso depende del fondo de la imágen BMP.

Te adjunto un ejemplo con dos ToolButtons, el primero se pinta sin presentar defectos; en cambio el segundo deja un borde desprolijo alrededor de la imágen. Ambas imágenes son de 16x16.

Saludos.:)

PaulaGV
30-04-2012, 20:23:24
muchisimas gracias por tu tiempo y las respuestas obvio!!!:D