GARANTIR DESCONTO

Fórum Editar Memo #271910

11/03/2005

0

olá Pessoal
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

Diogoalles

Responder

Posts

11/03/2005

Rômulo Barros

[u:6425fc6f89][color=red:6425fc6f89][b:6425fc6f89]O Código abaixo foi testado e aprovado:[/b:6425fc6f89][/color:6425fc6f89][/u:6425fc6f89]

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.



Responder

Gostei + 0

11/03/2005

Diogoalles

olá Undeclared,
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


Responder

Gostei + 0

11/03/2005

Rômulo Barros

Se [b:95abc8a579]Lines.IndexOf(Edit1.Text) <> -1[/b:95abc8a579] isso indica que o texto que está no [b:95abc8a579]EDIT[/b:95abc8a579] não foi encontrado em nenhum linha do seu [b:95abc8a579]MEMO[/b:95abc8a579]. Caso contrário, [b:95abc8a579]Lines.IndexOf[/b:95abc8a579] retorna o Índice da linha que possui o texto que está no [b:95abc8a579]EDIT[/b:95abc8a579]


Responder

Gostei + 0

11/03/2005

Diogoalles

Blz..
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


Responder

Gostei + 0

11/03/2005

Rômulo Barros

[quote´flaviosan´=]Inacreditavelmente da forma que estava ñ funciona


EU TESTEI ASSIM:
Abri a propriedade Lines do Memo e copiei uma determinada linha, do memo, para a propriedade Text do edit.


Responder

Gostei + 0

11/03/2005

Diogoalles

Undeclared,
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


Responder

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;



Responder

Gostei + 0

11/03/2005

Diogoalles

Olá
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.


Responder

Gostei + 0

11/03/2005

Diogoalles

Blz galera
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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar