Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar de color un button (https://www.clubdelphi.com/foros/showthread.php?t=76732)

lucas05 23-11-2011 04:12:12

Cambiar de color un button
 
Hola, estoy usando Delphi 7. Tengo un menú con varios buttons y a medida que presiono la tecla Tab me voy desplazando entre ellos.
Quería saber como hacer para cuando me vaya moviendo ente los buttons estos cambien de color o agregarle algún efecto.
Es para que el usuario del sistema pueda diferenciar mejor cual es botón que va seleccionando.

Saludos y muchas gracias.

ecfisa 23-11-2011 04:48:05

Hola.

No es posible cambiar el color a un TButton por que es windows quién gestiona su color, pero te pongo unos enlaces a posibles alternativas:
Otra opción, por ejemplo, podría ser:
Código Delphi [-]
...
type
  TButton=class(StdCtrls.TButton)
    procedure CMMouseEnter(var Msg: TMessage); message CM_MouseEnter;
    procedure CMMouseLeave(var Msg: TMessage); message CM_MouseLeave;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ...
  private
  public
  end;
...
implementation

procedure TButton.CMMouseEnter(var Msg: TMessage);
begin
  SetFocus;
  Height:= Height + 3;
  Width:= Width + 3;
  Font.Style:= [fsBold];
  Font.Size:= Font.Size + 2;
end;

procedure TButton.CMMouseLeave(var Msg: TMessage);
begin
  Height:= Height - 3;
  Width:= Width - 3;
  Font.Style:= Font.Style-[fsBold];
  Font.Size:= Font.Size - 2;
end;
...
Que hará que el texto del botón incremente su tamaño y el del font, se ponga en negrita y obtenga el foco cuando el mouse pase sobre él, regresando a su estado anterior cuando salga.


Saludos.

lucas05 23-11-2011 05:59:58

Hola ecfisa, gracias por tu ayuda. Utilice el código que me recomendaste y funciona bien.
Una consulta, es posible cambiar el color del texto del botón.

Desde ya muchas gracias

ecfisa 23-11-2011 06:29:28

Hola.

No Lucas, lamentablemente entra en la misma bolsa que el color de fondo... Si intentas cambiarlo desde el Object Inspector -> Font -> Color, verás que lo ignora.

Un saludo.

roman 23-11-2011 06:39:11

De hecho, sí puede cambiarse el color de un botón, o, mejor dicho, puedes crear un componente derivado de TButton que tenga color, pero tienes que dibujarlo tú mismo. Es lo que hace Zarco Gajic en su componente TColorButton.

// Saludos

ecfisa 23-11-2011 06:51:31

Hola Román.

Estoy totalmente de acuerdo con vos (el 2° enlace de mi primer mensaje es el de Zarko). Pero usando el código que le adjunté, no va a poder...

Saludos. :)

roman 23-11-2011 08:39:41

¡Ah! Disculpa, no había caido en la cuenta de ese enlace, pero me dejé llevar por tu afirmación de que no se puede... cuando sí se puede!! :)

// Saludos

ecfisa 23-11-2011 08:56:57

No tenés por qué disculparte, seguramente no me expresé bién. Pero en realidad no quise decir que no se puede hacer un botón con color, sino que a un TButton no se le puede asignar color.
Y por supuesto que estoy totalmente de acuerdo que ya sea creando un componente derivado de él o uno nuevo es posible.

Un saludo. :)

fidel 24-11-2011 00:55:11

Poner un TPanel , luego poner un TSpeedButton dentro del Tpanel; Configurar la propiedad Autozise del TPanel a True (TPanel.Autozise := true), luego configurar la propiedad Flat del TSpeedButton a true (TSpeedButton.flat := true) y listo cuando le cambies el color al TPanel el TSpeedButton tendrá el mismo color que el TPanel. Para agregar buenos efectos al nuevo TButton puedes jugar con las Siguiente propiedades del TPanel BevelInner, BevelOuter, Bevelwidth, BorderWidth, BorderStyle; y recuerda que tienes todas las caracteristicas Visuales de un TPanel y el poder de un TSpeedButton


La franja horaria es GMT +2. Ahora son las 00:11:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi