Desabilitar tabSheet do pageControl mantendo alguns componentes ativos

Delphi

Automação Comercial

16/06/2016

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

Curtidas 0

Melhor post

Raimundo Pereira

Raimundo Pereira

16/06/2016

Talvez Tpanel. Dentro de um Tpanel. Resolva
GOSTEI 1

Mais Respostas

Rafael Bosco

Rafael Bosco

16/06/2016

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
GOSTEI 0
Francisco Júnior

Francisco Júnior

16/06/2016

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
GOSTEI 0
Francisco Júnior

Francisco Júnior

16/06/2016

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...
GOSTEI 0
Francisco Júnior

Francisco Júnior

16/06/2016

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;
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

16/06/2016

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]
GOSTEI 0
POSTAR