Fórum Editar Memo #271910
11/03/2005
0
tenho uma tela onde tenho um Edit e um Memo que possui os seguintes valores:
[color=darkred:1cceb62465]CAPITAL.VL_TOTAL,
CAPITAL.SUB_TOTAL,
ESTADO.DS_ESTADO,
CARROS.MODELO[/color:1cceb62465]
é um item por linha, com virgula no fim, sendo que o ultimo não tem a virgula no fim
no edit é digitado um dos itens do memo que quero apagar, por exemplo ´CARROS.MODELO,´ só que aí o ESTADO.DS_ESTADO por passar a ser o ultimo item não pode ter a virgula.
o valor de CARROS.MODELO eu consegui substituir através do StringReplace, o que não estou conseguindo é apagar a virgula, tb levando em consideração que eu posso apagar o CAPITAL.SUB_TOTAL que fica certo utilizando o StringReplace porque existem outros itens após ele.
tb tem um problema que após o CARROS.MODELO o usuário pode ter dado um <enter> que é interpretado com #$D$A pelo memo.
então se os caracteres finais forem o(s) <enter> ou vírgula gostaria de apaga-los.
alguém poderia me ajudar?
obrigado
Diogo
Diogoalles
Curtir tópico
+ 0Posts
11/03/2005
Rômulo Barros
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
Function Formatar(ANumeroLinha : Integer) : String;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
With(Memo1)Do
Begin
If(Lines.IndexOf(Edit1.Text) <> -1)then
Begin
Lines.Delete(Lines.IndexOf(Edit1.Text));
Lines[Lines.Count -1] := Formatar(Lines.Count -1);
End;
End;
end;
function TForm1.Formatar(ANumeroLinha: Integer): String;
Var
J : Integer;
begin
Result := ´´;
With(Memo1)do
Begin
For J := 1 To Length(Lines[ANumeroLinha]) Do
Begin
If(Copy(Lines[ANumeroLinha],J,1) <> ´,´)Then
Begin
Result := Result + Copy(Lines[ANumeroLinha],J,1);
End;
End;
End;
end;
end.Gostei + 0
11/03/2005
Diogoalles
não captei muito bem o funcionamento e ñ consigo fazer funcionar.
Quando chega aqui: If(Lines.IndexOf(Edit1.Text) <> -1)then
ele passa a diante não satisfazendo a condição.
poderia me dar uma ajudinha?
obrigado
Diogo
Gostei + 0
11/03/2005
Rômulo Barros
Gostei + 0
11/03/2005
Diogoalles
Inacreditavelmente da forma que estava ñ funciona
então fiz um teste inserindo o que está no Edit e depois localizando, ai ele localiza o que eu acabei de inserir e tb a linha que já estava no memo.
ficou assim
s := Edit.Text; with(Memo1)do begin Lines.Add(s); // coloquei essa linha pra garantir while(Lines.IndexOf(s) <> -1)do begin Lines.Delete(Lines.IndexOf(s)); Lines[Lines.Count -1] := FormatarMemo(Lines.Count -1); end; end;
abraço
Diogo
Gostei + 0
11/03/2005
Rômulo Barros
EU TESTEI ASSIM:
Abri a propriedade Lines do Memo e copiei uma determinada linha, do memo, para a propriedade Text do edit.
Gostei + 0
11/03/2005
Diogoalles
complementando ainda, como eu faço para verificar se a ultima linha do memo tem alguma informação,
pq as vezes o usuario pode dar um <enter> no memoe cria a ultima linha só que daí ela ñ tem a virgula que estaria na linha acima?
poderia ainda me dar essa ajudinha?
valeu
Diogo
Gostei + 0
11/03/2005
Rômulo Barros
With(Memo1)Do Begin ShowMessage(´A Valor da Última Linha do Memo é: ´ + Lines[Lines.Count -1]); End;
Gostei + 0
11/03/2005
Diogoalles
O que realmente está falatando agora é so seguinte,
a seguir é os dados do memo:
ATENDIMENTO.CODIGO, CLIENTES.NOME VENDAS.DATA, PERSONAL_01.FLD_04, PERSONAL_01.FLD_02
Preciso apagar as linhas em branco que estão entre CLIENTES,VENDAS e PERSONAL.
se alguem puder ajudar
obrigado
Diogo.
Gostei + 0
11/03/2005
Diogoalles
já achei num outro topico.
agora acho q resolvi quase todos os problemas/duvidas que tinha com o Memo
um grande abraço a todos
tópico:
[url]http://forum.clubedelphi.net/viewtopic.php?t=53021&postdays=0&postorder=asc&highlight=lines+count+delete&start=0[/url]
Diogo
Gostei + 0