Digitar entre dos campos dentro de um memo?

Delphi

23/05/2006

Bom dia amigos delphianos, venho pedir humildemente a ajuda de voçes para um problema em questão.

Bom tenho um memo que recebe um valor de um campo de um label, gostaria de saber se tem como incluir outro campo tambem:
Explicando
tenho uma tabela chamada Historico Padrão, bom la estaum todos dados sobre historico padrão.
Em outro form quero fazer os lançamentos, entaum criei um edit que pega o codigo do historico padrão por um locate e joga o campo descrição dentro de um label e depois passa do labem para um memo (Caso precise completar algo mais) tipo:

no label esta assim:
Pg. Duplicata nr:
bom ai joga para o memo para eu completar com o numero que fica assim
Pg. Duplicata nr: 0015/4 - Empresa Tal Ltda.
Bom ai tive a ideia de colocar mais um campo na tabela HPadrao para completar com o nome da empresa, assim economiza tempo e só digitaria o nr.da Duplicata.

No memo tenho este codigo

IF label1.caption = ´´ THEN //condição se naum tiver nada no label vai pro começo da linha do memo
BEGIN
memo1.Text := memo1.Text + ´´;
Keybd_Event(VK_End, 0, 0, 0);
END ELSE
memo1.Text := memo1.Text + ´ ´; //condição se tiver algo no label vai pro final do texto no memo
Keybd_Event(VK_Home, 0, 0, 0);

Bom aqui ele fica certo tipo estas condições servem para se eu tiver algo no label ele joga no memo e o cursor do memo vai para o final do texto.

Bom agora gostaria de saber se tem como colocar o resto ou seja como escrevi acima dentro do memo só vou digitar 0015/04 ai depois completar com o resto do campo que ja esta gravado na tabela hpadrao Empresa Tal Ltda.

Acho que escrevi muito talvez até voçes se cansem de ler, mais tentei explicar o melhor que pude.

Gradecido pela ajuda.


Jlimajr

Jlimajr

Curtidas 0

Respostas

Jlimajr

Jlimajr

23/05/2006

Pediram para eu fazer assim, mais naum estou usando edit e sim digito dentro do memo.

Memo.Lines.Add(label1.caption + ´ ´ + edit1.Text + ´ ´ + label2.caption + ´ ´ + Edit2.Text);


O problema é que eu naum uso um edit e sim digito direto no memo, e as vezes pode ter um aonde tenho que preencherassim Pg.Duplicata n 11144/23 Empresa Tal Ltda
e as vezes conforme o historico padrão naum preciso tipo assim, supondo que eu tenha um codigo no historico padrão assim: Pg. agua ref.mes: ai ele joga esse historico no memo.

Pg. agua ref. mes: 05/2006 e só preencho 05/2006 dentro do memo.

Vou explicar melhor
Tenho uma tabela chamada HPadrao e nela tenho 3 campos codigo, descr1,descr2, e alguns itens gravados assim
codigo descr1--------------descr2
001-Pg.agura ref:
002-Pg.Duplicata nr.-------Minha Empresa Ltda
999--------------------------------------

O codigo 999 nao contem nada (serve para eu digitar diretamente no memo)

ai dentro de um form tenho um edit aonde digito o codigo do HPadrao

se eu diditar no edit assim: 001 em um label1 vai aparecer assim: Pg.agura ref: e no onexit do edit vai jogar o que esta no label1 para o memo ai só preencho com a data tipo 05/2006

se eu digitar no edit assim: 002- em um label1 vai aparecer assim: Pg.Duplicata. nr. e no onexit do edit vai jogar o que esta no label1 para o memo ai preencho com o nr. tipo assim 009/2 ai no label2 tambem aparece o nome da empresa Minha Empresa Ltda que tambem precisa ir depois do numero da duplicata.

agora se eu digitar 999 no edit ele naum joga nada no memo ai preencho com que eu quiser tipo: Pg.parcela de seguro tal. dentro do edit.

E naum estou conseguindo fazer isso, gostaria se alguem puder me explicar como se faz.


GOSTEI 0
Jlimajr

Jlimajr

23/05/2006

Uso o seguinte script para fazer com que o primeiro label aparece dentro do form e digitar logo apos


if DM.TBHPADRAO.LOCATE(´codigoH´[]) then
BEGIN
LABEL6.CAPTION:= DM.TBHPADRAO.FIELDBYNAME(´DH1´).VALUE;
IF label6.caption = ´´ THEN //caso esteja vazio o label6
BEGIN
r1.Text := r1.Text + ´´; //r1 é o nome do memo
Keybd_Event(VK_End, 0, 0, 0);
END ELSE begin
r1.Text := r1.Text + ´ ´; //r1 é o nome do memo
Keybd_Event(VK_End, 0, 0, 0);
R1.TEXT:=label6.caption
end;
END else BEGIN
messagedlg(´H.Padrao não Localizado´,mterror,[mbOk],0);
if application.messagebox(´Digitar Novamente?´,´Aviso´,36)=idyes then begin
E4.text:=´´; //e4 é o nome de um edit
E4.setfocus;
end else
R1.SETFOCUS;
end
end;

Nesse if ele funciona assim:
se no label6 naum tiver nada ai vai direto para o memo e eud digito, caso esteja algum campo no label6 ai ele mostra dentro do memo e em seguida lanço algo.

Alguem sabe como colocar agora o segundo label depois que eu digito dentro do memo?

Gato.

J.Lima Jr.


GOSTEI 0
Jlimajr

Jlimajr

23/05/2006

Bom pessoal, consegui resolver o problema, para eu conseguir colocar o resultado de dois campos dentro de um memo fiz o seguinte codigo:

No events on exit de um edit coloquei assim
IF DM.TBHPADRAO.LOCATE(´codigoH´,(e4.text),[]) then
BEGIN
LABEL6.CAPTION:= DM.TBHPADRAO.FIELDBYNAME(´DH1´).VALUE;
LABEL11.CAPTION:= DM.TBHPADRAO.FIELDBYNAME(´DH2´).VALUE;
IF label6.caption = ´´ THEN
BEGIN
Keybd_Event(VK_Home, 0, 0, 0);
END ELSE begin
r1.Text := r1.Text + ´ ´;
Keybd_Event(VK_End, 0, 0, 0);
R1.TEXT:=label6.caption
end;
END else BEGIN
messagedlg(´H.Padrao não Localizado´,mterror,[mbOk],0);
if application.messagebox(´Digitar Novamente?´,´Aviso´,36)=idyes then begin
E4.text:=´´;
E4.setfocus;
end else
R1.SETFOCUS;
end
end;

R1 é o nome do memo
E4 é o nome do edit
Label6 e Label11 saum os labels que recebe o campo conforme o codigo editado pelo locate

Entaum neste código eu coloco somente o que tiver no label6, ai preencho com algum texto. Depois ví que o melhor era colocar o campo2 o mesmo que esta no label11 no events onkeydown do proprio memo.
E o código ficou assim:
if key = 13 then
begin
r1.lines[0]:=r1.lines[0]+´ ´+ label11.caption;
Keybd_Event(VK_end, 0, 0, 0);
end;

Assim quando apertar no enter vai jogar o conteudo do label11 depois do texto digitado.

Espero que se um dia alguem tiver alguma duvida em questão do meu problema, que meu código possa ajudar.

Grato pela colaboração de todos do forum.


GOSTEI 0
POSTAR