Não deixar alternar entre tabsheets
13/12/2003
0
Wagsilvasilva
Posts
13/12/2003
Tchoninho
Coloque o código abaixo e faça as devidas modificações que deve funcionar.
procedure TForm1.FormShow(Sender: TObject); begin PageControl1.ActivePage:=Tabsheet1; end; procedure TForm1.PageControl1Change(Sender: TObject); begin if PageControl1.ActivePage<>Tabsheet1 then begin ShowMessage(´Você precisa salvar o registro atual´); PageControl1.ActivePage:=Tabsheet1; end; end;
28/12/2005
Marco Salles
Não estou conseguindo implementar a dica do amigo tchoninho , e o que quero e exatamente permitir ou não a saida da aba em questão atraves de um teste simples
Parecido como se faz com os formulários , que no caso no evento OnClose usamos Action := Canone ou Action := Cafree ; de acordo com a nossa necessidade
Obrigado
28/12/2005
Michael
Existem basicamente três formas de se impedir a utilização de uma aba em um componente [b:31e21c143b]TPageControl[/b:31e21c143b]. Vamos a elas:
[b:31e21c143b]1) Setando a propriedade [color=blue:31e21c143b]Enabled[/color:31e21c143b] da(s) TabSheet(s) bloqueada(s) para [color=blue:31e21c143b]False[/color:31e21c143b]:[/b:31e21c143b] isso irá desativar todos os controles dentro da aba, mas ela ainda poderá ser selecionada;
[b:31e21c143b]2) Setando a propriedade [color=blue:31e21c143b]TabVisible [/color:31e21c143b]da(s) TabSheet(s) bloqueada(s) para [color=blue:31e21c143b]False[/color:31e21c143b]:[/b:31e21c143b] irá esconder as abas, não permitindo que o usuário as selecione;
[b:31e21c143b]3) Via evento [color=blue:31e21c143b]OnChanging[/color:31e21c143b]:[/b:31e21c143b] Este evento passa um parâmetro [b:31e21c143b]var [/b:31e21c143b]chamado [b:31e21c143b]AllowChange[/b:31e21c143b], onde vc pode dizer se a mudança de aba é permitida ou não. Este evento é disparado [b:31e21c143b]antes [/b:31e21c143b]da mudança, e não depois, evitando um efeito visual indesejado.
A dica do colega [b:31e21c143b]tchoninho[/b:31e21c143b] funciona. O único problema com a abordagem que ela utiliza é que a aba ´proibida´ será exibida ao usuário, e depois o foco voltará para a anterior. Pessoalmente, considero isso uma falha visual.
Usando AllowChange em conjunto com a propriedade Enabled das TabSheets, por exemplo, fica fácil restingir o acesso.
Se precisar de exemplos em código, é só postar.
[]´s[b:31e21c143b][/b:31e21c143b]
28/12/2005
Host
procedure TFBriCam.PagesChanging(Sender: TObject;
var AllowChange: Boolean);
begin
bMudaTab:=False;
AllowChange := bMudaTab;
end;
28/12/2005
Marco Salles
Eu sabia disso , porém muitas das vezes habilitamos e desabilitamos componentes e quando o foco volta para a Aba anterior alguns componetes podem nen existir mais... É com isso erros são gerados, principalmente de focos
Contudo Tinha a necessidade de testar antes minha condição antes de permitir que se mudasse de Aba... E felismente o Evento PageControl1Changing veio como uma luva para a minha necessidade
:arrow:
[b:95e738390c]Felismente usando o Passo 3)[/b:95e738390c] Abordado por voce e posteiromente pelo Host , consigo testar a minha condição antes que a aba perca o foco...
[color=red:95e738390c]Finalmente[/color:95e738390c]
:P :P :P
[b:95e738390c]Depois da onça morta é facil pega-la pelo rabo[/b:95e738390c]
[color=darkblue:95e738390c]Muitissimo obrigado aos dois...[/color:95e738390c]
07/09/2006
Raserafim
o máximo que consegui foi qual está ativo, ou seja, o que atualmente está ativo, mas não o que o suauário quer que fique ativo.
minha condição depende de para qual o usuário quer ir.
Clique aqui para fazer login e interagir na Comunidade :)