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

(Resolvido) Copiar texto exibido no Memo


Aleksander

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde amigos, tenho o Memo1 com altura suficiente para exibir 10 linhas, neste Memo1 tenho um texto com mais de 50 linhas, desejo copiar para o Memo2 somente a parte do texto que está sendo exibida no Memo1. Como devo fazer?
Aleksander, de uma forma simplista, usando a informação que você passou, bastaria que você copiasse as 10 linhas como você mesmo disse. A propriedade Lines é um objeto do tipo TStrings. Assim sendo, basta indexar as 10 primeiras linhas do seu memo1.

Algo assim:

var
  Idx: integer;
begin
  Memo2.Lines.Clear;  // limpa memo2
  Idx := 0;
  while (Idx < 10) and (Idx < Memo1.Lines.Count) do
  begin
    Memo2.Add(Memo1.Lines[Idx]);
    Inc(Idx);
  end;
end;

Dê uma experimentada e veja se era isso.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde amigos, tenho o Memo1 com altura suficiente para exibir 10 linhas, neste Memo1 tenho um texto com mais de 50 linhas, desejo copiar para o Memo2 somente a parte do texto que está sendo exibida no Memo1. Como devo fazer?
Aleksander, de uma forma simplista, usando a informação que você passou, bastaria que você copiasse as 10 linhas como você mesmo disse. A propriedade Lines é um objeto do tipo TStrings. Assim sendo, basta indexar as 10 primeiras linhas do seu memo1.

Algo assim:

var
  Idx: integer;
begin
  Memo2.Lines.Clear;  // limpa memo2
  Idx := 0;
  while (Idx < 10) and (Idx < Memo1.Lines.Count) do
  begin
    Memo2.Add(Memo1.Lines[Idx]);
    Inc(Idx);
  end;
end;

Dê uma experimentada e veja se era isso.

Abraços

Micheus, este seu codigo copia as 10 primeiras linhas do Memo1, mas o que prentendo é copiar o trecho que está sendo exibido, digamos que estou lendo o texto de 50 linhas e que estão sendo exibidas as linhas 15 a 25 porque o Memo1 tem a altura para exibir 10 linhas, desejo copiar só aquelas linhas que estou visualizando no

momento independente da posição do cursor.

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus, este seu codigo copia as 10 primeiras linhas do Memo1, mas o que prentendo é copiar o trecho que está sendo exibido, digamos que estou lendo o texto de 50 linhas e que estão sendo exibidas as linhas 15 a 25 porque o Memo1 tem a altura para exibir 10 linhas, desejo copiar só aquelas linhas que estou visualizando no momento independente da posição do cursor.
Aleksander, como tinha dito, era um exemplo simplista - não estava certo do que você realmente queria - agora ficou mais claro. :blush:

Façamos uso da mensagem EM_GETFIRSTVISIBLELINE. Ela retorna o índice, baseado em 0 (zero), da primeira linha visível. O exemplo ficaria assim:

var
  Idx,
  IdxFinal: integer;
begin
  Memo2.Lines.Clear;  // limpa memo2
  Idx := Memo1.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);
  IdxFinal := Idx +10;
  while (Idx < IdxFinal) and (Idx < Memo1.Lines.Count) do
  begin
    Memo2.Add(Memo1.Lines[Idx]);
    Inc(Idx);
  end;
end;

Abraços

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,4k
×
×
  • Criar Novo...