nRec=Recno() set exact on SEEK ThisForm.Pag1.Pg2.Text1.Value If Found() ThisForm.Pag1.Pg2.Text2.Value = Saifd ->znom && lembre-se no VFP o alias tem o formato mealias.meucampo ao invés de -> ThisForm.Pag1.Pg2.Text3.Value = Saifd ->zie ThisForm.Pag1.Pg2.Text4.Value = Saifd ->zest ThisForm.Pag1.Pg2.Text5.Value = Saifd ->zmun ThisForm.Pag1.Pg2.Text6.Value = Saifd ->zemp GO nRec DELETE TABLEREVERT(.T.) with thisform.cmdbotao .cmdproximo.Enabled = .t. .cmdfinal.Enabled = .t. .cmdinicio.Enabled = .t. .cmdanterior.Enabled = .t. .cmdnovo.Enabled = .t. .cmdvolta.Enabled = .t. .cmdaltera.Enabled = .t. .cmdapaga.Enabled = .t. .cmdvisualiza.Enabled= .t. .cmdapaga.Enabled = .t. .cmdimprime.Enabled = .t. endwith ThisForm.Pag1.Pg2.cmdGrava.Enabled = .f. ThisForm.Pag1.Pg2.cmdCancela.Enabled = .f. return .f. else with thisform.cmdbotao .cmdproximo.Enabled = .f. .cmdfinal.Enabled = .f. .cmdinicio.Enabled = .f. .cmdanterior.Enabled = .f. .cmdnovo.Enabled = .f. .cmdvolta.Enabled = .f. .cmdaltera.Enabled = .f. .cmdapaga.Enabled = .f. .cmdvisualiza.Enabled= .f. .cmdapaga.Enabled = .f. .cmdimprime.Enabled = .f. endwith with thisform.pag1.pg2 .cmdGrava.Enabled = .t. .cmdCancela.Enabled = .t. endwith endif procedure erromessage && e disparada instantaneamente depois de um return .f. do seu campo return "minha mensagem de erro é" * * qdo. entrar aqui o foco continuará no mesmo campo e a mensagem será enviada * endprocAlexandre este exemplo que lhe mandei é policamente incorreto porque o certo seria na procedure refresh de cada campo você fazer algo como: ThisForm.Pag1.Pg2.cmdGrava.Enabled = thisform.lFoiencontrado