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

(Resolvido) Texto Modelo


Arrais Júnior

Pergunta

bom dia, tou com uns probleminhas...

tou com um SIMPLES editor de texto ( usando um memo, e componentes do DIALOGS ) , onde somente será preciso NEGRITO, ITÁLICO, SUBLINHADO, TAMANHO DA FONTE, CENTRALIZAR E JUSTFICAR

problema 01:

uso isso para deixar a fonte em negrito, porém, ele aplica a todas as palavras que estiverem no memo, como faço para se aplicar apenas a parte do texto selecionado?

em botões

memo1.Font.Style := [fsbold];

memo1.Font.Style := [fsitalic];

memo1.Font.Style := [fsunderline];

problema 02:

o que for mais simples.....dois botões, um pra aumentar e outro pra diminuir o tamanho da fonte, ou igual nos editores padrões, em que você escolhe o tamanho da fonte e tals......OBS, também teria que alterar apenas a parte selecionada do texto..

problema 03:

fazer os botões CENTRALIZAR e JUSTIFICAR, apenas para a parte selecionada.

Editado por Arrais Júnior
Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

pronto, agora estou utilizando um RICHEDIT no lugar de uma memo....

consegui fazer os botões de negrito, sublinhado e itálico,

usando assim

private

function TextoSelecionado: TTextAttributes;

e dois botões para

TextoSelecionado.Style := TextoSelecionado.Style + [fsBold];

TextoSelecionado.Style := TextoSelecionado.Style - [fsBold];

até aqui tudo bem, gostaria apenas de saber como ficaria para CENTRALIZAR, JUSTIFICAR, AUMENTAR e DIMINUIR a fonte, utilizando a function que defini TextoSelecionado: TTextAttributes

OBS, já procurei em vários cantos sobre CENTRALIZA e JUSTIFICAR e tamanho da fonte...

OBS 2 : o tamanho da fonte pode ser posto em dois buttons, um aumenta e outro diminui, me disseram que fica mais simples fazer dessa forma.

OBS 3 : tem como visualizar a impressão usando os componentes DIALOGS? ou somente Quickrep?

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

ok, vou testar o exemplo ai de cima no meu projeto.

pode me ajudar a por a função function TextoSelecionado: TTextAttributes;

para que somente a seleção tenha mudada a fonte... tou usando um botão que abre a

caixa de fonte do fontdialog, porém, ele aplica em todo o texto, eu gostaria de deixar

aplicando apenas na parte selecionada.

procedure TForm1.Button1Click(Sender: TObject);

begin

FontDialog1.Font:=richedit1.Font;

if FontDialog1.Execute then

richedit1.Font:=FontDialog1.Font;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

outra dúvida...

richedit1.Paragraph.Alignment:=

taLeftJustify;

richedit1.Paragraph.Alignment:=

taCenter;

richedit1.Paragraph.Alignment:=

tarightJustify;

isso tá tudo beleza, não existe uma forma igual para o tipo JUSTIFICADO ?

alguma maneira bem simples de justificar o texto selecionado apenas dando um click num botão?

Link para o comentário
Compartilhar em outros sites

  • 0

não consegui encontrar uma maneira de aplicar o fontdialog apenas na parte do texto selecionada....falta somente isso para terminar a parte de edição dos textos.

se alguém puder dizer uma forma de fazer isso...agradeceria..

antes que o amigo Jhonas venha me postar mais uma outra pesquisa feita no forum, eu aviso que já pesquisei aqui e em outros cantos, não achei!!!

obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
antes que o amigo Jhonas venha me postar mais uma outra pesquisa feita no forum, eu aviso que já pesquisei aqui e em outros cantos, não achei!!!

Arrais Júnior... quando peço para procurar no forum é porque eu sei que existe um post que tem o que voce procura, simplesmente eu não me lembro exatamente em qual está. Mas procurando para voce eu encontrei...

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGrids, ComCtrls, Db, DBTables;

type
  TForm1 = class(TForm)
    Query1: TQuery;
    DataSource1: TDataSource;
    FindDialog1: TFindDialog;
    RichEdit1: TRichEdit;
    DBGrid1: TDBGrid;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top);
  FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
  X : INTEGER;
  vBusca : string;
begin
  X := 0;
  RichEdit1.Lines.Clear;
  DataSource1.DataSet.First;
  while not DataSource1.DataSet.Eof do
  begin
     vBusca := DataSource1.DataSet.FieldByName('NOME').AsString;
     if pos(FindDialog1.FindText,vBusca) > 0 then
        RichEdit1.Lines.Append(vBusca);
     DataSource1.DataSet.Next;
  end;

  with RichEdit1 do
  begin
    WHILE X <= RichEdit1.Lines.Count DO
    BEGIN

       if SelLength <> 0 then
         StartPos := SelStart + SelLength
       else
         StartPos := 0;

       ToEnd := Length(Text) - StartPos;

       FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
       if FoundAt <> -1 then
       begin
         SetFocus;
         SelStart := FoundAt;
         SelLength := Length(FindDialog1.FindText);
         SelAttributes.Color := clRed;
         SelAttributes.Style := SelAttributes.Style + [fsBold];
       end;
       INC(X);

    END;
   end;
end;


end.



function TForm1.fnBuscarPorPalavra (RichEdit : TRichEdit; DataSource : TDataSource) : Boolean;
var
ProcurePor : LongInt;
PosInicial, PosFinal : integer;
vPosAntiga : Integer;
vBusca : String;
begin
Result := True;
try
with RichEdit do
begin
vPosAntiga := SelStart;
SelStart := 1;
SelLength := 0;
DataSource.DataSet.First;
while True do
begin
PosInicial := SelStart + SelLength;
PosFinal := Length(trim(Text)) - PosInicial;
if DataSource.DataSet.RecordCount <= 0 then Break;
if DataSource.DataSet.Eof then Break;
while not DataSource.DataSet.Eof do
begin
vBusca := DataSource.DataSet.FieldByName('DESCRI').AsString;
ProcurePor := FindText(vBusca, PosInicial, PosFinal, []);

if ProcurePor <> -1 then begin DataSource.DataSet.Next; Break; end;
begin
SetFocus;
SelStart := ProcurePor;
SelLength := Length(TRIM(vBusca));
end;
SelAttributes.Color := clRed;
SelAttributes.Style := SelAttributes.Style + [fsBold];
DataSource.DataSet.Next;
end;
end;
SelStart := vPosAntiga;
SelLength := 0;
SelAttributes.Color := clWindowText;
end;
except raise; Result := False; end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   fnBuscarPorPalavra(RichEdit1,DataSource1);
end;

end.

OBS: Esse código procura por uma palavra dentro de um determinado campo da tabela e joga dentro de um RichEdit e deixa o texo em vermelho, basta voce modificar o código para fazer o que esta querendo.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

ENTÃO...NÃO CONSEGUI....

não tem com fazer simples da maneira que eu fiz com o negrito ?

private

function TextoSelecionado: TTextAttributes;

e dois botões para

TextoSelecionado.Style := TextoSelecionado.Style + [fsBold];

TextoSelecionado.Style := TextoSelecionado.Style - [fsBold];

------

teria como usar a function TextoSelecionado : TTextAttributes; para aplicar a fontdialog? se sim....como ficaria?

Link para o comentário
Compartilhar em outros sites

  • 0
não tem com fazer simples da maneira que eu fiz com o negrito ?

Já que quer algo bem simples, ai esta um exemplo:

usando o RichEdit com um texto dentro dele, voce seleciona com o mouse uma parte do texto e clica no botão

procedure TForm1.Button1Click(Sender: TObject);
begin
   with RichEdit1 do
   begin
      SelAttributes.Color := clRed;
      SelAttributes.Style := SelAttributes.Style + [fsBold];
   end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

acho que você não entendeu jhonas,

quando falo bem simples é solicitando que seja dada uma resposta direta e conclusiva a pergunta, assim como me foram dadas varias resposta pelo moderador Douglas.

eu utilizo isso para chamar o fontdialog

procedure TForm1.SpeedButton15Click(Sender: TObject);

begin

FontDialog1.Font:=richedit1.Font;

if FontDialog1.Execute then

richedit1.Font:=FontDialog1.Font;

end;

o que eu queria saber é se existe como eu aplicar o fontdialog (aquela caixinha de formatação), apenas para o texto selecionado do richedit..

se eu poderia utilizar a funcão TextoSelecionado: TTextAttributes; para fazer isso ...ou o que eu deveria fazer???

minha necessidade é de apenas aumentar a fonte e diminuir, se tivesse como fazer um botão que deixasse o texto selecionado no tamanho 10, outro botao que deixasse no tamanho 12, outro no tamanho 14 já servia!!!

obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
quando falo bem simples é solicitando que seja dada uma resposta direta e conclusiva a pergunta, assim como me foram dadas varias resposta pelo moderador Douglas.
Nem sempre tenho tempo de responder, porque tenho que tirar o sustento da família de outros serviços ....não ganho nada com o forum, apesar disso, sempre tento tirar as duvidas dos outros, e voce pode perceber que são poucos os que se prontificam em ajudar.

Uma pergunta focando apenas um ponto é mais facil de responder do que a que voce fez anteriormente

tou com um SIMPLES editor de texto ( usando um memo, e componentes do DIALOGS ) , onde somente será preciso NEGRITO, ITÁLICO, SUBLINHADO, TAMANHO DA FONTE, CENTRALIZAR E JUSTFICAR

agora veja a diferença

minha necessidade é de apenas aumentar a fonte e diminuir, se tivesse como fazer um botão que deixasse o texto selecionado no tamanho 10, outro botao que deixasse no tamanho 12, outro no tamanho 14 já servia!!!
para esta pergunta a resposta seria:

procedure TForm1.Button1Click(Sender: TObject);

begin

if FontDialog1.Execute then

begin

with RichEdit1 do

begin

SelAttributes.Style := FontDialog1.Font.Style;

SelAttributes.Size := FontDialog1.Font.Size;

SelAttributes.Color := FontDialog1.Font.Color;

end;

end;

end;

OBS: desculpe a falta de paciencia ultimamente

abraço

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...