Problema com foco.
Bom tenho um campo dbedit.text e no evento On Exit tenho este codigo
if DBEdit1.Text = ´ ´ then
FrmListaLinhas.Showmodal;
Explicando se o dbedit1.text estiver em branco ele chama o form com a lista pra eu escolher, mais o problema e se eu resolver cancelar, vou no botão cancelar dai em vez de cancelar ele abre o form de lista pq o dbedit1.text perdeu o foco. dai tenho que escolher um da lista pra depois cancelar. tem como resolver isso?
if DBEdit1.Text = ´ ´ then
FrmListaLinhas.Showmodal;
Explicando se o dbedit1.text estiver em branco ele chama o form com a lista pra eu escolher, mais o problema e se eu resolver cancelar, vou no botão cancelar dai em vez de cancelar ele abre o form de lista pq o dbedit1.text perdeu o foco. dai tenho que escolher um da lista pra depois cancelar. tem como resolver isso?
Digital_man
Curtidas 0
Respostas
Macario
06/11/2006
Ola.
Uma maneira:
Mas atente que so serve para componentes descendentes de TWinControl.
Espero que lhe ajude.
Uma maneira:
if(ActiveControl = BotaoCancelar) then exit;
Mas atente que so serve para componentes descendentes de TWinControl.
Espero que lhe ajude.
GOSTEI 0
Marco Salles
06/11/2006
outra maneira.. No evento onexit acrescente:
if not BotaoCancelar.setfocus Then
if DBEdit1.Text = ´ ´ then
FrmListaLinhas.Showmodal;
GOSTEI 0
Digital_man
06/11/2006
Ola.
Uma maneira:
Mas atente que so serve para componentes descendentes de TWinControl.
Espero que lhe ajude.
if(ActiveControl = BotaoCancelar) then exit;
Amigos funcionou assim.
procedure TFrmCadPro.DBEdit1Exit(Sender: TObject);
begin
if(ActiveControl = btnCancelar) then
ADOQProdutos.Cancel
else
//if not btnCancelar. Then
if DBEdit1.Text = ´´ then
FrmListaLinhas.Showmodal;
end;
GOSTEI 0
Digital_man
06/11/2006
Ola.
Uma maneira:
Mas atente que so serve para componentes descendentes de TWinControl.
Espero que lhe ajude.
if(ActiveControl = BotaoCancelar) then exit;
[b:e73d0416ac]Amigos funcionou assim.
procedure TFrmCadPro.DBEdit1Exit(Sender: TObject);
begin
if(ActiveControl = btnCancelar) then
ADOQProdutos.Cancel
else
//if not btnCancelar. Then
if DBEdit1.Text = ´´ then
FrmListaLinhas.Showmodal;
end;[/b:e73d0416ac]
GOSTEI 0
Digital_man
06/11/2006
Ola.
Uma maneira:
Mas atente que so serve para componentes descendentes de TWinControl.
Espero que lhe ajude.
if(ActiveControl = BotaoCancelar) then exit;
[b:1eef082e92]Amigos funcionou assim.
procedure TFrmCadPro.DBEdit1Exit(Sender: TObject);
begin
if(ActiveControl = btnCancelar) then
ADOQProdutos.Cancel
else
//if not btnCancelar. Then
if DBEdit1.Text = ´´ then
FrmListaLinhas.Showmodal;
end;[/b:1eef082e92]
GOSTEI 0
Rodc
06/11/2006
Ou usa u SpeedButton para o botão Cancelar
GOSTEI 0
Carlos Bernardo
06/11/2006
if (dbedit1.text = ´´) and (not btnCancelar.focused) then
FrmListaLinhas.Showmodal;
FrmListaLinhas.Showmodal;
GOSTEI 0
Marco Salles
06/11/2006
independente do que voce uses:
1)
2)
3)
emfim, uma outras tantas series de modos que analisam de certo modo o proximo foco do outro controle...Porém Nenhuma delas , funciona corretamente , se no programa possuir teclas de atalho.....
Em situaçoes assim , tem que se garantir a mudança efetiva do foco , o que não ocorre usando a tecla de atalho..
1)
procedure TFrmCadPro.DBEdit1Exit(Sender: TObject);
begin
if(ActiveControl = btnCancelar) then
ADOQProdutos.Cancel
else
if DBEdit1.Text = ´´ then
FrmListaLinhas.Showmodal;
2)
if not BotaoCancelar.setfocus Then
if DBEdit1.Text = ´ ´ then
FrmListaLinhas.Showmodal;
3)
if (dbedit1.text <> ´´) or( btnCancelar.focused) then
ADOQProdutos.Cancel
else
FrmListaLinhas.Showmodal;
emfim, uma outras tantas series de modos que analisam de certo modo o proximo foco do outro controle...Porém Nenhuma delas , funciona corretamente , se no programa possuir teclas de atalho.....
Em situaçoes assim , tem que se garantir a mudança efetiva do foco , o que não ocorre usando a tecla de atalho..
GOSTEI 0