Substituindo o SetFocus

Delphi

04/12/2008

Fala Galera,

Gostaria de uma informação, Teria algum codigo que faça o mesmo procedimento do Setfocus ??


Fico no aguardo


Cleiflavio

Cleiflavio

Curtidas 0

Respostas

Paulo

Paulo

04/12/2008

Eu faço uma uma Função mas dentro dela vai o setfocus:

Function Foco(Obj: TWincontrol):boolean;
begin
  Result := Obj.Canfocus;
  if result then Obj.SetFocus;
end;


Para usar, passe o controle apenas assim:
Foco(Edit1);
Foco(DBGrid1);
Foco(btnGravar);
E assim vai.


GOSTEI 0
Cleiflavio

Cleiflavio

04/12/2008

eu estou tendo um probelma com o Setfocus não sei oq está acontecendo mas sempre quando uso o setfocus o meu formulario de cadastro está pulando uma linha no BD e se eu tiro o setfocus ele não pula linha ele vai add um embaixo do outro.

Será que teria algo que limpasse a memoria, tipo antes de chamar o setfocus ele limpa depois chama.

????????


GOSTEI 0
Paullsoftware

Paullsoftware

04/12/2008

Ta meio vago esse seu problema, o que exatamente ta ocorrendo e qual o código que está sendo executado?


GOSTEI 0
Martins

Martins

04/12/2008

vc já olhou todos os eventos dos componentes deste form, já verifiou se não tem algo no OnEnter de um dos componentes q está causando isso?

Boa sorte e bons códigos.


GOSTEI 0
Webjoel

Webjoel

04/12/2008

Olha amigo,

Tavez este seu problema nem seja com o setfocus, mas de qualquer maneira realmente as vezes o setfocus pode causar alguns problemas, eu mesmo parei de usá-lo, atualmente uso o seguinte código:

ActiveControl := DBEdit1;


No caso você pode setar o foco para qualquer componente do form, bastanto apenas passar o nome do mesmo.

Boas Compilações brod!


GOSTEI 0
Cleiflavio

Cleiflavio

04/12/2008

Galera não sei oq acontece não, eu usei o ActiveControl e deu o mesmo erro do SetFocus
[C:\Documents and Settings\br1marcl\Desktop\erro_delphi.JPG]


GOSTEI 0
Paulo

Paulo

04/12/2008

O Martins perguntou se há algum código no OnEnter do componente. caso haja, de uma verificada nele(código).
meu formulario de cadastro está pulando uma linha no BD e se eu tiro o setfocus ele não pula linha ele vai add um embaixo do outro.

Não entendi a linha acima. Para isso acontecer é necessáriio ver algum código antes, tipo OnEnter, BeforePost de algum componente Dataware. Para isso seria necessário postar os códigos. É melhor para resolver. Mas ainda acho que tem algo no OnEnter desse componente. O evento OnEnter é disparado quando o objeto recebe o foco.


GOSTEI 0
Cleiflavio

Cleiflavio

04/12/2008

Deixa eu fazer para vcs entederem.

Eu tenho 4 form de cadastro
1 cadastra um tipo X de CX
2 cadastra um tipo Y de cx
3 cadastra um tipo B de cx

quando entro no cadastro de vc X e faço alguns inserções ele cai no meu banco certinho uma linha embaixo da outra, ai vou para o outro formo caastro cx Y e vou fazendo as inserções , quando eu olho no banco ta cadastrado as inserções da cx X e quando vai passar para inserção da cx Y ele ta pulando uma linha .

O Estranho é que quando eu tiro o Setfocus ou o ActiveControl e vou fazer as inserçoes no meu BD vai certinho nãoo pula nenhuma linha cai conforme eu quero, mas eu presciso que quando eu faço a inserção aponte novamente para o meu primeiro edit.

segu o codigo que estou usando na inserção

procedure TF_limpeza.BitBtn1Click(Sender: TObject);
begin

DM.CDS_GERAL.post;
DM.CDS_GERAL.ApplyUpdates(1);
DM.CDS_GERAL.Insert;

//ActiveControl := N_caixa;
//N_caixa.setfocus;
end;

Espero que tenha esclarecido meu problema


GOSTEI 0
Cleiflavio

Cleiflavio

04/12/2008

Galera esqueci de falar uma coisa, em todos os meus form de cadastro no OnActive eu coloco assim:

procedure TF_consignado.FormActivate(Sender: TObject);
begin
DM.CDS_GERAL.open;
DM.CDS_GERAL.Insert;
end;

Uso isso para que quando abrir o form ele deixar todos meus edit em branco para digitar.

não sei se tem alguma coisa a ver.


GOSTEI 0
Paullsoftware

Paullsoftware

04/12/2008

Galera esqueci de falar uma coisa, em todos os meus form de cadastro no OnActive eu coloco assim: procedure TF_consignado.FormActivate(Sender: TObject); begin DM.CDS_GERAL.open; DM.CDS_GERAL.Insert; end; Uso isso para que quando abrir o form ele deixar todos meus edit em branco para digitar. não sei se tem alguma coisa a ver.
você já pensou na hipótese de vc mesmo clicar fora do form depois clicar no form e ativar esse seu comando por mais de uma vez, gerando assim essa linha em branco?

faça um teste. coloque os campos da tabela como ´Requeridos´ daí quando for salvar o registro vazio ele vai apresentar erro...

outra coisa, não use esse código no onActive coloque um botão para controlar...


GOSTEI 0
Cleiflavio

Cleiflavio

04/12/2008

Valeuuu, deu certo manipulei o insert com um botão e resolveu meu problema.


Obrigado


GOSTEI 0
POSTAR