Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 18-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MAXIUM.

Un empujón mas...
Código Delphi [-]
unit GroupBoxPlus;

interface

uses
  Windows, Graphics, Classes, Controls, Messages, StdCtrls;

type
  TGroupBoxPlus = class(TGroupBox)
  private
    FBorderColor : TColor;
    FBorderWidth : Integer;
    FBorderRound : Boolean;
    FBorderCurve : Integer;
    procedure SetBorderColor(const Value: TColor);
    procedure SetBorderWidth(const Value: Integer);
    procedure SetBorderCurve(const Value: Integer);
    procedure SetBorderRound(const Value: Boolean);
    //...
  protected
    procedure Paint; override;
    //...
  published
    constructor Create(AOwner: TComponent); override;
    property BorderColor: TColor  read FBorderColor write SetBorderColor default clBlack;
    property BorderWidth: Integer read FBorderWidth write SetBorderWidth default 1;
    property BorderRound: Boolean read FBorderRound write SetBorderRound default False;
    property BorderCurve: Integer read FBorderCurve write SetBorderCurve default 20;
   //...
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Ejemplo', [TGroupBoxPlus]);
end;

constructor TGroupBoxPlus.Create(AOwner: TComponent);
begin
  inherited;
  FBorderColor := clBlack;
  FBorderWidth := 1;
  FBorderRound := False;
  FBorderCurve := 20;
end;

procedure TGroupBoxPlus.SetBorderColor(const Value: TColor);
begin
  if Value <> FBorderColor then
  begin
    FBorderColor := Value;
    Invalidate;
  end;
end;

procedure TGroupBoxPlus.SetBorderWidth(const Value: Integer);
begin
  if Value <> FBorderWidth then
    if (Value > 0) and (Value < 6) then
    begin
      FBorderWidth := Value;
      Invalidate;
    end;
end;

procedure TGroupBoxPlus.SetBorderRound(const Value: Boolean);
begin
  if Value <> FBorderRound then
  begin
    FBorderRound := Value;
    Invalidate;
  end;
end;

procedure TGroupBoxPlus.SetBorderCurve(const Value: Integer);
begin
  if FBorderCurve <> Value then
    if (Value > 0) and (Value < 31) then
    begin
      FBorderCurve := Value;
      Invalidate;
    end;
end;

procedure TGroupBoxPlus.Paint;
var
  mH, H, W, X, Y: Integer;
  R: TRect;
begin
  Canvas.Pen.Color := FBorderColor;
  Canvas.Pen.Width := FBorderWidth;
  X := Canvas.Pen.Width div 2;
  Y := Canvas.Pen.Width div 2;
  W := Width;
  H := Height;
  Canvas.Font := Self.Font;
  mH := Canvas.TextHeight(Caption) div 2;
  Canvas.Brush.Style := bsClear;
  if not FBorderRound then
    Canvas.Rectangle(X, Y + mH, W-X, H-Y-2)
  else
    Canvas.RoundRect(X, Y + mH, W-X, H-Y-2, FBorderCurve, FBorderCurve);
  Canvas.Font := Self.Font;
  R := Rect(20, 0, 20 + Canvas.TextWidth(Caption), Canvas.TextHeight(Caption));
  Canvas.Brush.Color := Color;
  Canvas.Brush.Style := bsSolid;
  Canvas.FillRect(R);
  DrawText(Canvas.Handle, PChar(Caption), -1, R,
    DT_CENTER or DT_VCENTER or DT_NOPREFIX or DT_SINGLELINE);
end;

//...
end.
El código no hace todo los puntos que solicitas, está en bruto y seguramente tengas que pulirlo un poco. Pero espero que te aporte algunas ideas.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-10-2015 a las 00:26:45.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Problema en la creación de componente derivado de TEdit. Angel Fernández OOP 7 09-06-2008 19:53:26
Impedir edición en un componente derivado de TCustomComboBox MON___ OOP 2 21-11-2007 17:38:48
Construir un componente derivado de DBLookupCombo JulioGO OOP 0 11-10-2004 17:28:30
Problema con Componente derivado de TPanel y Botones Critter Varios 4 05-09-2004 11:08:55
Componente derivado de DBEdit que active un hint con un dato específico HombreSigma OOP 4 15-07-2003 11:42:07


La franja horaria es GMT +2. Ahora son las 11:59:51.


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