Cor do TLabel em tempo de excução
Pessoa para saber qual componente foi selecionado uso: ActiveControl, é consigo acesso a propriedades como o Hint, más preciso saber a cor do label selecionado
como posso obter esse valor.
como posso obter esse valor.
Marcos Silva
Curtidas 0
Respostas
Wanderson Cortes
12/02/2015
label.Color
GOSTEI 0
Marcos Silva
12/02/2015
Não é bem isso, tenho vários label com um popupmemu associado a eles quando clico em um dele com o ActiveControl sei qual o hint por exemplo daquele label, más o ActiveControl não tem Tcolor, qual função eu poderia ter acesso a cor.
GOSTEI 0
Wanderson Cortes
12/02/2015
Mostra seu código aí
GOSTEI 0
Marcos Silva
12/02/2015
É esse:
procedure TfrmPrincipal.O3Click(Sender: TObject); var Numero: Integer; Nome : String; Cor : TColor; begin Numero:= ActiveControl.Tag; Nome := Pchar(ActiveControl.Hint); Cor := ???? end;
GOSTEI 0
Douglas
12/02/2015
É esse:
procedure TfrmPrincipal.O3Click(Sender: TObject); var Numero: Integer; Nome : String; Cor : TColor; begin Numero:= ActiveControl.Tag; Nome := Pchar(ActiveControl.Hint); Cor := ???? end;
Olá Mssilva, tudo bem?
Utilize o Sender, assim saberá o objeto que requisitou a ação. O código fica da seguinte forma abaixo:
procedure TfrmPrincipal.O3Click(Sender: TObject); var Numero: Integer; Nome : String; Cor : TColor; begin Numero:= ActiveControl.Tag; Nome := Pchar(ActiveControl.Hint); Cor := Tlabel(sender).font.color; end;
GOSTEI 0
Marcos Silva
12/02/2015
Boa dica más não funciona, assim retorna a cor do popupmenu não do Tlabel ou TEdit, tem outra maneira?
Opcao3 é um item de um popupmenu, acho que não ficou claro o meu primeiro exemplo.
Na realidade o que quero é se o Tlabel ou Tedit estiver com a cor azul o código acima não seja executado por exemplo.
O usuário vai clicar no TLabel é se cor X faça se não....
procedure TfrmPrincipal.Opcao3Click(Sender: TObject); var Numero: Integer; Nome : String; Cor : TColor; begin Numero:= ActiveControl.Tag; Nome := Pchar(ActiveControl.Hint); Cor := Tlabel(sender).font.color; end;
Opcao3 é um item de um popupmenu, acho que não ficou claro o meu primeiro exemplo.
Na realidade o que quero é se o Tlabel ou Tedit estiver com a cor azul o código acima não seja executado por exemplo.
O usuário vai clicar no TLabel é se cor X faça se não....
GOSTEI 0
Douglas
12/02/2015
Postei errado. Veja a reposta abaixo.
GOSTEI 0
Douglas
12/02/2015
Boa dica más não funciona, assim retorna a cor do popupmenu não do Tlabel ou TEdit, tem outra maneira?
Opcao3 é um item de um popupmenu, acho que não ficou claro o meu primeiro exemplo.
Na realidade o que quero é se o Tlabel ou Tedit estiver com a cor azul o código acima não seja executado por exemplo.
O usuário vai clicar no TLabel é se cor X faça se não....
procedure TfrmPrincipal.Opcao3Click(Sender: TObject); var Numero: Integer; Nome : String; Cor : TColor; begin Numero:= ActiveControl.Tag; Nome := Pchar(ActiveControl.Hint); Cor := Tlabel(sender).font.color; end;
Opcao3 é um item de um popupmenu, acho que não ficou claro o meu primeiro exemplo.
Na realidade o que quero é se o Tlabel ou Tedit estiver com a cor azul o código acima não seja executado por exemplo.
O usuário vai clicar no TLabel é se cor X faça se não....
Mssilva, então o código que te passei lhe atende. Você teria que pegar a cor de referência e montar a situação.
Exemplo:
procedure TfrmPrincipal.Opcao3Click(Sender: TObject);
var
Numero: Integer;
Nome : String;
Cor : TColor;
begin
Numero:= ActiveControl.Tag;
Nome := Pchar(ActiveControl.Hint);
Cor := Tlabel(sender).font.color;
if cor = clHighlight then
begin
// Faz o que você quer!
end;
end;
GOSTEI 0
Marcos Silva
12/02/2015
Não estou em casa agora assim que chegar testo o código, obrigado pela atenção.
GOSTEI 0
Marcos Silva
12/02/2015
Bom dia, como disse antes o código acima não retorna um valor ou Tcolor, sempre traz Zero '0'.
Tem uma outra ideia?
Tem uma outra ideia?
GOSTEI 0
Douglas
12/02/2015
Bom dia, como disse antes o código acima não retorna um valor ou Tcolor, sempre traz Zero '0'.
Tem uma outra ideia?
Tem uma outra ideia?
Sim, entender o que você quer fazer, pois você disse anteriormente que a rotina teria que funcionar quando: "Opcao3 é um item de um popupmenu, acho que não ficou claro o meu primeiro exemplo. Na realidade o que quero é se o Tlabel ou Tedit estiver com a cor azul o código acima não seja executado por exemplo."
Vejamos se eu entendi, você quer varrer o seu formulário a partir do momento que você clicar na terceira opção do popmenu atrás dos labels ou edits de cor azul para decidir o que fazer, correto?
Se for isso, o código fica da seguinte maneira abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ComponentCount - 1 do
begin
if TLabel(Components[i]) is TLabel then
begin
if TLabel(Components[i]).Font.Color = clRed then
begin
//Faz o que você quer!
end;
end;
end;
end;
GOSTEI 0
Marcos Silva
12/02/2015
Desculpe a demora, esses dias estou na correria além do normal.
Já tinha resolvido com um código parecido, más vou verificar se esse é melhor para a minha necessidade é posto o resultado assim que possível.
Grato pela a sua ajuda.
Já tinha resolvido com um código parecido, más vou verificar se esse é melhor para a minha necessidade é posto o resultado assim que possível.
Grato pela a sua ajuda.
GOSTEI 0