demetriusgs Postado Setembro 13, 2005 Denunciar Share Postado Setembro 13, 2005 Como escrever um texto justificado como no word?Pode ser em qualquer componente: label, memo,richedit.....obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Setembro 13, 2005 Denunciar Share Postado Setembro 13, 2005 altere a opção Alignment no object inspector....ou via codigotipos do TAlignment:taLeftJustify = esquerdataRightJustify = direitataCenter = centroMemo1.Alignment := tipo do TAlignment;seria isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Setembro 13, 2005 Denunciar Share Postado Setembro 13, 2005 O que o amigo quer se for justificar um memo ate hoje não achei nenhum componente que faça isso, pelo menos free. Tem uma funçao que testei aqui no meu sistema, justifica, mais infelizmente não como deveria justificar igualzinho a do wordfunction Justifica(mCad:string;mMAx:integer):string;varmPos,mPont,mTam,mNr,mCont:integer;mStr:string;beginmTam:=Length(mCad);if mTam>=mMax thenResult:=copy(mCad,1,mMax)elsemStr:='';mCont:=0;mPont:=1;mNr:=mMax-mTam;while mCont<mNr dobeginmPos:=pos(mStr,copy(mCad,mPont,100));if mPos=0 thenbeginmStr:=mStr+' ';mPont:=1;continue;endelsebeginmCont:=mCont+1;Insert(' ',mCad,mPos+mPont);mPont:=mPont+mPos+length(mStr);end;Result:=mCad;end;end;falouT+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 demetriusgs Postado Setembro 13, 2005 Autor Denunciar Share Postado Setembro 13, 2005 O que o amigo quer se for justificar um memo ate hoje não achei nenhum componente que faça isso, pelo menos free. Tem uma funçao que testei aqui no meu sistema, justifica, mais infelizmente não como deveria justificar igualzinho a do wordfunction Justifica(mCad:string;mMAx:integer):string;varmPos,mPont,mTam,mNr,mCont:integer;mStr:string;beginmTam:=Length(mCad);if mTam>=mMax thenResult:=copy(mCad,1,mMax)elsemStr:='';mCont:=0;mPont:=1;mNr:=mMax-mTam;while mCont<mNr dobeginmPos:=pos(mStr,copy(mCad,mPont,100));if mPos=0 thenbeginmStr:=mStr+' ';mPont:=1;continue;endelsebeginmCont:=mCont+1;Insert(' ',mCad,mPos+mPont);mPont:=mPont+mPos+length(mStr);end;Result:=mCad;end;end;falouT+ Desculpe o incomodo mas é que sou iniciante.E depois como eu faria para usar a função justifica? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 adriano_servitec Postado Setembro 14, 2005 Denunciar Share Postado Setembro 14, 2005 E depois como eu faria para usar a função justifica?Ola amigo essa funçao é horrivel porque ele deixa o texto do memo todinho justificado ai sobra espaços enormes entre as palavras, Exemplo: sou programador DelphiEntendeu, mais se quiser testar use um bitbtn e inclua esse codigoJustifica(mmemo1.LINES, memo1.font, memo1.width); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 adriano_servitec Postado Setembro 14, 2005 Denunciar Share Postado Setembro 14, 2005 Opa desculpe fiu mostrar um exemplo de espaço entre caracteres digo palavras mais não aparece, mais mesmo assim se quiser testar tenta ai amigo.Qualquer duvida tamos aifalou!T+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 demetriusgs Postado Setembro 14, 2005 Autor Denunciar Share Postado Setembro 14, 2005 Desculpe amigo mas dá uma mensagem de erro de incompatibilidade de string para tstring, criei uma variavel integer e quando o programa roda e o botao é clicado trava o programa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bastard2003 Postado Setembro 15, 2005 Denunciar Share Postado Setembro 15, 2005 Tenta essa: procedure Justify; const WM_USER = $400; EM_EXSETSEL = (WM_USER + 55); EM_SETTYPOGRAPHYOPTIONS = (WM_USER + 202); EM_GETTYPOGRAPHYOPTIONS = (WM_USER + 203); TO_ADVANCEDTYPOGRAPHY = $1; mZERO = $0; var x :tparaformat; L :LongInt; cp :charrange; begin x.cbSize := sizeof(x); if Form1.RichEdit1.SelLength = 0 then begin cp.cpMin := 0; cp.cpMax := length(Form1.RichEdit1.Text); SendMessage(Form1.RichEdit1.Handle,EM_EXSETSEL,mZERO,LPARAM(@cp)); end; L := SendMessageA(Form1.RichEdit1.Handle,EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY); if L = 1 then begin SendMessageA(Form1.RichEdit1.Handle, EM_GETTYPOGRAPHYOPTIONS, mZERO, mZERO); SendMessage(Form1.RichEdit1.Handle, EM_GETPARAFORMAT, mZERO, LPARAM(@x)); x.dwMask := PFM_ALIGNMENT; x.wAlignment := PFA_JUSTIFY; SendMessage(Form1.RichEdit1.Handle, EM_SETPARAFORMAT, mZERO, lparam(@x)); end; cp.cpMin := 0; cp.cpMax := 0; SendMessage(Form1.RichEdit1.Handle,EM_EXSETSEL,mZERO,lparam(@cp)); Form1.RichEdit1.WordWrap := true; end; ai é so chamar assim: Justify;Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Albervan Postado Fevereiro 1, 2007 Denunciar Share Postado Fevereiro 1, 2007 Bastard2003...Estou tentando usar essa função no delphi 7 mas, não esta reconhecendo os tipos TParaFormat e CharRange.Está faltando alguma biblioteca ou algo assim?Se puder responde eu agradeço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Fevereiro 1, 2007 Denunciar Share Postado Fevereiro 1, 2007 Olá,É só declarar RichEdit no uses:Abs. Progr'amador. B) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Joabe Postado Julho 20, 2007 Denunciar Share Postado Julho 20, 2007 Show de bola essa rotina.Parabéns!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
demetriusgs
Como escrever um texto justificado como no word?
Pode ser em qualquer componente: label, memo,richedit.....
obrigado.
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.