Pergunta

Estou tendo alguns problemas com o TRichEdit.

O primeiro problema é que se eu tentar colar muito texto da área de transferência em um TRichEdit vazio, a parte inferior do texto será truncada.

O segundo problema, que acho que está relacionado ao primeiro, é que pareço estar limitado a quantos caracteres o TRichEdit pode exibir, portanto, colar da área de transferência está perdendo alguns dados.

Se eu colar em um TJvRichEdit (Jedi), isso funciona bem, obviamente porque é um componente completamente diferente.

Neste momento eu gostaria de uma solução para o TRichEdit porque estou usando muitos procedimentos/funções, etc., se eu mudar para uma classe Rich Edit diferente, terei que editar muito do meu código para funcionar.

Então basicamente o que estou perguntando é:

  • Existe um limite no TRichEdit?o que tenho certeza que existe.
  • Como posso aumentar o limite do TRichEdit para aceitar mais caracteres e linhas etc.

Forneça conselhos/soluções apenas para TRichEdit.

EDITAR

não importa, encontrei a resposta usando:

RichEdit11.MaxLength := $7FFFFFF0;
Foi útil?

Solução

Citando uma resposta dada por David Pate do grupos de notícias:

Os comentários a seguir se aplicam às versões do Delphi que usam o controle Windows Richedit versão 1.Entendo que isso inclui todas as versões do Delphi anteriores à versão 7.(Não sei qual é a situação quando você executa programas compilados nessas versões nas várias versões NT/2000 do Windows, embora o Windows XP se comporte conforme descrito.)

Q.Qual é o limite da quantidade de texto que um Richedit pode conter?A.Os arquivos de ajuda (ajuda Delphi e SDK Win32) são confusos, contraditórios e incorretos neste ponto.Existem 5 limites a serem considerados

  1. A capacidade máxima:o limite "conectado", ou seja, o tamanho máximo do buffer de texto do RichEdit.São 2 bytes a menos que 2 Gb.Observe que este é o limite teórico;na prática o limite será determinado pela memória do seu computador.

  2. A capacidade:o tamanho real do buffer atual.Por padrão, tem 64 KB, mas pode ser redimensionado de várias maneiras.

  3. O "limite do teclado":o limite além do qual os caracteres não podem ser adicionados digitando no teclado.Muitas vezes é diferente da Capacidade, mas, assim como a Capacidade, é por padrão 64 KB e pode ser redimensionado de várias maneiras.

  4. A propriedade MaxLength do objeto tRichEdit.O padrão 0 define a capacidade e o "limite do teclado" para 64 KB.

  5. O limite do número de linhas:teoricamente, isso gira em torno de 134 milhões, mas na prática, você pode esperar obter muito menos do que isso.O número máximo de linhas parece depender de vários fatores, incluindo a quantidade de memória disponível e o comprimento médio das linhas.Acho que consigo cerca de 150 mil a 200 mil linhas.Observe também que foi relatado que algumas versões do controle Richedit do Windows 95 às vezes lançam uma exceção quando mais de algumas centenas de linhas são adicionadas.Isso parece ser devido a um bug no controle e foi corrigido em versões posteriores.

Q.Como posso aumentar a quantidade de texto que um tRichEdit pode conter?

A.Quando você adiciona texto programaticamente, tanto a Capacidade quanto o "Limite do teclado" são redimensionados para acomodar o texto que está sendo adicionado.Ao adicionar texto programaticamente, quero dizer usar qualquer um dos métodos Add, Append, AddStrings ou Assign da propriedade tRichEdit.Lines ou os métodos LoadFromFile, LoadFromStream ou SetTextBuf de tRichEdit.Observe que adicionar texto dessa forma não atualiza a propriedade MaxLength.

B.Usando a propriedade MaxLength.Isso define o "Limite do teclado" para o valor passado para MaxLength.Também aumenta a capacidade para corresponder ao "limite do teclado" se a capacidade existente for menor que MaxLength.Observe que você não pode usar MaxLength para reduzir a capacidade e que alterar MaxLength não terá efeito se o valor passado for menor que o comprimento do texto atualmente no controle.Para aumentar a capacidade e o "limite do teclado" para o mesmo valor, defina tRichEdit.MaxLength para o valor desejado.Para definir o tamanho máximo no Object Inspector, use o valor 2147483645 ($7FFFFFFD).Para configurá-lo programaticamente é mais simples usar .MaxLength := System.MaxInt-2;.As mensagens EM_LIMITTEXT e EM_EXLIMITTEXT também podem ser usadas para alterar o "Limite do teclado" e a Capacidade, mas normalmente não recomendo usá-las, pois, se você fizer isso, não atualizará a propriedade MaxLength.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top