Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿Cómo redondear cantos de un TPanel? (https://www.clubdelphi.com/foros/showthread.php?t=76017)

Parsec 04-10-2011 06:21:47

¿Cómo redondear cantos de un TPanel?
 
Buenas a tod@s,

¿podría redondear los cantos de un panel u otro componente?, y también ¿hay alguna forma de utilizar un degradado en la propiedad 'Color'?.

Gracias y un saludo

ecfisa 04-10-2011 07:22:33

Hola Parsec.

Por favor para cada pregunta iniciá un nuevo hilo tal como dice el punto #8 de la Guía de estilo:
Cita:

Preguntas que no hay que hacer

He aquí algunos ejemplos de preguntas mal planteadas que seguramente nadie va a responder, por favor te pedimos que no hagas este tipo de preguntas.

1.- Tengo problemas con Delphi ¿puede alguno ayudarme?

2.- ¿Me podéis pasar el crack X?

Cómo ves la primera es insustancial, poco te van a poder ayudar, en cuanto a la segunda, no queremos que el foro se convierta en un lugar de piratas.

Tampoco debes realizar varias preguntas en un mismo hilo, para que te hagas una idea mejor te ponemos un ejemplito...

1.- ¿Cómo podría cambiar las propiedades de una carpeta y de unos archivos para convertirlos en ocultos?

2.- ¿Tiene Delphi alguna función para validar una cadena y saber si su formato es tipo hh:mm:ss?

Son dos temas totalmente distintos, debes abrir un hilo para cada una de ellas, por favor no hagas las dos preguntas en un mismo hilo.
Para rendondear controles, variante más variante menos, hay un conocido procedimiento:
Código Delphi [-]
procedure RedondearCtrl(Control: TWinControl);
var
  R: TRect;
  Rgn: HRGN;
begin
  with Control do
  begin
    R := ClientRect;
    rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20);
    SendMessage(Handle, EM_GETRECT, 0, lParam(@R));
    InflateRect(r, - 5, - 5);
    SendMessage(Handle, EM_SETRECTNP, 0, lParam(@R));
    SetWindowRgn(Handle, rgn, True);
    Invalidate;
  end;
end;

Ejemplo de llamada:
Código Delphi [-]
  RedondearCtrl(Edit1);

Con gusto trataremos tu segunda consulta en su nuevo hilo.


Un saludo.

Parsec 04-10-2011 07:52:14

Hola de nuevo,

me da un error donde declaro las funciones:
Cita:

Edit13: TEdit;
Edit14: TEdit;
procedure FormCreate(Sender: TObject);
procedure RedondearCtrl(Control: TWinControl);
Cita:

Unsatisfied forward or external declaration: 'TForm1.RedondearCtrl'
¿Puede que falte alguna librería?.

Un saludo

ecfisa 04-10-2011 08:00:39

Hola Parsec.

Cita:

Unsatisfied forward or external declaration: 'TForm1.RedondearCtrl'
¿Puede que falte alguna librería?.
El problema es que al hacer la declaración: TForm1.RedondearCtrl, estás indicando que RedondearCtrl es un método perteneciente a la clase TForm1.

Fijate que en la declaración del procedimiento del código que te puse no figura 'TForm1', es decir que es un procedimiento no un método.

Sin embargo podrías hacerlo como método de TForm1 sin problemas. Declaralo dentro de la sección public o private, por ejemplo:
Código Delphi [-]
type
  TForm1 = class(TForm)
  private
    procedure RedondearCtr(AControl: TControl);
  public
  end;
Y luego presioná simultaneamente Ctrl+Shift+C. Delphi automáticamente te crea la cabecera del procedimiento para que puedas escribir (o copiar/pegar) dentro de él:
Código Delphi [-]
{ TForm1 }
procedure TForm1.RedondearCtr(AControl: TControl);
begin

end;

Un saludo.

Parsec 04-10-2011 08:16:19

Ok, muchas gracias.

Funciona muy bien.

Saludos

ecfisa 04-10-2011 08:19:14

Hola.

Creo que también te puede resultar interesante este artículo.

Un saludo.:)


La franja horaria es GMT +2. Ahora son las 13:54:22.

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