Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal, desenvolvi um componente descendente do TPanel eu o chamo TPanelRedondo ele simplesmente tem extremidades arredondadas conforme o angulo que eu seleciono, bom até aí normal funciona muito bem nos forms, foi instalado perfeitamente na paleta de componentes, mas quando eu aumento o tamanho do painel com o mouse o componente não muda o tamanho no form, ele só aualiza depois que eu altero uma propriedade ArredondaPanel de True para false e vice - versa. Será q está faltando algum procedimento de leitura de valores?
Anderson valeu pela resposta.
Eu redimensiono através do mouse, mas o componente não altera o tamanho do redimensionamento, ele só redimensiona após eu alterar a propriedade ArredondarPanel.
Esse componente sou eu quem estou desenvolvendo não vejo problemas em postar meu código, até pq já fui ajudado demais por esse fórum e o código não tem nada de mais também.
Segue o código:
unit PanelRedondo;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, Graphics, Windows, Messages;
type
TPanelRedondo = class(TPanel)
private
FArredondar : Boolean;
FW : integer;
FH : integer;
constructor Create(Aowner: TComponent); override;
procedure SetArredondarPanel(value: Boolean);
procedure SetAngulo1(value: integer);
procedure SetAngulo2(value: integer);
protected
{ Protected declarations }
public
{ Public declarations }
published
property Angulo1 : integer read FH write SetAngulo1;
property Angulo2: integer read FW write SetAngulo2;
property ArredondaPanel: Boolean read FArredondar write SetArredondarPanel;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TPanelRedondo]);
end;
{ TPanelRedondo }
constructor TPanelRedondo.Create(Aowner: TComponent);
begin
inherited Create(Aowner);
FArredondar := false;
FW := 40;
FH := 40;
end;
procedure TPanelRedondo.SetAngulo1(value: integer);
begin
if value > 0 then
begin
FH := value;
end;
end;
procedure TPanelRedondo.SetAngulo2(value: integer);
begin
if value > 0 then
begin
FW := value;
end;
end;
procedure TPanelRedondo.SetArredondarPanel(value: Boolean);
var
regiao : HRGN;
w, h : integer;
begin
w := FW;
h := FH;
if value = true then
begin
FArredondar := true;
regiao := CreateRoundRectRgn(0, 0, Width, Height, w, h);
SetWindowRgn(Handle, regiao, true);
end
else
begin
FArredondar := false;
regiao := CreateRoundRectRgn(0, 0, Width, Height, 0, 0);
SetWindowRgn(Handle, regiao, true);
end;
end;
end.
>
Bom dia pessoal, desenvolvi um componente descendente do TPanel eu o chamo TPanelRedondo ele simplesmente tem extremidades arredondadas conforme o angulo que eu seleciono, bom até aí normal funciona muito bem nos forms, foi instalado perfeitamente na paleta de componentes, mas quando eu aumento o tamanho do painel com o mouse o componente não muda o tamanho no form, ele só aualiza depois que eu altero uma propriedade ArredondaPanel de True para false e vice - versa. Será q está faltando algum procedimento de leitura de valores?
ele não muda o tamanho no form, como assim, voce não esta redimensionando com o mouse? ou ele não muda as bordas? O componente é free? caso sim coloca ai que tento arrumar, eu to trabalhando com componentes e to manjando bem.
Valeu!