Ajustar width da form em tempo de execução conforme caption
Bom dia colegas!! Minha dúvida: tenho uma form cujo caption muda de acordo com a vontade do fregues, dependendo de que form chamou ela. O problema é que parte do caption fica escondido porque não cabe na largur da form. O que eu queria era aumentar o width automaticmente de acordo com o tamanho do caption. Se eu multiplicar o length do captio pelo size da font não dá certo, fica muito estranho.
O que eu posso fazer?
Grato!
O que eu posso fazer?
Grato!
Vitor Rubio
Curtidas 0
Respostas
Edilcimar
19/04/2005
tente colocar a largura de uma letra, mas não esqueça que o i gasta menos espaço que o m
GOSTEI 0
Vitor Rubio
19/04/2005
Quero fazer um código que seja reaproveitável em qualquer aplicativo meu.
O tamanho da fonte do form nunca é igual ao tamanho do font do caption da form.
O tamanho da font do form pode variar, mas na barra de título continua o mesmo, então essa sugestão não dá certo. Além disso eu já testei isso.... ou ele fica muito pequeno, ou, se eu somar 1 ao tamanho da font, fica muito grande.
o tamanho da font na barra de títulos também pode variar de acordo com as configurações do windows.
Mesmo assim obrigado!
O tamanho da fonte do form nunca é igual ao tamanho do font do caption da form.
O tamanho da font do form pode variar, mas na barra de título continua o mesmo, então essa sugestão não dá certo. Além disso eu já testei isso.... ou ele fica muito pequeno, ou, se eu somar 1 ao tamanho da font, fica muito grande.
o tamanho da font na barra de títulos também pode variar de acordo com as configurações do windows.
Mesmo assim obrigado!
GOSTEI 0
Edilcimar
19/04/2005
já tentou o trect(), não sei se é aplicável ao caso presente, eu já o utilizei para impressão, mas também dá para utilizar em tela
GOSTEI 0
Vitor Rubio
19/04/2005
como eu usaria isso? vc poderia me dar um exemplo?
VLW!
VLW!
GOSTEI 0
Edilcimar
19/04/2005
o programa onde utilizei não está acessível no momento pois minha MB pifou e estou utilizando uma emprestada e para não reintalar o xp, instalei-o no meu hd de backup onde não tenho o delphi instalado, mas procure no help do delphi que existe exemplo com certeza
GOSTEI 0
Massuda
19/04/2005
O texto do título da janela tem que ficar totalmente visível? As vezes dá menos trabalho mostrar parte do texto com um ´...´ no final.
GOSTEI 0
Vitor Rubio
19/04/2005
Gostaria que ficasse totalmente visivel, porque é um tipo de diálogo temporizado que eu estou criando (igual o do avg) por isso o usuário não vai poder redimensionar a janela. Tem que aparecer todo o caption da form na barra de título.
GOSTEI 0
Massuda
19/04/2005
[quote:c0928f73e4=´vitor^_^´]...Tem que aparecer todo o caption da form na barra de título.[/quote:c0928f73e4]Para medir o tamanho de um texto, você pode usar o Canvas do form:O problema é que dessa forma você tem o tamanho do texto apenas... para poder ajustar a largura da janela, precisaria levar em conta pelo menos o tamanho dos botões Maximizar/Minimizar/Fechar e do ícone da janela/form (se houver).
O ideal é que você limite o tamanho máximo que a janela pode atingir, para não ter uma janela com as laterais saindo da tela.
var Tamanho: Integer; ... Tamanho := Canvas.TextWidth(Caption);
O ideal é que você limite o tamanho máximo que a janela pode atingir, para não ter uma janela com as laterais saindo da tela.
GOSTEI 0
Massuda
19/04/2005
Para medir o tamanho de um texto, você pode usar o Canvas do form...
Uma outra coisa... não testei isso! Talvez tenha um problema porque não tenho certeza se o fonte que usa para escrever o título é o mesmo que usa no form.GOSTEI 0
Vitor Rubio
19/04/2005
Já pensei na possibilidade da form ser maior que a tela.
com relação ao textwidth do canvas..... a fonte do canvas é a mesma que a da form, enquanto que a fonte da bara de título é configurada no windows, nas propriedades de vídeo.
com relação ao textwidth do canvas..... a fonte do canvas é a mesma que a da form, enquanto que a fonte da bara de título é configurada no windows, nas propriedades de vídeo.
GOSTEI 0
Kapak
19/04/2005
Utilize a função GetWindowTextLength.
GOSTEI 0
Kapak
19/04/2005
GetWindowTextLength não irá adiantar.
GOSTEI 0
Massuda
19/04/2005
[quote:b696b907a3=´vitor^_^´]a fonte do canvas é a mesma que a da form, enquanto que a fonte da bara de título é configurada no windows, nas propriedades de vídeo.[/quote:b696b907a3]Nada impede de você fazer o seguinte...
var Tamanho: Integer; ... Canvas.Font.Name := ...nome do fonte usado no título... Canvas.Font.Size := ...tamanho do fonte usado no título... Tamanho := Canvas.TextWidth(Caption); Canvas.Font.Name := Font.Name; Canvas.Font.Size := Font.Size;
GOSTEI 0
Vitor Rubio
19/04/2005
Tem uma coisa que me impede sim ...
como eu vou saber isso? depende da configuração da maquina onde o programa for rodar...
não sei como pegar a fonte da barra de título do windows, sou iniciante :oops:
de qualquer forma, vou tentar sus outras sugestões.
vlw
...nome do fonte usado no título...
como eu vou saber isso? depende da configuração da maquina onde o programa for rodar...
não sei como pegar a fonte da barra de título do windows, sou iniciante :oops:
de qualquer forma, vou tentar sus outras sugestões.
vlw
GOSTEI 0
Massuda
19/04/2005
[quote:8bd16b47f3=´vitor^_^´]Tem uma coisa que me impede sim ...[/quote:8bd16b47f3]Desculpe :oops: ... na hora que escrevi eu não tinha pensado em como obter essa informação.
Depois de alguma pesquisa, eis como obter os dados do fonte usado para escrever o título da janela...
Depois de alguma pesquisa, eis como obter os dados do fonte usado para escrever o título da janela...
var Metrics: TNonClientMetrics; .... Metrics.cbSize:=SizeOf(Metrics); SystemParametersInfo(SPI_GETNONCLIENTMETRICS, SizeOf(Metrics), @Metrics, 0); // Metrics.lfCaptionFont.lfHeight = altura do fonte, // Metrics.lfCaptionFont.lfFaceName = nome do fonte
GOSTEI 0
Vitor Rubio
19/04/2005
Muito obrigado pelas dicas Massuda!
Amanhã, assim que chegar no trabalho testarei.... meu projeto está lá.
o que estou fazendo é um conjuntinho de caixas de mensagm igual as messagebox(), msgdialog() ou showmessage da vida, só que com botões e ícones personalizados, e com temporizadores e gauges. Quando ficar pronto, se alguém se interessar eu posto o fonte. por enquanto está no começo... e está bem feinho.
Mas vai melhorar :)
Grato!!
Amanhã, assim que chegar no trabalho testarei.... meu projeto está lá.
o que estou fazendo é um conjuntinho de caixas de mensagm igual as messagebox(), msgdialog() ou showmessage da vida, só que com botões e ícones personalizados, e com temporizadores e gauges. Quando ficar pronto, se alguém se interessar eu posto o fonte. por enquanto está no começo... e está bem feinho.
Mas vai melhorar :)
Grato!!
GOSTEI 0