Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2012
briast briast is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 50
Poder: 13
briast Va por buen camino
Componente shape circular con imagen

Hola. Estoy intentando hacer un componente heredado del TShape en el que se pueda mostrar una imagen en el interior, en concreto un PNG transparente.
Pongo aquí el código:
Código:
unit RoundBtn;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, Math;

type
  TRoundBtn = class(TShape)
  private
    { Private declarations }
    FImagen: TPicture;
    FColorActivo: TColor;
    FColorInactivo: TColor;

    procedure SetPicture(Value: TPicture);
  protected
    { Protected declarations }
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
    procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
  public
    { Public declarations }
    constructor Create(AOwner:TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property Picture: TPicture read FImagen write SetPicture;
    property ColorActivo:TColor read FColorActivo write FColorActivo default clRed;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('PRUEBAS', [TRoundBtn]);
end;

{ TRoundBtn }

constructor TRoundBtn.Create(AOwner: TComponent);
begin
     inherited Create(Aowner);

     FColorActivo:=clRed;
     Self.pen.Color:=clWhite;
     self.Pen.Width:=3;
     Self.pen.Style:=psSolid;
     FColorInactivo:=self.pen.Color;
     self.Shape:=stCircle;
     self.Brush.Color:=clSilver;
     self.Width:=65;
     self.Height:=65;

     // Creamos el componente de imagen
     FImagen:=TPicture.Create;
end;

destructor TRoundBtn.Destroy;
begin
  inherited;
        FImagen.free;
end;

procedure TRoundBtn.SetPicture(Value: TPicture);
begin
     FImagen.Assign(Value);
     // Pintarla sobre el objeto
     self.Canvas.StretchDraw(Self.GetClientRect,FImagen.Bitmap);
end;

procedure TRoundBtn.WMLButtonDown(var Message: TWMLButtonDown);
begin
     self.Pen.Color:=FColorActivo;
     inherited;
end;

procedure TRoundBtn.WMLButtonUp(var Message: TWMLButtonUp);
begin
     self.pen.color:=FColorInactivo;
     inherited;
end;

end.
Lo que no consigo hacer es que se vea la imagen una vez asignada a la propiedad FImagen. También supongo que al cambiar el tamaño del objeto debería repintarse. He probado con un TImage y tampoco lo consigo.
Lo que quiero es tener una especie botón redondo con una imagen dentro. Al pulsarla se cambia el borde de color (eso ya está incluido).
Gracias por la ayuda.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Texto Circular Marcb3 Varios 4 29-02-2008 21:39:26
Componente Shape con imagen y texto canelita Varios 1 13-01-2008 06:10:37
Sobreponer Imagen Circular Deiv HTML, Javascript y otros 2 28-01-2007 15:46:11
Referencia circular Enan0 Varios 3 31-10-2006 22:56:26
referencia circular melon OOP 1 16-04-2006 02:13:00


La franja horaria es GMT +2. Ahora son las 13:29:40.


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
Copyright 1996-2007 Club Delphi