Ir para conteúdo
Fórum Script Brasil
  • 0

Texto Escrito Numa Fonte (Resolvido)


Paulo Nobre

Pergunta

Alguém poderia me ensinar como escrever um determinado texto com todas as fontes instaladas num determinado computador.

A idéia seria a seguinte:

Uma caixa de texto onde o usuário escreveria uma palavra ou um texto.

Um botão, que ao ser clicado listaria num grid, no lado esquerdo o nome de todas as fontes e do lado direito o texto correspondente escrito na fonte que aparece no lado esquerdo.

Listar as fontes talvez seja fácil usando o objeto screen, mas e a outra parte?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

s3c, tentei mas não consegui, acho que não tenho muita experiencioa com o objeto canvas.

Estou tentando duas coisas no stringGrid e não consigo:

Primeira:

As células do título, são só duas(0,0) e (0,1), gostaria que ficassem centralizadas e as outra no padrão ou seja a esquerda.

Sei centralizar usando o ondrawcell.

O problema é que ou fica tudo centralizado ou tudo à esquerda.

É possível colocar só as duas primeiras centralizadas eas outras a esquerda.

TEntei usar um if mas não deu certo

Fiz: if stringrid1.cel(i,I) com um for de 0 a 1 para as duas primeiras com o código par centralizar, mas ele centraliza tudo

segunda:

tenho apenas duas colunas

Na primeira o nome de todas as fontes do sitema. faço o numero de limhas igual ao numero de fontes usanfo screen.fonts.count.

O que não consigo é colocar na primeira coluna o nome escrito usando a fonte correspondente e na segunda coluna um texto qualquer escrito usando a fonte que está na coluna da esquerda.

Por exemplo na segunda linha primeira coluna aparece o nome ARIAL(gosataria que arial aparecesse escrito com a fonte arial) e na columa a direita de arial aparecesse um texto qualquer escrito em arial.

Isto para cada linha com cada fonte coorespondente.

DEu para entender?

Os dois problemas tem algo em comum precisam de formatação diferente para cada célula.

Isto é possível num stringgrid?

Não estpou conseguindo usar o objeto canvas como voce falou

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Paulo, realmente quando se fala em Canvas, a maioria do pessoal não gosta.

Eu também não gosto muito de mexer c/ o Canvas, mas tem horas que não tem jeito e já tive que trabalhar várias vezes com ele.

Tente assim:

// Aqui você acerta seu Grid
procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin
  StringGrid1.Cells[0,0]   := 'Fontes';
  StringGrid1.Cells[1,0]   := 'Texto Conf Fonte';
  StringGrid1.ColWidths[0] := 150;
  StringGrid1.ColWidths[1] := 150;
  StringGrid1.RowCount     := Screen.Fonts.Count+1;
  for i := 0 to Screen.Fonts.Count-1 do
    StringGrid1.Cells[0, i+1] := Screen.Fonts[i];
end;
// Aqui você acerta as fontes
// Ative o evento onDrawCell
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var iCentro:Integer;
begin
  if (ARow = 0) and (ACol in [0,1]) then
  begin
    StringGrid1.Canvas.FillRect(Rect);
    iCentro := (StringGrid1.ColWidths[0] -
                StringGrid1.Canvas.TextWidth(StringGrid1.Cells[ACol,ARow])) div 2;
    StringGrid1.Canvas.TextOut(Rect.Left+iCentro, 3, StringGrid1.Cells[ACol,ARow]);
  end
  else
  if ACol = 1 then
  begin
    StringGrid1.Canvas.Font.Name := Screen.Fonts[ARow-1];
    StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+3, 'Texto Qualquer');
  end;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Esquecí de um detalhe:

A primeira coluna é escrito o nome da fonte normalmente, se quiser escrevê-lo c/ a própria fonte é só implementar no último if. Não fiz isso porque tem fontes que não são legíveis e aí você não conseguirá decifrar seu nome.

Link para o comentário
Compartilhar em outros sites

  • 0

Deu tudo certo s3c.

Acho que agora aprendi um pouco sobre canvas.

Inclusive por analogia, aproveitei e testei o alinhamento vertical, muito fácil de deduzir a partir do seu código de alinhamento horizontal.

Em relação a primeira coluna realmente é melhor não apresentar os nomes com as letras na fonte por conta do que você falou.

Muito Obrigado.

Abs

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...