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

mudar cor do painel


Xafam

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0
Olá.

Seria isto?

Panel1.Font.Color:= clgray;
Creio que não seja isso Manoel, afinal o clGray apenas pinta a fonte de cinza, ele quer o efeito "vazado" que o label fica quando o enabled está false. Como sujestão eu diria para ti colocar label no panel e controlar o enabeld deles pelo enabels do panel.
Label1.Enabeld := Panel1.Enabeld;
Label2.Enabeld := Panel1.Enabeld;
Label3.Enabeld := Panel1.Enabeld;

Assim tu teria o efeito desejado e teria certeza que somente quando o panel estivesse com o enabled em false.

Link para o comentário
Compartilhar em outros sites

  • 0

Xafam, a sugestão do colega Rodrigo Flores é correta.

Porém, vendo seu questionamento deste modo: "desabilitar a fonte do Panel" (...) quando atribuir False a sua propriedade Enabled, que fique igual ao que ocorre com um Label.

Fico com a impressão de que você estaria se referindo à forma de visualização do texto (Caption) do Panel (ou mesmo de um GroupBox). Se for isto, procure deixar mais claro o que você pretende fazer.

Ainda na abordagem do colega Rodrigo Flores, deixo aqui uma função "genérica" que uso há algum tempo.

Ela pode ser usada para desabilitar os itens que estão inseridos dentro de qualquer componente que possua outros componentes, como TGroupBox, TPanel, TTabSheet, TForm, ...; Pode ser adaptada a gosto para tratar componentes específicos.

No meu caso, queria desabilitar os Labels e apenas marcar os DBEdits como somente leitura (para não tornar a visualização difícil dos dados):

procedure EnableGroupedControls(GroupControl :TControl; Enable :Boolean);
var
  Idx :Integer;
  Form :TForm;
  Control :TComponent;
begin
  Control := GroupControl;
 // Vamos a "caça" do Form onde o componente está
  while not (Control is TForm) and (Control.GetParentComponent <> nil) do
    Control := Control.GetParentComponent;
  Form := Control as TForm;

 // Com o Form em "mãos", varremos seus componentes
 // procurando por componentes com a característica desejada,
 // ou seja, que esteja no GroupControl 
  for Idx := 0 to Form.ComponentCount -1 do
  begin
    Control := Form.Components[Idx].GetParentComponent;
    if Assigned(Control) and ((Control.Owner = GroupControl) or (Control = GroupControl)) then
    begin
      if Form.Components[Idx].ClassType = TDBEdit then
        TDBEdit(Form.Components[Idx]).ReadOnly := not Enable
      else if Form.Components[Idx].ClassType = TLabel then
        TLabel(Form.Components[Idx]).Enabled := Enable;
    end;
  end;
end;
Exemplos de uso:
// desabilita os componentes colocados no TabbedNotebook1, conforme os "if's"
EnableGroupedControls(TabbedNotebook1, False);
// habilita os componentes colocados no Panel1, conforme os "if's"
EnableGroupedControls(Panel1, True);
// chamado no form, desabilita os componentes colocados nele, conforme os "if's"
EnableGroupedControls(Self, False);
Se for manipular apenas a propriedade Enable de qualquer componente visual, então é só tirar os if's que testam ClassType e substituir por:
if Form.Components[Idx] is TWinControl then
  TWinControl(Form.Components[Idx]).Enabled := Enable;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Porém, vendo seu questionamento deste modo: "desabilitar a fonte do Panel" (...) quando atribuir False a sua propriedade Enabled, que fique igual ao que ocorre com um Label.

Fico com a impressão de que você estaria se referindo à forma de visualização do texto (Caption) do Panel (ou mesmo de um GroupBox). Se for isto, procure deixar mais claro o que você pretende fazer.

é isso mesmo o que eu me referia ...

quero que o conteudo que estiver escrito no Panel , quando for Enable = False, fique da mesma cor de quando um Label tem a propriedade Enable = False.

porque na minha aplicação , como não tem jeito de colorir um botton quando clicado, eu usei um Panel para fazer o papel de um botton ..

eu usei isso em dois "botões"(Panel) .. um de adicionar e outro de editar

quando o de Adicionar é "apertado/clicado" fica verde, informando o usuario que aquele "botao" foi clicado e que ele está inserindo dados ..

como essa inserção de dados é demorada .. por isso que eu coloquei que o "botão"(Panel) ficasse verde, para que o usuario não se perdesse e ficar ciente que ainda está inserindo dados ...

até ai .. não tem nada haver com a minha pergunta ..

só que quando o usuario clica no "botao"(Panel) Adicionar (por exemplo) .. todos os outros botões(Avançar, Sair, Anterior, ....) ficam com a propriedade Enable = False

e isso vale também para o "botão"(Panel) Editar, porem quando ele fica Enable = False, sua fonte fica com a mesma cor ..

é ai que eu queria saber ... como fazer para que a COR DA FONTE do conteudo do Panel ficasse da mesma cor de quando um Botton, Label, ... tem a propriedade Enable = False

Link para o comentário
Compartilhar em outros sites

  • 0

Xafan, não dá para fazer isto sem reescrever o método paint, ou seja, criar um componente derivado do TPanel e processar a pintura dele.

Nesta situação, parece melhor opção criar um botão customizado - ficam aqui dois links com código fonte:

TColorButton - button with color properties

Color Button

Caso prefira usar mesmo um Panel, o jeito é seria fazer um pequena "gambiarra": deixa o Caption dele vazio e coloca um TLabel centralizado com o texto do "botão". Daí, você desabilita o Panel e o Label e terá o efeito desejado.

Abraços

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...