Caption desaparece no PageControl

Delphi

04/05/2009

Pessoal, estou com um problema que parece ser simples, mas tem dado-me dor de cabeça, tenho um tela onde tem no fundo um image que carrega uma imagem e em cima deste image tem um Pagecontrol com várias abas, pois bem quando compilo a tela os caption de cada TabSheet fica invisivel, já tentei quase tudo e não consegui resolver se alguém puder me ajudar agradeço desde já.

Utilizo Delphi 7+Firebird 2.0

abraço


Estanieski

Estanieski

Curtidas 0

Respostas

Marcosrocha

Marcosrocha

04/05/2009

1º Está utilizando arquivos ´.manifest´?
2º Seu PageControl está com a propriedade OwnerDraw = True?


GOSTEI 0
.lg.

.lg.

04/05/2009

também estou tendo o mesmo problema no D2009. Crio minha aplicação com pagecontrol e as abas estão ficando sem o caption.

MarcosRocha,
1. Aonde eu confirmo se estou ou não usando este arquivo!?
2. Sim, a propriedade ´OwnerDraw´ está True.

Att,
.lg.


GOSTEI 0
Marcosrocha

Marcosrocha

04/05/2009

Arquivos manifest ficam na mesma pasta do executável, com o mesmo nome mas com extensão .manifest
São arquivos de configurações de como a API do Windows vai tratar seus componentes visuais.

A propriedade OwnerDraw do PageControl (como o próprio nome ja diz, desenho pelo criador) significa que quem criou o PageControl é responsável por desenhar o caption de suas abas, ou seja, os captions têm de ser escritos manualmente via Canvas. Se você não estiver fazendo desenhos em Canvas no PageControl, desative a propriedade OwnerDraw setando-a para ´False´


GOSTEI 0
.lg.

.lg.

04/05/2009

Aproveitar que o assunto é sobre o PageControl...

A propriedade OwnerDraw do PageControl (como o próprio nome ja diz, desenho pelo criador) significa que quem criou o PageControl é responsável por desenhar o caption de suas abas, ou seja, os captions têm de ser escritos manualmente via Canvas.

É coerente. Mas se for assim ferro então! Porque cade a produtividade disso!? Entende!?

Outro problema:
Se eu deixo o ´[b:4456e60966]OwnerDraw[/b:4456e60966]´ False, o caption aparece, porém, meu programa aparece a PageControl toda com a cor branca sem os contorno nas bordas que o windows faz. Fica as abas tudo Quadradas.

Como eu concerto esse problema da cor e das bordas!? Retratando pelo que você falou:
significa que quem criou o PageControl é responsável por desenhar

quando eu deixo a opção para True, o PageControl fica com a cor normal do windows e com as bordas arredondadas. Porem quando eu seto para False (ou seja, eu nem preciso mecher no canvas, pois a aplicação se encarrega de ´desenhar´), o pageControl perde a cor indo pra branco e perde o contorno deixando todo o pageControl com bordas quadrado perfeito.

Como que resolve?

Att,
.lg.


GOSTEI 0
Woinch

Woinch

04/05/2009

Quais problemas o arquivo ´.manifest´ pode apresentar nesse caso como mencionado pelo colega MarcosRocha?

Obrigado.


GOSTEI 0
Marcosrocha

Marcosrocha

04/05/2009

O arquivo manifest oferece instruções de como o sistema operacional deve interagir com a aplicação. Existe um componente na paleta ´Win32´ chamado XPManifest que, se colocado no DataModule, fornece uma série de mudanças no visual do seu sistema. De início, todos os BitBtn, Button e SpeedButton irão possuir cantos arredondados assim como o WindowsXP. Os TabSheets do PageControl também tomarão o padrão do seu Windows (porém por se tratar de manifest o PageControl fica Branco que é o padrão do Windows). Os Edits ficarão mais suaves e CheckBoxes, RadioButtons ganharão um ´look´ mais elegante.
Enfim... utilizando o XPManifest (ou arquivo manifest http://imasters.uol.com.br/artigo/3294/delphi/sua_aplicacao_delphi_com_aparencia_do_windows_xp/) sua aplicação ganha uma nova cara estilo WindowsXP.

Mais uma coisa: O uso desta técnica no Delphi 6 pode acarretar em alguns bugs como o foco sumir às vezes quando se dá um tab e entrar em um CheckBox ou RadioButton. Delphi 7 Normal.


GOSTEI 0
.lg.

.lg.

04/05/2009

É interessante, porém...
Testei, e não deu certo. Usei o [b:dce6faa762]XPManifest[/b:dce6faa762] direto no form principal e num [b:dce6faa762]dataModule[/b:dce6faa762] como você disse.

Tentei utilizar o arquivo .manifest como no link que você postou. Também não deu certo.

Estou usando o D2009.
Att,
.lg.


GOSTEI 0
Woinch

Woinch

04/05/2009

Eu utilizo no form principal.
Fiz minha pergunta porque estou tendo um problema com DBNavigator que os botões ficam se ´sobreescrevendo´ ai fica tipo um botão por cima do outro. Achei que pudesse ser algum bug do XPManifest.

Tens algum conhecimento em relação a isso?


GOSTEI 0
Marcosrocha

Marcosrocha

04/05/2009

Estou usando o D2009.
No D2009 o você pode perceber que a aplicação já vem ´estilizada´ a inclusão do XPManifest ou o arquivo .manifest não vai (não deveria) afetar sua aplicação.

Achei que pudesse ser algum bug do XPManifest. Tens algum conhecimento em relação a isso?
Infelizmente desconheço bug do tipo.


GOSTEI 0
.lg.

.lg.

04/05/2009

No D2009 o você pode perceber que a aplicação já vem ´estilizada´ a inclusão do XPManifest ou o arquivo .manifest não vai (não deveria) afetar sua aplicação.

Realmente. O PageControl ja vem todo quadriculado e esbranquissado.
:lol:

Agora sem zuera...
Deve ser o PageControl que veio com meu delphi, pois quando eu adiciono no form ele n vem ´estilizada´ ele vem ´destilizada´.

:cry:
´i´m sad. I think there will be nothing else to do on this component.´


GOSTEI 0
.lg.

.lg.

04/05/2009

Ninguem mais?
My last try.


GOSTEI 0
Fgomes1983

Fgomes1983

04/05/2009

Amigo..
Sei que faz tempo mas eu estava com o mesmo problema que você.
A informação que eu encontrei nessa página resolveu meu problema...
Acho que resolve o seu tbm...

http://www.rau-tu.unicamp.br/linguagens/read.php?tid=10&qid=3341&key=

Abraços e boa sorte...


GOSTEI 0
POSTAR