Desabilitar tabSheet do pageControl mantendo alguns componentes ativos

16/06/2016

0

Olá boa tarde, tenho uma tabsheet com vários componentes e gostaria que todos os componentes menos um ficassem inativos, eu poderia usar enabled false nos componentes que desejasse inativos mas ficam cinza e ruim de ver os dados, se desabilitar o edit do datasource apesar de não ter escrita pode se clicar nos componentes ativando eventos como on enter e on exit. Qual a melhor forma de resolver este problema. Obs componente que desejo deixar ativo é um edit.
Francisco Júnior

Francisco Júnior

Responder

Post mais votado

16/06/2016

Talvez Tpanel. Dentro de um Tpanel. Resolva

Raimundo Pereira

Raimundo Pereira
Responder

Mais Posts

16/06/2016

Rafael Bosco

Olá Francisco, há várias maneiras de resolver isso, você pode colocar eles como:

  SeuComponente.ReadOnly := True; // isso faz com que o componente não execute nada, e você não consegue alterar nada também

  Edit1.ReadOnly := False; //no caso do edit que você deseja, ele permanecerá ativo e Editavél
Responder

16/06/2016

Francisco Júnior

O problema é que desta forma poderei entrar e sair nos outros componentes ativando eventos, se setar o enabled dos componentes false eles ficam cinzas e se setar o tabsheet false não fica cinza mas também deixo de ter acesso ao edit
Responder

17/06/2016

Francisco Júnior

Olá amigo p2 também não resolveu, eu sei que isso pode ser feito pois já vi em um programa o problema é como fazer...
Responder

17/06/2016

Francisco Júnior

Depois de muito bater cabeça resolvi assim se interessar a alguém

//no evento onexit do edit2
//não sei porque o delphi não aceita o comando if not dm.IBFuncionario.State in [dsEdit,dsInsert] then ou if dm.IBFuncionario.State not in [dsEdit,dsInsert] then então coloquei da //forma abaixo
if dm.IBFuncionario.State in [dsEdit,dsInsert] then
else
begin
if not ((ActiveControl.ClassName = 'TBitBtn') or (ActiveControl.ClassName = 'TTabSheet')) then
edit2.SetFocus;
end;
Responder

18/06/2016

Raimundo Pereira

Olá amigo p2 também não resolveu, eu sei que isso pode ser feito pois já vi em um programa o problema é como fazer...


Veja se ajuda.

Código

procedure TForm1.BlockClick(Sender: TObject);
begin
Panel2.Enabled:=FALSE;
end;

[img:descricao=Estrutura 1]https://uploaddeimagens.com.br/imagens/1-jpg--3761[/img]

[img:descricao=Resultado]https://uploaddeimagens.com.br/imagens/2-png--1875[/img]
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar