Forum > Portuguese

Conversão de meu componente do Delphi para Lazarus

(1/1)

claytonocn:
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:
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).

claytonocn:
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!!!

Navigation

[0] Message Index

Go to full version