Fórum Bloquear mudança de aba no PageControl #373015
01/08/2009
0
gostaria de impedir que o usuário mude de aba no PageControl ao tentar cliclá-la, de acordo com uma determinada condição. Coloquei essa condição nos eventos OnChange e OnChanging do PageControl, mas não funcionou. Segue abaixo o procedimento inserido no evento OnChanging do PageControl:
if (Dados.TbClientes.FieldByName(´pessoa´).Value = ´J´) then
begin
PgcCadcli.Enabled := False;
ShowMessage(´Cadastro complementar somente para pessoa física!´);
end;
Apesar de conseguir desabiblitar o PageControl, o código não impede que, após o clique na aba e a exibição da mensagem, a aba seja mudada.
Alguém saberia dizer como impedir essa alteração pelo usuário?
Grata.
Sgrandini
Curtir tópico
+ 0Posts
01/08/2009
Carlosrm
um modo:
procedure Tform1.pagecontrol1Change(Sender: TObject); begin if (Dados.TbClientes.FieldByName(´pessoa´).Value = ´J´) then begin ShowMessage(´Cadastro complementar somente para pessoa física!´); pagecontrol1.TabIndex := 0; exit; end;
1º) Evento OnChange
2º) Depois do ShowMessage, forcei o pagecontrol exibir a primeira aba (...tabindex := 0)
3º) o comando EXIT só será necessário se você tiver outros comandos após o END.
Desse modo, a página não permitida será exibida, por baixo do quadro da ShowMessage, impedindo qualquer interação do usuário com a aba. E quando clicar no OK da ShowMessage, imediamente será enviado de volta para a aba de indíce zero (a primeira). Qualquer coisa, reclame. Abraco.
carlosrm
Gostei + 0
03/08/2009
Alanporto
Use a variável AllowChange do evento OnChanging:
if (Dados.TbClientes.FieldByName(´pessoa´).Value = ´J´) then
begin
[b:6f248ce700] AllowChange := False;[/b:6f248ce700]
ShowMessage(´Cadastro complementar somente para pessoa física!´);
end;
Gostei + 0
03/08/2009
Sgrandini
era exatamente isso que eu queria.
Obrigada!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)