Entrar    Registrar

Duvida em eventos Lazarus (ou Delphi)

Programação Delphi e Pascal

Moderadores: guest2003, 51

  • Autor
    Mensagem

Duvida em eventos Lazarus (ou Delphi)

Mensagempor RobL » 10 Nov 2013 14:57

Saúde a todos.
No envento OnCreat do Form, modifico um TCheckBox. Ele executa o evento OnChage relacionado a esse TCheckBox. Isto está correto, pois houve uma modificação que disparou o evento OnChange.

Não quero que execute a rotina do evento em OnChange, no momento de OnCreat do Form.

Mudei a rotina para o evento OnClick, na esperaça de que este evento não ocorra sem que eu use o mouse.

Para minha surpresa e ignorância, o evento OnClick foi executado, no evento OnCreat do Form.
Penso que OnClick deveria ocorrer somente com a ação física sobre o mouse, ou não sei o que seja de fato OnClick ?

Agradeço, pela atenção e a aula .
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor vtrx » 10 Nov 2013 15:21

Acho que ta meio embolado.
Voce quer deixar o CheckBox selecionado no OnCreat do Form e executar a rotina como se fosse OnClick?
O evento OnClick não executa no OnCreat.
Poste o trecho relacionado ao OnClick e OnCreat.
Qual a versão do Delphi?
Voce esta usando FireMonkey?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2005
Registrado em: 20 Abr 2008 21:01

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor RobL » 10 Nov 2013 15:52

Obrigado por responder.

Ao abrir, no evento OnCreat do Form, estou carregando de um arquivo algumas configurações, dentre elas, marcar um checkbox, mas somente marcar, sem que este dispare o evento OnClick, visto que o OnChange deverá ser disparado, se estivesse sendo usado. Estou correto ?

Muito importante, não estou usando o Delphi mas sim seu clone o Lazarus versão 1.0.4 .

Me diga se estou correto: O evento OnClick só pode ser disparado pelo uso físico do mouse. Não seria disparado no OnCreat do Form.
Se isto estiver correto, então tenho um bug no Lazarus.

AH! Sim, eu não quero que ele execute a rotina OnClick no evento OnCreat do Form e isto está acontecendo.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor vtrx » 10 Nov 2013 16:00

Não dipara o evento não.
Voce deve estar usando um arquivo .ini,correto?
Pode ser algo no Lazarus.
Não aconselho Lazarus.é muito pesado.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2005
Registrado em: 20 Abr 2008 21:01

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor aluis-rcastro » 10 Nov 2013 16:15

RobL,



Tenta executar algum equivalente do ProccessMessages() dentro do OnCreate(), para ver se limpa o buffer de eventos do sistema.
Pode ser que esteja capturando algum clique anterior que você disparou durante a execução da compilação.

( pra ter certeza se realmente não é algum conflito do Debug, cria o .EXE e refaz o teste fora da ferramenta IDE )


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
aluis-rcastro
Dword
 
Mensagens: 5338
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor RobL » 10 Nov 2013 16:20

Valeu Vtrx e Andre e todos que tentaram ajudar.
Então deve ter algo bichado no Lazarus.

Quanto a ser pesado, para grandes programas pode chatear no tempo de compilação. Mas para pequenos programas, não tenho tido problema, a não ser surpresas desagradáveis de algo bugado, principalmente no Linux (Ubuntu). Bom isto em um velho Pc.
Não rodei ele no linux em um PC melhor. Quanto ao binario (ou exe no win) gerado, passo ele em dois programas do toolchain e fica bem pequeno e leve (o executável). Deve até já ter configuração no Lazarus para fazer isto, mas não procurei ainda.

Mudei para MouseDown e funcionou corretamente, ou seja, não disparou este evento dentro do OnCreat do Form. Acho que está bugado.

Valeu a confirmação de que não dispara o evento OnClick, conforme imaginava. Obrigado
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor RobL » 10 Nov 2013 16:48

Tá saindo na nova versão do Lazarus 1.2 :
There is a separate window for managing the modes. Two useful modes, "Debug" and "Release", can be created with a single click.
Até o momento uso o strip e um compressor para o exe, fica muito pequeno e leve.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor vtrx » 10 Nov 2013 19:22

Diminuir o exe,na verdade é uma 'gambiarra'.
,o Strip é feito em Delphi.
Oque é gerado é um Manifest que dezipa o seu programa para a memória,o executável é zipado quando 'diminuido'.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2005
Registrado em: 20 Abr 2008 21:01

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor RobL » 10 Nov 2013 19:37

Não é só isso não.
Há toneladas de sinalização para o debug que ficaria por lá aumentando muito o tamanho do arquivo.
Diminuir o exe,na verdade é uma 'gambiarra'.
,o Strip é feito em Delphi.


Deve estar confundindo algo, pois o Lazarus foi feito para o Linux e portado para o Win pelo mingw. Esses programas são desse toolchain, não é escrito em Delphi (freepascal).
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor vtrx » 10 Nov 2013 20:36

Acho que me expressei mal.
O strip foi feito em Delphi e depois portado pois o Delphi é anterior ao Lazarus,tem os fontes na net.
Na minha experiencia,se voce esta usando Lazarus para programar para Linux,é mais aconselhavel programar em Java pois o executavel é o mesmo.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2005
Registrado em: 20 Abr 2008 21:01

Re: Duvida em eventos Lazarus (ou Delphi)

Mensagempor RobL » 11 Nov 2013 16:40

Dei uma lida mais profunda, para ver o que foi chamado de gambiarra.
O upx.exe, o compressor, e ví que de fato tem mais problemas que pros.
Ele serviria apenas para enviar o código via net, com tamanho bem reduzido !!!!
O pior dele é que ele atrapalha o sistema operacional a decidir sobre a alocação de memória e em certos casos pode até não rodar e tem outros problemas ainda. Portanto, endossando a gambiarra, não se deve usar esse compressor.
Quanto ao usar o strip, para retirar as informações de debug, não há problema.
Espero que o novo Lazarus, no modo release, faça as operações para redução do executável deixando o tamanho de acordo com a espectativa.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Voltar para Delphi e Pascal

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante