Não consigo retornar no TabSheet normalmente com um click?

Delphi

03/07/2008

Pessoal tenho aqui um form com um PageControl e neste PageControl tem dois TabSheet

No primeiro TabSheet tenho um dbgrid e no segundo é em modo forumulario

Então percebi se eu colocar este codigo no oncellclik do dbgrid

 procedure TfrmEmissaoPed.DBGrid3CellClick(Column: TColumn);
    begin
      Edit1.Text := IntToStr(DSPadrao.DataSet.FieldByName(´ID_FORNECEDOR´).AsInteger);
      Edit2.Text := IntToStr(DSPadrao.DataSet.FieldByName(´ID_CLIENTE´).AsInteger);
    end;



E clicar na aba que vai para o segundo tabsheet2 e retornar para a primeira aba aonde esta o tabsheet1 ele não obedece no primeiro click e sim la pelo terceiro clique na aba até retornar, se eu comentar estas linhas ele retorna normal no primeiro click.

O que pode ser isso?


Adriano_servitec

Adriano_servitec

Curtidas 0

Respostas

Altingon

Altingon

03/07/2008

Tenta testar se a TabSheet onde tem o grid é a ativa

if PageControl1.Activepage = Tabsheet1 then
  begin
    Edit1.Text := IntToStr(DSPadrao.DataSet.FieldByName(´ID_FORNECEDOR´).AsInteger);
    Edit2.Text := IntToStr(DSPadrao.DataSet.FieldByName(´ID_CLIENTE´).AsInteger); 
  end;


Espero ter ajudado


GOSTEI 0
Adriano_servitec

Adriano_servitec

03/07/2008

Obrigado amigo, vou ver aqui

Valeu.


GOSTEI 0
Adriano_servitec

Adriano_servitec

03/07/2008

Já descobri, debugando achei o problema amigo

Olhe no evento onexit destes dois Edits:

procedure TfrmEmissaoPed.Edit1Exit(Sender: TObject);
begin
  inherited;
  {if Trim(Edit1.Text) = ´´ then
     Exit
  else
    Edit2.SetFocus;
  {:Chama a procedure}
  BuscaFornecedor;
end;

procedure TfrmEmissaoPed.Edit2Exit(Sender: TObject);
begin
  inherited;
  {if Trim(Edit2.Text) = ´´ then
     Exit
  else
    JvDBDateEdit1.SetFocus;
  {:Chama a procedure}
  BuscaCliente;
end;


Ou seja esta forçando se tiver preenchido outro setfocus, ai ele vai até o JvDBDateEdit1.SetFocus; para depois retornar.

E agora? Tenho que ver como contornar isso :D


GOSTEI 0
Altingon

Altingon

03/07/2008

O que você pode fazer é impedir que o usuario ative outra TabSheet enquanto os critérios não forem atendidos.


GOSTEI 0
Adriano_servitec

Adriano_servitec

03/07/2008

Arrumado
procedure TfrmEmissaoPed.Edit1Exit(Sender: TObject);
begin
  inherited;
  if Trim(Edit1.Text) = ´´ then
  begin
     Exit;
  end;
  {:Chama a procedure}
  BuscaFornecedor;
end;

procedure TfrmEmissaoPed.Edit2Exit(Sender: TObject);
begin
  inherited;
  if Trim(Edit2.Text) = ´´ then
  begin
     Exit;
  end;
 {:Chama a procedure}
  BuscaCliente;
end;


Joguei o SetFocus no evento onKeyPress


GOSTEI 0
POSTAR