Ver Mensaje Individual
  #2  
Antiguo 10-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jymy788
Tengo una serie de SpeedButtons asociados a un imagelist. Las imágenes son pequeñas y los botones grandes y quiero que cuando las cargue en los botones las expanda (me da igual que las pixelice) al tamaño del speedbutton. Me podéis echar un cable?
Bueno, con el componente estandard no se si lo vas a poder hacer, pero derivándolo no debe ser muy difícil.
El método Paint de TSpeedButton está protected y por lo tanto puedes hacer un override.
Crea un componente derivado, redefine el paint en la zona protected con algo como ésto:

Código Delphi [-]
  procedure Paint; override;

y debajo generas una implementación similar a ésta:

Código Delphi [-]
const
  SPACE_BORDER_BUTTON = 2;
var
  MyOther: TRect;
begin
  inherited;
  { Calculamos la nueva zona de dibujo (ampliamos con dos
    pixels para no machacar los bordes del botón}
  MyOther := Self.ClientRect;
  MyOther.Left := MyOther.Left + SPACE_BORDER_BUTTON;
  MyOther.Top := MyOther.Top + SPACE_BORDER_BUTTON;
  MyOther.Right := MyOther.Right - SPACE_BORDER_BUTTON;
  MyOther.Bottom := MyOther.Bottom - SPACE_BORDER_BUTTON;
  // Repintar rellenado el Rect
  Self.Canvas.StretchDraw(MyOther, Self.Glyph);

Espero que te sirve. Si te da algun error ya dirás...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita