Dúvida referente ao delphi

29/09/2017

0

Fala galera tudo bem com vocês?

Sou novo aqui no fórum, e também bem iniciante na programação em si, estou no ultimo ano do meu curso de análise e desenvolvimento de sistemas, e estou fazendo meu TCC na lingagem delphi. pra apresentar mês que vem... Estou enfrentando um problema bizarro na minha tela de compra, quando eu clico pra gravar a capa da compra, o delphi da um erro dizendo que não é possível lançar o foco em um campo ou janela desabilitada... O problema é que não existe nenhum campo ou janela que esteja desabilitada na minha aplicação, eu olhei todos os campos do forms e todos estão habilitados.... Será que é um BUG severo do delphi?, quando tento adicionar itens a minha compra também está dando o mesmo erro, estou quase refazendo a tela de compra inteira pra ver se para de dar esse erro do cão.... Segue o código de como estou implementando o botão gravar:

procedure TfrmGerenciarCompra.btnGravarClick(Sender: TObject);
begin
if (dm.qryCompra.State = dsInsert) then
begin
dm.qryUltimo.Close;
dm.qryUltimo.SQL.Clear;
dm.qryUltimo.SQL.Add('SELECT MAX (COD_COMPRA) AS ULTIMO FROM COMPRA');
dm.qryUltimo.Open();
//Responsável pela sequencia de códigos.
dm.qryCompraCOD_COMPRA.AsInteger :=
dm.qryUltimo.FieldByName('ULTIMO').AsInteger +1;
edtCodigoCompra.Text := dm.qryCompraCOD_COMPRA.AsString;
end;

dm.qryCompra.Post;

end;

E também do ITEM_COMPRA

procedure TfrmGerenciarCompra.btnLancarClick(Sender: TObject);
begin
dm.qryUltimo.Close;
dm.qryUltimo.SQL.Clear;
dm.qryUltimo.SQL.Add('SELECT MAX(COD_ITEM_COMPRA) AS ULTIMO FROM ITEM_COMPRA');
dm.qryUltimo.SQL.Add('WHERE COD_COMPRA = :COD_COMPRA');
dm.qryUltimo.ParamByName('COD_COMPRA').AsInteger := dm.qryCompraCOD_COMPRA.Value;
dm.qryUltimo.Open;

if (dm.qryCompra.State = dsInsert) then
begin
btnGravarClick(Sender);
end;

dm.qryExecute.Close;
dm.qryExecute.SQL.Clear;
dm.qryExecute.SQL.Add('INSERT INTO ITEM_COMPRA');
dm.qryExecute.SQL.Add('(COD_COMPRA, COD_ITEM_COMPRA, COD_PRODUTO, VALOR_ITEM, QUANTIDADE, TOTAL_PONTOS_ITEM, TOTAL_VALOR_ITEM)');
dm.qryExecute.SQL.Add('VALUES');
dm.qryExecute.SQL.Add('(:COD_COMPRA, :COD_ITEM_COMPRA, :COD_PRODUTO, :VALOR_ITEM, :QUANTIDADE)');
dm.qryExecute.ParamByName('COD_COMPRA').AsInteger := dm.qryCompraCOD_COMPRA.Value;
dm.qryExecute.ParamByName('COD_ITEM_COMPRA').AsInteger := dm.qryUltimo.FieldByName('ULTIMO').AsInteger + 1;
dm.qryExecute.ParamByName('COD_PRODUTO').AsInteger := StrToInt (edtCodigoProduto.Text);
dm.qryExecute.ParamByName('VALOR_ITEM').AsFloat := StrToFloat (edtValorItem.Text);
dm.qryExecute.ParamByName('QUANTIDADE').AsInteger := StrToInt (edtQuantidade.Text);
dm.qryExecute.ParamByName('TOTAL_PONTOS_ITEM').AsInteger := StrToInt (edtPontuacaoItem.Text);

dm.qryExecute.ExecSQL;

dm.qryItemCompra.Close;
dm.qryItemCompra.ParamByName('COD_COMPRA').AsInteger :=
dm.qryCompraCOD_COMPRA.Value;
dm.qryItemCompra.Open;

dm.qryCompra.Edit;
dm.qryCompraVALOR_COMPRA.Value := Dm.qryCompraVALOR_COMPRA.Value + (StrToInt (edtQuantidade.Text) * StrToFloat (edtValorItem.Text));
dm.qryCompraTOTAL_PONTOS.Value := Dm.qryCompraTOTAL_PONTOS.Value + (StrToInt (edtQuantidade.Text) * StrToInt (edtPontuacaoItem.Text));
dm.qryCompra.Post;

//edtCodigoProduto.Clear;
//edtNomeProduto.Clear;

edtCodigoProduto.SetFocus;
end;

Quem puder me ajudar eu agradeceria de verdade, não manjo muito de programação estou entrando nesse mundo agora com o desafio de concluir esse tcc, se tiver alguma dica pra que me ajude no desenvolvimento do mesmo eu agradeço de verdade...

Um grande abraços a todos.
Leandro Vaneti

Leandro Vaneti

Responder

Post mais votado

29/09/2017

Boa tarde brother, poderia ser mais específico no erro apresentado pelo Delphi? Por acaso é essa mensagem: "cannot focus a disabled or invisible window" ?

Se for, bom, o seu EDTCODIGOPRODUTO está desabilitado, para que não ocorra exceção utilizei o método CANFOCUS antes de setar o foco em algum componente.

    if EdtCodigoProduto.CanFocus then
       EdtCodigoProduto.SetFocus;


Fazendo isso, acredito que não irá ocorrer novamente o erro.

Rafael Bosco

Rafael Bosco
Responder

Mais Posts

30/09/2017

Leandro Vaneti

Fala Rafael beleza, consegui resolver aqui cara, eu estava passando uns campos só q estava esquecendo de referenciar eles no código, ai tava dando esse erro aleatório, e também tinha um com o foco, falso, só q era um campo q eu devo ter arrastado e ele ficou atrás de uma grid ai eu n consegui ver, kkk enfim, coisas de iniciante, muito obrigado pela ajuda amigo.
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar