nicolasbraz Postado Novembro 25, 2009 Denunciar Share Postado Novembro 25, 2009 Tenho um dbgrid com varios registros, quando o usuario está cadastrando um produto se ele clicar no registro de baixo ele muda o registro atual deixando o de cima incompleto, como posso bloquear isso ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 25, 2009 Denunciar Share Postado Novembro 25, 2009 Tenho um dbgrid com varios registros, quando o usuario está cadastrando um produto se ele clicar no registro de baixo ele muda o registro atual deixando o de cima incompleto, como posso bloquear isso ?Voce pode testar o campo do dbgrid, se ele não estiver preenchido o foco do cursor deve retornar ao campo, até que a condição esteja satisfeita.exemplo: Use o evento OnKeyPress do DBGridprocedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if selectedindex = 1 then begin if CDS_CadastroFUNCAO.Value = '' then begin DBGrid1.SetFocus; DBGrid1.SelectedIndex := 1; exit; end; end; end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nicolasbraz Postado Novembro 26, 2009 Autor Denunciar Share Postado Novembro 26, 2009 Jhonas tentei colocar a condição. procedure TFrmSaida.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if dbgrid1.selectedindex = 1 then begin if (dmdados.saidaproduto.State In [dsInsert] ) Then begin DBGrid1.SetFocus; DBGrid1.SelectedIndex := 1; exit; end; end; end;Mas não deu certo ainda :S O jeito que você me passou é para string o meu campo é inteiro, tentei colocar se o valor for = 0 mas também não deu. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 26, 2009 Denunciar Share Postado Novembro 26, 2009 if dbgrid1.selectedindex = 1 then onde selectedindex é o numero da coluna do dbgrid que voce deseja testar exemplo: se selectedindex = 0 significa que a coluna a ser testada é a coluna 1 se selectedindex = 1 significa que a coluna a ser testada é a coluna 2 se selectedindex = 2 significa que a coluna a ser testada é a coluna 3 Voce tambem pode testar o nome do campo da tabela if selectedindex = 1 then begin if (CDS_FuncaoCOD_EMP.AsInteger = 0) or (CDS_FuncaoCOD_EMP.AsString = '') or (DBGrid1.Columns[0].Field.AsInteger = 0) then begin DBGrid1.SetFocus; DBGrid1.SelectedIndex := 1; exit; end; end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nicolasbraz
Tenho um dbgrid com varios registros, quando o usuario está cadastrando um produto se ele clicar no registro de baixo ele muda o registro atual deixando o de cima incompleto, como posso bloquear isso ?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.