JCFRAME

SINCLAIR 26/07/2012 01:24:06
#406610
Prezados,

Resolvi utilizar o controle JCFrame, em Windows 7 e Windows 2008.

Percebi que, indavertidamente, em condições ainda não identificadas, o sistema toda fecha, ou seja, a aplicação é encerrada.

é intermitente. Algumas vezes acontece o fechamento inadvertido, outras vezes não.

Retirando o controle JCFrame, o erro não mais acontece.

Gostaria de continuar usando o controle JCFrame, porque realmente é muito bonito.

Alguém sabe a solução para o problema?
LABROSKAS 26/07/2012 06:54:52
#406612
Boas,
Eu tinha um problema identico com o XTAB, e cansei de criar código e depois ele deitar tudo abaixo sem mais nem menos, então tentei fazer uns testes, já resolvi, era bastante estupido e incompreensivel.
Cada vez k criava um XTAB dentro desse mesmo XTAB ele acabava por dar erros e deitava tudo abaixo, tipo, não podia criar o XTAB2 dentro do XTAB1, e vice versa.

Espero ter ajudado
KERPLUNK 26/07/2012 08:52:20
#406617
Uma coisa engraçada sobre programadores iniciantes:
- Quando descobrem um componente que acham bonito, querem usar no projeto, até aí, nada demais. O problema é que querem usar no projeto a versão compilada do componente, quando muitas vezes têm o código para o mesmo(que pode ser depurado), no seu caso, o código está aqui.
Ao invés de abrir o componente, compilar, registrar e adicionar a referência no seu projeto, você pode simplesmente adicionar o componente no seu projeto. O processo é bem simples:
- Baixe o arquivo do link acima
- Descompacte em uma pasta
- No seu projeto, na janela Project Explorer(aquela que aparecem os forms e módulos), clique com o botão direito no seu projeto, depois em Add e User Control
- Na janela de procura, clique na aba [Ô]Existing[Ô] e navegue até a pasta onde descompactou o arquivo que baixou.
- Nesa pasta, vai estar o componente, simplesmente o adicione e veja que o componente aparece na barra de componentes

Agora, basta usá-lo normalmente e em caso de algum erro, você pode depurar o código e ver exatamente o que está acontecendo...
SINCLAIR 26/07/2012 12:51:38
#406640
Olá, colegas...

Labroskas, muito grato por seu compartilhamento de experiência. Embora não haja um jcFrame dentro do outro, vou procurar a solução e postar aqui para os colegas.

Kerplunk, você é conhecido no fórum, tem vários posts. Particularmente acho você bastante competente. Mas é apressado. [Ô]Uma coisa engraçada sobre programadores iniciantes:[Ô]... colega, tenho 40 anos e 21 de programação, achei um fato e não consegui destrinchar, solicitei ajuda de colegas que desejassem compartilhar experiência (algo bastante indicado em todas as ciências). No mais, tudo que você descreveu dizendo o que deveria ser feito... colega, com 21 anos de programação óbvio que foi isto exatamente que fiz. Você finaliza com [Ô]Agora, basta usá-lo normalmente e em caso de algum erro, você pode depurar o código e ver exatamente o que está acontecendo... [Ô], então colega, é exatamente onde me perdi, na depuração do código, que, após análise por mais de 7 dias não consegui encontrar onde tenha erro de lógica/estrutura e imaginei que pudesse ser nas DLL do windows que são referenciadas, cujas DLL (mais uma vez óbvio) eu não tenho os fontes para analisar, somente com experiência dos colegas! No mais, de todo coração, muito grato por sua colaboração, visto que usou de seu tempo para postar. Grato, realmente, grato estou.

Continuarei esturando para saber onde está o erro e compartilharei com os colegas.

Abraços a todos e tudo de bom.

Euzébio Cruz
Criciúma - SC
KERPLUNK 26/07/2012 14:02:15
#406645
Bom, desculpe se ofendi, não foi minha intenção, mas já que tem uma grande experiência vamos aos fatos:
1 - A aplicação encerra sem nenhum motivo aparente
2 - Este controle faz uso extensivo das capacidades gráficas do windows, incluindo algumas API[ô]s do GDI32.dll(aí é que mora o dragão )
3 - O erro, pode não ser de lógica ou de estrutura, mas sim de compatibilidade.

Os métodos que a API GDI32.dll disponibiliza, são basicamente para desenhar formas primitivas. Em algumas versões do windows(isso inclui a sub-versão do build, dependendo do Service Pack e de pacotes de atualização instalados), essa API pode ter incompatibilidade de hardware, em caso de placas com aceleração 3D ou [Ô]memory leaks[Ô](o que poderia ocasionar a aplicação simplesmente ser despejada sem aviso), novamente, dependendo do caso.

O fato de aparentemente não ter uma lógica para o simples despejo da aplicação, é só aparente. Com certeza tem sim um motivo, mas pode ser bastante difícil de se identificar e dependendo do que estiver [Ô]pendurado[Ô] na memória, pode causar sobreposição de ponteiro, o que explicaria o fato de aparentemente ser randômico o despejo.

Uma alternativa para isso, seria substituir os métodos de DirectDraw do componente por gráficos 2D criados pelo DirectX, esse sim, bem mais estável e com várias proteções quanto à esses tipos de incompatibilidade que você está tendo. Se você dipôr de tempo e um pouco de paciência, poderia sobre-escrever esses métodos e fazer um controle novo, baseado no DirectX e DirectDraw.

Além disso, existem vários outros controles parecidos com esse, alguns até mais bonitos, na minha opinião, acho que valeria tentar:
XFrame
Cain Objects este na verdade, um set de componentes
DM Frame

E estes são somente alguns que encontrei no PSC.

SINCLAIR 26/07/2012 14:46:23
#406657
Olá, Kerplunk....

Mais uma vez, preciso elogiar seu conhecimento. De fato, imaginei logo que fosse a GDI, mas o erro ocorrendo com XP, 2003, Seven e 2008, penso que o trabalho de mudar para DirectDraw seria não aconselhável no momento, unicamente em função de tempo. Claro, também poderia reescer o código em linguagem mais moderna, mas considerando o tamanho do projeto, voltaria a esbarrar na questão do tempo.

Vou procurar utilizar os outros frames que você indicou. Infelizmente preciso deixar o projeto com estética mais atraente. Futuramente (futuro breve) começo a reescrever em linguagem mais moderna, que aceite recursos que o VB6 não aceita (exemplo: imagens PNG - embora eu tenha criado uma user control para poder exibí-las, deve ser considerado apenas como paliativo e momentâneo, sem postergações).

Postarei aqui os resultados para os colegas, antes de fechar o tópico.

Abaços a todos e tudo de bom!
SINCLAIR 28/07/2012 19:06:40
#406779
Amigos,

Conforme combinei, volto a postar para indicar qual a forma que usei para resolver o problema.

Usei o controle Morph Option Button, fiz algumas mudanças para funcionar como papel de parede dentro dos frames do próprio VB6 (que não dão problemas) e o Morph Option Button não usa GDI32 tão intensamente, logo, a princípio está resolvido.

Encerrarei o tópico e, caso futuramente alguém (ou mesmo eu) precise, abramos novo tópico.

Abraços a todos, especialmente ao LaBroskas e Kerplunk.
Tópico encerrado , respostas não são mais permitidas