Alinhar no TRichEdit
Ola!
Tenho um programa q cria receitas medicas baseado em elementos q o usuario vai criando ela.
a receita e desse jeito:
Uso Oral
5-HIDROXITRIPTOFANO..............................36MG
5-HIDROXITRIPTOFANO..............................2MG
ALFATOCOFEROL..............................10UI
AROTIN..............................96MG
so que os MG e UI estao desalinhados.Eu gostaria de q saissem sempre alinhadas independente do tamanho da palavra (arotin,alfatocoferol...).
este é o codigo q vai no button:
Como eu faço isso?
Obrigado
procedure TForm2.btAdicionarCompClick(Sender: TObject);
Var
Subs : String;
begin
if edtMedida.Text <> '' then
Begin
Subs := DM.cdsSubs.FieldByName('SUBSTANCIA').AsString + '..............................' + edtMedida.Text + DM.cdsSubs.FieldByName('MEDIDA').ASSTRING + #13#10 ;
With mReceita do
Begin
SelStart := Linha;
Linha := Linha + Length(Subs);
SelAttributes.Style := [fsItalic];
SelAttributes.Name := 'Times New Roman';
SelAttributes.Size := 9;
SelText := DM.cdsSubs.FieldByName('SUBSTANCIA').AsString + '..............................' + edtMedida.Text + DM.cdsSubs.FieldByName('MEDIDA').ASSTRING + #13#10;
end;
edtMedida.Clear;
edtMedida.SetFocus;
btAdicionarComp.Enabled := False;
end;
end;
Eduardo Jr
Curtidas 0
Respostas
Wilson Junior
07/07/2010
Utilize a fonte Courier New e olhe este link para colocar a quantidade de "...." https://www.devmedia.com.br/post-16040-Preenche-uma-string-com-uma-quantidade-de-caracteres-podendo-alinhar-a-esqueda-ou-direita.html
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Marco Salles
07/07/2010
Paulista , tudo bem amigo.
Pois bem o Delphi ja tem duas funçoes Nativas que facilita muito este Trabalho
Sem ter que recorrer a Ifs , For , While e Count , Copy etc
Veja
Não é mais fácil ?????
function ColocarTexto(
const Texto: string;const Qtd: integer;const Ch: Char;const pDireita:boolean = True): string;
begin
case pDireita of
true:result:= Format('%*S',[Qtd,Texto]);
false:result:= Format('%-*S',[Qtd,Texto]);
end;
result:=StringReplace(result,' ',Ch,[rfReplaceAll]);
end;
[code]
Para usar
[code]
Showmessage(ColocarTexto('15',4,'X')+sLineBreak+
ColocarTexto('15',4,'X',false));
GOSTEI 0
Wilson Junior
07/07/2010
O Marco, tudo bem???
Esta rotina que passei, que tenho desde o tempo do Delphi 4, não utilizava ela faz um bom tempo, mas resolvi postar estes tempos atrás. Com CERTEZA a sua rotina é melhor e mais simples.
T+
Esta rotina que passei, que tenho desde o tempo do Delphi 4, não utilizava ela faz um bom tempo, mas resolvi postar estes tempos atrás. Com CERTEZA a sua rotina é melhor e mais simples.
T+
GOSTEI 0
Marco Salles
07/07/2010
Paulista , tudo bem amigo.
Pois bem o Delphi ja tem duas funçoes Nativas que facilita muito este Trabalho
Sem ter que recorrer a Ifs , For , While e Count , Copy etc
Veja
Não é mais fácil ?????
.
Desculpe , ia me esquecendo da função Nativa do Delphi StringOfChar , para o caso de não querer substituição
de todos os caracteres ( o que faz o StringReplace(result,' ',Ch,[rfReplaceAll]) na função Anterior
function ColocarTexto(
const Texto: string;const Qtd: integer;const Ch: Char;const pDireita:boolean = True): string;
begin
case pDireita of
true:result:= Format('%*S',[Qtd,Texto]);
false:result:= Format('%-*S',[Qtd,Texto]);
end;
result:=StringReplace(result,' ',Ch,[rfReplaceAll]);
end;
[code]
Para usar
[code]
Showmessage(ColocarTexto('15',4,'X')+sLineBreak+
ColocarTexto('15',4,'X',false));
function ColocarTexto( const Texto: string;const Qtd: integer;const Ch: Char;const pDireita:boolean = True): string; begin case pDireita of true:result:= StringOfChar(Ch,Qtd)+Texto; false:result:=Texto+StringOfChar(Ch,Qtd); end; end;
Showmessage(ColocarTexto('15',2,'X')+sLineBreak+
ColocarTexto('15',2,'X',false));
Subs := DM.cdsSubs.FieldByName('SUBSTANCIA').AsString + '..............................' + edtMedida.Text + DM.cdsSubs.FieldByName('MEDIDA').ASSTRING + #13#10 ;
GOSTEI 0
Marco Salles
07/07/2010
Eduardo .. Testado o Codigo abaixo e parece que funciona para a sua necessidade
procedure TForm2.btAdicionarCompClick(Sender: TObject);
Const
MAX = 25 // Defina o Tamanho Maximo
Var
Subs : String;
Qtd:integer;
begin
if edtMedida.Text <> '' then
Begin
Qtd := Max - (length(DM.cdsSubs.FieldByName('SUBSTANCIA').AsString ) -
length(edtMedida.Text) +
length(edtMedida.Text + DM.cdsSubs.FieldByName('MEDIDA').ASSTRING));
Subs := DM.cdsSubs.FieldByName('SUBSTANCIA').AsString +
StringOfChar('.',Qtd)+;
edtMedida.Text +
DM.cdsSubs.FieldByName('MEDIDA').ASSTRING;
With mReceita do
Begin
Lines.Add(Subs);
SelStart := 1;
SelLength:=Length(mReceita.Text);
SelAttributes.Style := [fsItalic];
SelAttributes.Name := 'Courier';
SelAttributes.Size := 9;
end;
edtMedida.Clear;
edtMedida.SetFocus;
btAdicionarComp.Enabled := False;
end;
end;
GOSTEI 0
Wilson Junior
07/07/2010
Foi o que tinha comentado no tópico anterior, coloqcar a fonte como Courier, sendo assim ele conseguirá ficar alinhado.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Marco Salles
07/07/2010
Foi o que tinha comentado no tópico anterior, coloqcar a fonte como Courier, sendo assim ele conseguirá ficar alinhado.
Espero ter colaborado.
Sim , mas somente isto parece que não resolveria . Pq o Eduaro queria que o Texto ficasse Alinhado e
não somente os Caracters .
Espero ter colaborado.
so que os MG e UI estao desalinhados.Eu gostaria de q saissem sempre alinhadas independente do tamanho da palavra (arotin,alfatocoferol...).
No inicio pude perceber que sua dica compreendia , alem da alteração da Font
mas tb colocar as Linhas do RichEdit com um Mesmo Tamanho.. Foi onde , sugeri funçoes alternativas para
prenchimeto de String chegando ate na função Nativa StringOfChar
Alem do que usar Courier New esteticamente fica melhor do que usar Courier ( MinhaOpinião )
GOSTEI 0
Carlos Mazzi
07/07/2010
Verdade, essa funcionalidade em ambos casos funciona, testei as duas... agora cabe ao nosso amigo escolhe a que fica melhor para o projeto dele.
Aqui 100%! show de bola...
GOSTEI 0
Pedro Saraiva.
07/07/2010
Programa com códigos fontes
Ola pessoal,
você programador que quer um aplicativo exemplo para fins comerciais, tenho uma
dica, compre o WinPhar que vem com todos os códigos fontes e faça um programa
baseado nele, sim ele também vêm com todos os componentes para instalar, voce
além de ganhar um programa complidao, ganha tb os seus códigos fontes e seus
componentes. O programa foi desenvolvido em Delphi 7 com banco de dados
paradox, e custa apenas 20,00 reais
deem uma olhadinha ai no produto
http://produto.mercadolivre.com.br/MLB-149256966-winphar-2008-sistema-para-farmacias-e-drogarias-_JM
e ente em contato pelo e-mail pedroluissaraiva@yahoo.com.br.!
deem uma olhadinha ai no produto
http://produto.mercadolivre.com.br/MLB-149256966-winphar-2008-sistema-para-farmacias-e-drogarias-_JM
e ente em contato pelo e-mail pedroluissaraiva@yahoo.com.br.!
GOSTEI 0