Fórum Duvidas com If, end, else, begin? #333785
27/11/2006
0
procedure TForm8.Edit2Exit(Sender: TObject); begin if dm.qrylimpa.locate(´sequencia´,(Edit2.text),[]) then begin maskedit1.Text:=dm.qrylimpa.FieldByName(´MESPGTO´).AsString; maskedit2.Text:=dm.qrylimpa.FieldByName(´MESREFINI´).AsString; maskedit3.Text:=dm.qrylimpa.FieldByName(´MESREFFIM´).AsString; end else begin messagedlg(´Atenção Usuário! Numero da sequencia digitada ´ + edit2.text + ´ não Localizada´,mterror,[mbOk],0); if application.messagebox(´Digitar Novamente?´,´Aviso´,36)=idyes then begin edit2.text:=´´; edit2.setfocus; end else begin maskedit1.enabled:=true; maskedit2.enabled:=true; maskedit3.enabled:=true; MASKedit1.SETFOCUS; end; end; end;
if application.messagebox(´Digitar Novamente?´,´Aviso´,36)=idyes [/color:fb21bc3dac] e eu nao sei como fazer corretamente para mostrar a mensagem somente uma vez.
Agradeço a ajuda de todos
Adriano
Adriano_servitec
Curtir tópico
+ 0Posts
27/11/2006
Campsoft
Gostei + 0
27/11/2006
Campsoft
dai bastaria vc checar antes do erro se esta variavel esta em true... se estiver, exibe... se nao..
Gostei + 0
27/11/2006
Adriano_servitec
Olah amigo, primeiramente obrigado por responder minha duvida, mais como devo fazer para que nao repita a mensagem duas vezes?
Tipo eu fiz assim, criei uma variavel booleana global aki
var
Form8: TForm8;
Dt1, Dt2 : TDate;
[b:d9b952665f]Confirma : Boolean;[/b:d9b952665f]
ai no codigo para confirmar como devo fazer?
fiz assim, mais sem resultado
procedure TForm8.Edit2Exit(Sender: TObject);
begin
if dm.qrylimpa.locate(´sequencia´,(Edit2.text),[]) then begin
maskedit1.Text:=dm.qrylimpa.FieldByName(´MESPGTO´).AsString;
maskedit2.Text:=dm.qrylimpa.FieldByName(´MESREFINI´).AsString;
maskedit3.Text:=dm.qrylimpa.FieldByName(´MESREFFIM´).AsString;
end else begin
[b:d9b952665f]if confirma then begin[/b:d9b952665f]
messagedlg(´Atenção Usuário! Numero da sequencia digitada ´ + edit2.text + ´ não Localizada´,mterror,[mbOk],0);
if application.messagebox(´Digitar Novamente?´,´Aviso´,36)=idyes then begin
edit2.text:=´´;
edit2.setfocus;
end else begin
maskedit1.enabled:=true;
maskedit2.enabled:=true;
maskedit3.enabled:=true;
MASKedit1.SETFOCUS;
end;
end;
end;
end;
Ou seja acrescentei essa linha em negrito. Mais continua repetindo.
Desculpe minha ignorancia em nao saber como fazer amigo.
Gostei + 0
27/11/2006
Campsoft
La onde vc define as variaveis do form...
var
Form1: Tform1;
Exibiu : Boolean;
---------------------------
Lá no OnActivate do seu form, vc faz assim:
Exibiu := false; // << não exibiu ainda
-----------------------------
Lá no OnExit do seu edit vc faz assim:
If Not(Exibiu) then begin
Exibiu:=True;
..... todo o seu codigo
End;
Vê se funciona, ai no caso teoricamente seria pra funcionar da seguinte maneira... vc pode modificar isso...
Quando você abrir o form, ele ja vai setar a variavel exibiu para false (ainda não exibiu)
No onExit, ele vai testar se isso e false ou nao.. se for.. ele mostra a mensagem e seta ela pra True, como ja exibido.
Caso contrario, ele nao vai exibir..
Gostei + 0
27/11/2006
Emerson Nascimento
procedure TForm8.Edit2Exit(Sender: TObject); begin if dm.qrylimpa.locate(´sequencia´,(Edit2.text),[]) then begin maskedit1.Text:=dm.qrylimpa.FieldByName(´MESPGTO´).AsString; maskedit2.Text:=dm.qrylimpa.FieldByName(´MESREFINI´).AsString; maskedit3.Text:=dm.qrylimpa.FieldByName(´MESREFFIM´).AsString; end else begin if application.messagebox(pchar(´Atenção Usuário! Numero da sequencia digitada (´+ edit2.text+ ´) não Localizada´13´Digitar Novamente?´), ´Aviso´, MB_ICONEXCLAMATION + MB_APPLMODAL + MB_YESNO + MB_DEFBUTTON1)=idYes begin edit2.text:=´´; edit2.setfocus; end else begin maskedit1.enabled:=true; maskedit2.enabled:=true; maskedit3.enabled:=true; MASKedit1.SETFOCUS; end; end; end;
Gostei + 0
27/11/2006
Adriano_servitec
Se eu deixo somente assim
procedure TForm8.Edit2Exit(Sender: TObject); begin //If Not(CONFIRMA) then begin //CONFIRMA:=True; if dm.qrylimpa.locate(´sequencia´,(Edit2.text),[]) then begin maskedit1.Text:=dm.qrylimpa.FieldByName(´MESPGTO´).AsString; maskedit2.Text:=dm.qrylimpa.FieldByName(´MESREFINI´).AsString; maskedit3.Text:=dm.qrylimpa.FieldByName(´MESREFFIM´).AsString; end else begin if application.messagebox(pchar(´Atenção Usuário! Numero da sequencia digitada ´ +EDIT2.TEXT+ ´, não Localizada´13´Digitar Novamente?´),´Aviso´, MB_ICONEXCLAMATION + MB_APPLMODAL + MB_YESNO + MB_DEFBUTTON1)=idYes then begin edit2.text:=´´; edit2.setfocus; end else begin maskedit1.enabled:=true; maskedit2.enabled:=true; maskedit3.enabled:=true; MASKedit1.SETFOCUS; end; end; end; //END;
Gostei + 0
27/11/2006
Adriano_servitec
Tipo assim
DM.ibTable1.filtered := false; DM.ibTable1.filter := ´matricula = ´+ QuotedStr(Edit1.Text); DM.ibTable1.filtered := true; Label3.CAPTION:=DM.ibTable1.FieldByName(´associado´).AsString;
Gostaria de saber te tem como fazer um IF ai neste codigo, ou o LOCATE eh mais rapido?
Nao estou acertando fazer certo
olhe como fiz:
if DM.ibTable1.LOCATE(´Matricula´,(Edit1.text),[]) then begin Label3.caption:=DM.ibTable1.FieldByName(´associado´).AsString; end else begin messagedlg(´Código do associado não Localizado´,mterror,[mbOk],0); if application.messagebox(´Digitar Novamente?´,´Aviso´,36)=idyes then begin edit1.text:=´´; edit1.setfocus; end else edit2.Enabled:=True; edit2.Setfocus; end; end;
Gostei + 0
28/11/2006
Emerson Nascimento
Gostei + 0
28/11/2006
Adriano_servitec
Sera que eh pq uso o comando APPEND antes?
Queria trabalhar com a tabela fechada e abri-la somente na hora de gravar, mais tive problemas com esse comando
procedure TForm3.DataSource1StateChange(Sender: TObject); var I: Integer; Perm: Boolean; begin //*****trata botoes enabled true ou false******* b1.Enabled := Datasource1.State in [dsBrowse]; b2.Enabled := Datasource1.State in [dsInsert,dsEdit]; b3.Enabled := Datasource1.State in [dsInsert,dsEdit]; b4.Enabled := Datasource1.State in [dsBrowse]; b5.Enabled := Datasource1.State in [dsBrowse]; //********pada deixar edit, jvedit,maskedit e memo com o enabled false***** Perm := (DataSource1.State in [dsInsert, dsEdit]); for I := 0 to Self.ComponentCount -1 do begin if (Self.Components[i] is TEdit) then (Self.Components[i] as TEdit).Enabled := Perm; if (Self.Components[i] is TMaskEdit) then (Self.Components[i] as TMaskEdit).Enabled := Perm; end; end;
A soluçao que eu achei eh abrir a tabela na hora de incluir os dados.
mais eu nao uso dbedits e sim edits simples, justamente para nao atrapalhar, mais nao sei se pode ser isso que esta ocorrendo.
Gostei + 0
05/12/2006
Adriano_servitec
Pessoal Olha o codigo como eu deixei agora
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)