Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

informaticaac

Usar um edit para apagar as linhas de um memo

Recommended Posts

Olá pessoal, por favor, me ajudem.

 

Eu preciso saber como eu faço para apagar as linhas de um memo utilizando um edit.

 

Tipo, no edit eu vou digitar quantas linhas quero apagar, tipo 50 linhas e ao clicar no botão ele apaga as 50 primeiras linhas.

 

 

Também preciso seber como faço para digitar uma quantidade e passar esta quantidade para um segundo memo.

 

Exemplo, Tenho o memo1 com 100 linhas, digito no edit o numero 30 e clico no botão e desta forma as 30 primerias linhas passam para o memo2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos supor que você tenha os seguintes controles num Form:

 

  • mOriginal - Memo que conterá o texto.
  • mNewLines - Memo que receberá as linhas copiadas do mOriginal.
  • eAmount - Edit que receberá a quantidade de linhas a serem movidas/apagadas.
  • btnRemoveLines - Botão que irá apagar uma certa quantidade de linhas do mOriginal.
  • btnMoveLines - Botão que moverá linhas do mOriginal para mNewLines.

 

Então você informa a quantidade de linhas no eAmount, e clica no botão btnRemoveLines ou btnMoveLines. Então o evento OnClick deles:

 

procedure TForm1.btnRemoveLinesClick(Sender: TObject);
var
 i: Integer;
begin
 for i := 0 to StrToInt(eAmountLines.Text) -1 do
 begin
   mOriginal.Lines.Delete(i);
 end;
end;

procedure TForm1.btnMoveLinesClick(Sender: TObject);
var
 i: Integer;
begin
 for i := 0 to StrToInt(eAmountLines.Text) -1 do
 begin
   mNewText.Lines.Add(mOriginal.Lines.Strings[i]);
   // Caso queira, você pode excluir a linha
   // no mOriginal. Assim:
   // mOriginal.Lines.Delete(i);
 end;
end;

 

Perceba que eu iterei pela quantidade especificada no eAmount menos um. Por que? Porque a quantidade de linhas no memo começa pelo número 0, mas nós, ou um usuário, provavelmente especificará um valor que comece em 1 no eAmount. Portanto, para começar do 0, apenas reduzimos o valor especificado em 1.

 

Agora verificar se o texto digitado no eAmount é um número para que possa ser convertido num inteiro, fica com você! :)

 

Espero ter ajudado, e boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos supor que você tenha os seguintes controles num Form:

 

  • mOriginal - Memo que conterá o texto.
  • mNewLines - Memo que receberá as linhas copiadas do mOriginal.
  • eAmount - Edit que receberá a quantidade de linhas a serem movidas/apagadas.
  • btnRemoveLines - Botão que irá apagar uma certa quantidade de linhas do mOriginal.
  • btnMoveLines - Botão que moverá linhas do mOriginal para mNewLines.

 

Então você informa a quantidade de linhas no eAmount, e clica no botão btnRemoveLines ou btnMoveLines. Então o evento OnClick deles:

 

procedure TForm1.btnRemoveLinesClick(Sender: TObject);
var
 i: Integer;
begin
 for i := 0 to StrToInt(eAmountLines.Text) -1 do
 begin
   mOriginal.Lines.Delete(i);
 end;
end;

procedure TForm1.btnMoveLinesClick(Sender: TObject);
var
 i: Integer;
begin
 for i := 0 to StrToInt(eAmountLines.Text) -1 do
 begin
   mNewText.Lines.Add(mOriginal.Lines.Strings[i]);
   // Caso queira, você pode excluir a linha
   // no mOriginal. Assim:
   // mOriginal.Lines.Delete(i);
 end;
end;

 

Perceba que eu iterei pela quantidade especificada no eAmount menos um. Por que? Porque a quantidade de linhas no memo começa pelo número 0, mas nós, ou um usuário, provavelmente especificará um valor que comece em 1 no eAmount. Portanto, para começar do 0, apenas reduzimos o valor especificado em 1.

 

Agora verificar se o texto digitado no eAmount é um número para que possa ser convertido num inteiro, fica com você! :)

 

Espero ter ajudado, e boa sorte!

 

 

Olá, amigo, ajudou sim e muito!

 

Para finalizar agora só estou precisando saber como faço um temporizador com um timer onde eu possa programar o timer com o formato 00:00:00

 

Exemplo eu quero digitar em um Edit ou Mask por exemplo, o tempo 00:00:60 e assim quero que o timer execute a mesma ação a cada 60 segundos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso, o ideal será o maskedit, porque assim você terá sempre o formato hh:mm:ss. Ou seja, atribua lá na propriedade editmask do seu maskedit o valor: 00:00:00;1;_

Você pode também atribuir a propriedade text o valor: 00:00:00

 

Basta você converter seu valor em horas definido no maskedit para milisegundos e atribuir esse valor para a propriedade interval do seu Timer. O que será executado no timer, estará implementado no evento OnTimer do seu timer. Assim, o timer executará repetidas vezes o que estiver implementado no evento OnTimer, num intervalo definido em interval.

Para ativar ou desativar seu timer, simplesmente atribua true/false para a propriedade enabled do timer.

 

Aqui mostra um exemplo de como converter suas horas em milisegundos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.