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

Memo


Paulo Nobre

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0

s3c, o que eu queria mesmo era digitar e sair "justificado".

Pesquisei muito pela rede e realmente não achei o código e nenhum componente do memo adaptado. É claro que se tivesse um memo adaptado teria também um código.

mesmo assim muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Paulo, acho que agora entendí. você quer que a forma do texto fique como um quadrado, alinhado dos dois lados, redistribuindo os brancos entre as palavras p/ que fiquem com as duas margens iguais.

Bom, se for isto, realmente eu não conheço nada a não ser via programação.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Paulo, bom o código eu não tenho porque nunca tive que usar isto; mas dá para fazer utilizando um TLabel de work, c/ autosize e font=font do memo, com isto você pega o width do TLabel e o deixa igual à todas as linhas do memo c/ os comandos Pos, Delete e Insert. Dá um pouco de trabalho, mas acho que dá para ser feito.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Paulo,

Desde de que você postou isso, achei interessante, e isso me levou a pesquisar sobre o assunto e consegui uma resposta, na verdade não funcionava, então, tive que fazer algumas alterações, porem, essa função tem algumas limitações, tipo:

- Usar fonte cujo os caracteres tenham o mesmo tamanho, como por exemplo a 'Courier New', 'Arial por exemplo não funciona legal';

- O tamanho do Memo (Width) deve ser compativel com o número de caracteres possiveis da linha (Length).

Exemplo:

Adicione um Memo e um button no form;

Memo: font Courier New, Tam 8, Width = 281.

declare duas variaveis no Var: nX e nCount, e use essa função (function Justifica)

var
  Form1: TForm1;
  nx, nCount : integer;

implementation

{$R *.DFM}

function Justifica(mCad:string;mMAx:integer):string;
var
  mPos,mPont,mTam,mNr,mCont:integer;
  mStr:string;
begin
  mTam:=Length(mCad);
  if mTam>=mMax then
     Result:=copy(mCad,1,mMax)
  else mStr:='';
  mCont:=0;
  mPont:=1;
  mNr:=mMax-mTam;
  nx := nx + 1;
  while mCont<mNr do begin
     mPos:=pos(mStr,copy(mCad,mPont,100));
     if mPos=0 then begin
        mStr:=mStr+' ';
        mPont:=1;
     end else begin
        mCont:=mCont+1;
        Insert(' ',mCad,mPos+mPont);
        mPont:=mPont+mPos+length(mStr);
     end;
     Result:=mCad;
     if nx = nCount then Exit;
  end;
end;
No Button coloque:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
  nx := 0;
  nCount := memo1.Lines.Count;
  for i := 0 to memo1.Lines.Count - 1 do begin
    Memo1.lines[i]:=justifica(memo1.lines[i],40);
   //Memo1.lines[i]:=justifica(texto da Linha, Nº de carac. possiveis da linha);
  end;
end;

estou usando esse texto com exemplo:

"Delphi 3 works with the last release of Delphi 2. However, be sure to back up important data, including projects you intend to share between versions 2 and 3, before attempting to install the new version."

veja o resultado:

user posted image

É isso!, espero que isso te ajude.

Abs. Progr'amador. wink.gif

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...