Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Desabilitar varios TabSheet


robinhocne

Pergunta

Eu peguei esse exemplo da internet e que no fim acho que vai dar certo, mas já tentei e não estou conseguindo acho que estou enferrujado, alguém pode me ajudar ?

if PageControl1.ActivePageIndex = 1 then // 1 é a aba para bloquear
    begin
      PageControl1.ActivePageIndex := AbaAnterior
    end
    else
    begin
       AbaAnterior := PageControl1.ActivePageIndex;
    end;

Ai está apenas bloqueando o TabSheet 1 eu queria bloquear varios TabSheet ao mesmo tempo e quando for "tal" TabSheet eu queria bloquear outro.

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Eu peguei esse exemplo da internet e que no fim acho que vai dar certo, mas já tentei e não estou conseguindo acho que estou enferrujado, alguém pode me ajudar ?

É voce está enferrujado .... rs existem outras maneiras

exemplos:

procedure TForm1.Button1Click(Sender: TObject);
begin
   // Deixa invisivel as tabsheet 1 e 2
   PageControl1.Pages[1].TabVisible:=false;
   PageControl1.Pages[2].TabVisible:=false;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
   // Deixa desabilitada as tabsheet 1 e 2
   PageControl1.Pages[1].Enabled:=false;
   PageControl1.Pages[2].Enabled:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
     // Controlando os tabsheets
     for I := 0 to ComponentCount - 1 do
        begin
          if ( Components[ I ] is TTabSheet ) then
            begin
              if (( Components[ I ] as TTabSheet ).Name <> 'NomedoTabSheet' ) then
                 (Components[ I ] as TTabSheet ).TabVisible := False
              else
                 (Components[ I ] as TTabSheet ).TabVisible := True;

            end;
        end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Eu peguei esse exemplo da internet e que no fim acho que vai dar certo, mas já tentei e não estou conseguindo acho que estou enferrujado, alguém pode me ajudar ?

É voce está enferrujado .... rs existem outras maneiras

exemplos:

procedure TForm1.Button1Click(Sender: TObject);
begin
   // Deixa invisivel as tabsheet 1 e 2
   PageControl1.Pages[1].TabVisible:=false;
   PageControl1.Pages[2].TabVisible:=false;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
   // Deixa desabilitada as tabsheet 1 e 2
   PageControl1.Pages[1].Enabled:=false;
   PageControl1.Pages[2].Enabled:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
     // Controlando os tabsheets
     for I := 0 to ComponentCount - 1 do
        begin
          if ( Components[ I ] is TTabSheet ) then
            begin
              if (( Components[ I ] as TTabSheet ).Name <> 'NomedoTabSheet' ) then
                 (Components[ I ] as TTabSheet ).TabVisible := False
              else
                 (Components[ I ] as TTabSheet ).TabVisible := True;

            end;
        end;
end;

abraço

Essa seria uma boa maneira, mas eu não quero "sumir" com o TabSheet ou desabilitar os componentes dele.

O que eu quero é que se o usuário clicar no TabSheet1, TabSheet2, TabSheet3 ele não consiga acessar, tipo ele clica nesses e ele não consegue sair do TabSheet0, deixa eu explicar o que eu estou fazendo para você entender melhor.

No Cadastro de Produto, tem varias Abas e enquanto o usuário não terminar de preencher todos os campos obrigatorios ele não consiga passar para a proxima aba e somente ele vai conseguir se clicar no botão de salvar ai pula para a segunda aba, depois de preencher todos os campos obrigatorios e salva pula para a terceira e assim vai.

Eu não quero que fiquei invisivel e nem que ele consiga clicar na aba e ver os campos, da maneira que você colocou eu já tinha tentando, ai achei na net o jeito que eu coloquei e seria maios menos daquele, bloqueando o acesso.

Link para o comentário
Compartilhar em outros sites

  • 0
Eu não quero que fiquei invisivel e nem que ele consiga clicar na aba e ver os campos, da maneira que você colocou eu já tinha tentando, ai achei na net o jeito que eu coloquei e seria maios menos daquele, bloqueando o acesso.

Nesse caso voce pode usar assim:

var
  Form1: TForm1;
  AbaAnterior : integer = 0;
implementation

{$R *.DFM}

function TForm1.CheckAdEditEmpty: Boolean;
var
n : LongInt;
begin
   //verifica todos os TEdits do Form para ver se tem algum vazio
   //retorna TRUE se houver algum vazio
   Result := False;
   for n := 0 to (ComponentCount - 1) do
      begin
         if (Components[n].ClassType = TEdit) then
           begin
              if TEdit(Components[n]).Text = '' then
                 begin
                    Result := True;
                    Exit;
                 end;
           end;
      end;
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
   if CheckAdEditEmpty = true then
      begin
         PageControl1.ActivePageIndex := AbaAnterior;
      end
   else
      begin
         AbaAnterior := PageControl1.ActivePageIndex;
      end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Eu não quero que fiquei invisivel e nem que ele consiga clicar na aba e ver os campos, da maneira que você colocou eu já tinha tentando, ai achei na net o jeito que eu coloquei e seria maios menos daquele, bloqueando o acesso.

Nesse caso voce pode usar assim:

var
  Form1: TForm1;
  AbaAnterior : integer = 0;
implementation

{$R *.DFM}

function TForm1.CheckAdEditEmpty: Boolean;
var
n : LongInt;
begin
   //verifica todos os TEdits do Form para ver se tem algum vazio
   //retorna TRUE se houver algum vazio
   Result := False;
   for n := 0 to (ComponentCount - 1) do
      begin
         if (Components[n].ClassType = TEdit) then
           begin
              if TEdit(Components[n]).Text = '' then
                 begin
                    Result := True;
                    Exit;
                 end;
           end;
      end;
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
   if CheckAdEditEmpty = true then
      begin
         PageControl1.ActivePageIndex := AbaAnterior;
      end
   else
      begin
         AbaAnterior := PageControl1.ActivePageIndex;
      end;
end;

abraço

opa, valeu deu certo obrigado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...