Ir para conteúdo
  • Cadastre-se

dev botao

Como criar um "Panel personalizado"? fazendo uma classe que herde de tPanel ?


Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 1135 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Oi Pessoal, aproveitando que tem gente aqui que manja pra caramba de Delphi, peço ajuda para esta questão. 

Fiz uma classe que herda de TWinControl, mas me da erro no destroy e la só estou dando free nos componentes criados. 🤦‍♂️

O que preciso é o seguinte:

Quero criar um panel que tem um outro panel dentro dele com um edit e um botão.

A intenção é fazer como se fosse uma coluna com um título na parte superior. Pois vou montar tipo um Clone do TRELLO. E esse é a parte da coluna.

Segue o código da minha classe:

Assim até eu crio N colunas... meio que está funcionando, mas na hora de fechar, acsses violation pra tudo quanto é canto! kkkk 

imagino que a questão seria gerenciar os N panels criados. De certo na hora de destruir ta tentando destruir o mesmo mais de uma vez... em fim. 

Qualquer ajuda é bem vinda.

unit UColKanban;

interface
uses
    System.SysUtils, Vcl.Graphics, System.Classes, Vcl.Controls, Vcl.ExtCtrls, WinApi.Messages, Vcl.StdCtrls;

Type
   TColunaKanban = class(TWinControl)
   private
    { Private declarations }
    FCol          : TPanel;
    FEdtTitulo    : TEdit;
    FTituloPanel  : TPanel;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    { Public declarations }
  published
    { Published declarations }
   end;

var
   ColunaKanban : TColunaKanban;
implementation

{ TColunaKanban }

constructor TColunaKanban.Create(AOwner: TComponent);
begin
   inherited Create(AOwner);

   FCol   := TPanel.Create(AOwner);
   FCol.Parent  := AOwner as TWinControl;
   FCol.Left    := 10000;
   FCol.Align   := alLeft;
   FCol.caption := '';
   FCol.Color   := clGreen;

   FTituloPanel := TPanel.Create(AOwner);
   FTituloPanel.Parent  := (FCol);
   FTituloPanel.Align   := alTop;
   FTituloPanel.Height  := 45;
   FTituloPanel.Visible := true;
   FTituloPanel.Color   := clRed;

   FEdtTitulo := TEdit.Create(AOwner);
   FEdtTitulo.Parent  := (FTituloPanel);
   FEdtTitulo.Width   := 290;
   FEdtTitulo.Top     := 12;
   FEdtTitulo.Left    := 8;
   FEdtTitulo.Visible := true;
end;

destructor TColunaKanban.Destroy;
begin
   FTituloPanel.Free;
   FEdtTitulo.Free;
   FCol.Free;
   inherited;
end;

end.

Assim chamo ele no fonte.

Captura de tela 2021-02-17 074152.png

Editado por Fernando Massa
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia.

comentários somente ok? Existem N ferramentas para tu fazer controle de Kaban e gratuitas dependendo do tamanho da equipe. JIRA, TRELLO, etc.

Sobre sua dúvida levanto uma coisa diferente. ao invés de componente porque não faz um TFrame e usa ele? mais fácil e rápido, além de não precisar ficar instalando na IDE do seu delphi caso precise reinstalar tudo.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

pois é Juliomar... concordo contigo sobre o uso do trello e tal. Mas a diretoria me pediu pra fazer isso.... eu só obedeço. E falei o mesmo que vc sobre o assunto mas me falaram que eles mesmo assim querem desenvolver isso no nosso sistema interno.

Sobre o TFrame vou ver como funciona. Vou pesquisar sobre isso e vejo. 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
6 minutos atrás, Fernando Massa disse:

pois é Juliomar... concordo contigo sobre o uso do trello e tal. Mas a diretoria me pediu pra fazer isso.... eu só obedeço. E falei o mesmo que vc sobre o assunto mas me falaram que eles mesmo assim querem desenvolver isso no nosso sistema interno.

Sobre o TFrame vou ver como funciona. Vou pesquisar sobre isso e vejo. 

Certo. então vai ai uma dica. tu já fez o projeto e definiu prazos pra fazer ? se sim. faça a conta básica de quanto eles estão focando você em fazer algo que já existe com alguns gratuitos e o quanto de trabalho e projetos (fiscal, governo, features, bugs) tu poderia estar trabalhando e $$$ rendendo pra empresa!!

sobre o TFrame é bem simples, tu vai criar uma especie de formulario/panel com ele e vai inserir o que vai ser padrão de uso, depois basta tu criar quantos quiser dentro do form

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

É... realmente Tframe parece mais fácil, mas não é a solução que estou procurando. Queria aproveitar para fazer esta classe, que é um tipo de coisa que não tinha feito ainda após tentos anos desenvolvendo em Delphi. Normalmente a gente faz classes para tratar dados, nada visual.

Tentei seguir a mesma lógica mas não sei por que estou empacando nesta parte.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

https://extremeprogramming.wordpress.com/2011/02/07/frames-a-classe-tframe-delphi/

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Working_with_Frames

 

Então eu iria dizer pra tu usar Interface e criar uma fabrica de TFrame com a Interface assim tu tem tudo reaproveitável

2 minutos atrás, Fernando Massa disse:

É... realmente Tframe parece mais fácil, mas não é a solução que estou procurando. Queria aproveitar para fazer esta classe, que é um tipo de coisa que não tinha feito ainda após tentos anos desenvolvendo em Delphi. Normalmente a gente faz classes para tratar dados, nada visual.

Tentei seguir a mesma lógica mas não sei por que estou empacando nesta parte.

 

  • Obrigado 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Juliomar Marchetti disse:

Certo. então vai ai uma dica. tu já fez o projeto e definiu prazos pra fazer ? se sim. faça a conta básica de quanto eles estão focando você em fazer algo que já existe com alguns gratuitos e o quanto de trabalho e projetos (fiscal, governo, features, bugs) tu poderia estar trabalhando e $$$ rendendo pra empresa!!

sobre o TFrame é bem simples, tu vai criar uma especie de formulario/panel com ele e vai inserir o que vai ser padrão de uso, depois basta tu criar quantos quiser dentro do form

kkkk, tu ta falando de empresas que planejam os desenvolvimentos que tem projetos.... QUE SONHO !!!! aqui é "Tudo nas coxa" eles não entendem o que significa PLANEJAR.

Não sabem avaliar custos nem nada. EM fim... história triste que nem vem ao caso falar sobre.

 

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Juliomar Marchetti disse:

https://extremeprogramming.wordpress.com/2011/02/07/frames-a-classe-tframe-delphi/

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Working_with_Frames

 

Então eu iria dizer pra tu usar Interface e criar uma fabrica de TFrame com a Interface assim tu tem tudo reaproveitável

 

é... vou ler os artigo e avaliar se tomo este "outro" caminho. É que eu queria fazer o meio termo entre uma classe e um componente. E pode ser esse o problema.

Pode que o melhor seria fazer realmente um novo componente, com todas as suas propriedades e tal... ou o frame que vc me falou.

Valeu mesmo pela ajuda!

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
1 hora atrás, Fernando Massa disse:

Assim até eu crio N colunas... meio que está funcionando, mas na hora de fechar, acsses violation pra tudo quanto é canto! kkkk 

imagino que a questão seria gerenciar os N panels criados. De certo na hora de destruir ta tentando destruir o mesmo mais de uma vez... em fim. 

Concordo que usar Frame é melhor, mas respondendo a pergunta, quem faz o Free é o Owner do componente que você passa no Create do mesmo.

Nesse caso sugiro passar Self para o Owner, e deixar que ele mesmo destrua os objetos, ou usar FreeAndNil.

  • Curtir 1
  • Obrigado 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

53 minutos atrás, BigWings disse:

Concordo que usar Frame é melhor, mas respondendo a pergunta, quem faz o Free é o Owner do componente que você passa no Create do mesmo.

Nesse caso sugiro passar Self para o Owner, e deixar que ele mesmo destrua os objetos, ou usar FreeAndNil.

Valeu!! vou fazer esse teste. 

abraço.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1135 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.