Fórum PageControl com foco travado #373090
04/08/2009
0
Após a execução do código abaixo,
procedure TFrmCadastro.PgcCadcliChanging(Sender: TObject;
var AllowChange: Boolean);
begin
if (Dados.TbClientes.FieldByName(´pessoa´).Value = ´J´) then
begin
AllowChange := False;
Application.MessageBox(´Cadastro complementar somente para pessoa física!´, ´Aviso´, MB_ICONWarning);
Exit;
end;
end;
o foco do formulário recai sobre o PageControl, devido a definição do valor da propriedade TabOrder do controle, e nele se fixa. Ou seja, por mais que eu mude a ordem dos controles no formulário, por meio do TabOrder, quando o PageControl recebe o foco, não consigo passar para outro controle que, no meu caso, seria um DbGrid. O que devo fazer para que, ao teclar a tecla ´seta para baixo´, o foco saia do PageControl e vá para o DbGrid?
Sgrandini
Curtir tópico
+ 0Posts
04/08/2009
Alanporto
Gostei + 0
04/08/2009
Sgrandini
Gostei + 0
04/08/2009
Alanporto
Ficaria assim:
procedure TFrmCadastro.PgcCadcliChanging(Sender: TObject; var AllowChange: Boolean); begin if (Dados.TbClientes.FieldByName(´pessoa´).Value = ´J´) then begin AllowChange := False; Application.MessageBox(´Cadastro complementar somente para pessoa física!´, ´Aviso´, MB_ICONWarning); [b]DBGrid1.SetFocus;[/b] end; end;
O foco após a mensagem já voltaria para o DBGrid.
Gostei + 0
04/08/2009
Alanporto
Gostei + 0
04/08/2009
Sgrandini
Mas obrigada pela ajuda!
Gostei + 0
04/08/2009
Alanporto
if PgcCadcli.ActivePage = TabSheetUsado then DBGrid1.SetFocus;
Assim sempre seta o foco no DBGrid quando a aba é ativada (comigo funcionou normalmente, tanto quando entra na aba quando aparece o MessageBox).
Gostei + 0
04/08/2009
Sgrandini
Gostei + 0
04/08/2009
Alanporto
Gostei + 0
04/08/2009
Sgrandini
Application.MessageBox(´Cadastro complementar somente para pessoa física!´, ´Aviso´, MB_ICONWarning);
Não sei pq isso acontece. Mudei para SHOWMESSAGE e funcionou. Assim que cliquei no OK da mensagem, teclei na seta para baixo e passei para a próxima linha do DbGrid. Pena o MESSAGEBOX não funcionar, pq eu gostaria de adicionar o ícone de aviso e alterar o título da janela de mensagem.
Gostei + 0
04/08/2009
Diegotiemann
Perform(WM_NEXTDLGCTL, 0, 0);
Esse trecho passa o foco para o próximo componente, se não trocar de aba, talvez funcione
Gostei + 0
04/08/2009
Sgrandini
Obrigada, diegotiemann!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)