Recent

Author Topic: Conversão de meu componente do Delphi para Lazarus  (Read 383 times)

claytonocn

  • Newbie
  • Posts: 3
Conversão de meu componente do Delphi para Lazarus
« on: October 11, 2024, 01:16:41 pm »
Olá!

Estou tentando migrar um sistema meu para Lazarus e para começar eu preciso portar uns componentes que fiz. Porém, estou tendo problema com um botão que fiz, chamado clButton.

Basicamente, ele é um botão herdado de TCustomControl que é desenhado do zero. Ele pode ter um caption e até 2 ícones. O fundo dele pode ser uma cor sólida ou uma imagem. Ao migrá-lo para Lazarus ele está funcionando 99%. O problema que está ocorrendo é que o ícone e o caption não aparecem em tempo execução até o momento que eu passo o mouse sobre ele. Além disso, em tempo de design não aparece de jeito nenhum. Em ambos os casos apenas o fundo está sendo desenhado. OBS: o mesmo componente, com o mesmo código funciona 100% no Delphi.

Alguém poderia me ajudar a encontrar a falha?

Para testar faça o seguinte:
1 - instale o componente
2 - Ponha um "clButton" no form
3 - Digite um caption para ele
4 - Ponha um "ImageList" e adicione imagens a ele.
5 - No "clButton", clique na propriedade "Icone", depois em "ImageList" e ligue ao ImageList que você colocou no form.
5.1 - Clique também na propriedade "IconeIndex" e defina o número referente à imagem do ImageList que deverá aparecer no clButton
5.2 - Clique tmabém na propriedade "Position" e mude para poCenter

OBS: no arquivo rar eu coloquei junto um componente clStyle que serve para mudar as cores de vários componentes clButton ao mesmo tempo. Seu uso é opcional.

Execute o programa. Você verá que apenas o fundo do botão está desenhado. Não aparece nem o ícone nem o caption. Porém, ao passar o mouse sobre o botão o ícone e o caption irão aparecer e depois disso o botão funcionará normalmente.


Aproveito pra informar que quem quiser pode usar o componente livremente e até criar versões de componentes a partir dele, apenas citando que o componente pertence a Clayton Oliveira Cavalcante Neves. Eu não coloquei nenhuma licença de distribuição nele porque não entendo disso. Quem quiser colocar uma apropriada pra mim ao me devolver o código corrigido eu agradeço.

Grato desde já.

paweld

  • Hero Member
  • *****
  • Posts: 1250
Re: Conversão de meu componente do Delphi para Lazarus
« Reply #1 on: October 12, 2024, 08:05:34 am »
Anexei o patch e também toda a unidade clButton - após as alterações, funciona bem em tempo de execução. Não verifiquei em tempo de projeto (não instalei o componente no Lazarus IDE).
Best regards / Pozdrawiam
paweld

claytonocn

  • Newbie
  • Posts: 3
Re: Conversão de meu componente do Delphi para Lazarus
« Reply #2 on: October 12, 2024, 11:14:40 pm »
Eu percebi que a solução era sempre usar Self para se referir aos métodos e propriedades da própria classe. No Delphi isso não é necessário, mas pelo que vi no Lazarus é.

Eu estou começando agora a usar o Lazarus e ainda tenho muito a aprender.

Com relação ao funcionamento, realmente, em tempo de projeto continua o problema, mas em tempo de execução está funcionando agora. Pra mim isso é o mais importante.

Agradeço demais pela ajuda!!!

 

TinyPortal © 2005-2018