Duvidas com TColor

Delphi

22/03/2006

Seguinte, criei um array do tipo TColor: Cores:Array [0..200] of TColor;
Bem, estou usando essa var da seguinte forma

for i:=0 to Forms.ComponentCount-1 do
if Forms.Components[i] is TADMDBEdit then
...
Cores[i]:=TDBEdit(Forms.Components[i]).Color;
...

Esta ocorrendo que ao invés da minha array guradar valores do tipo clBlack, clBtnFace, clWindow, etc, esta recebendo valores tipo -16222177.

o que está acontecendo?


Mrmarcelojr

Mrmarcelojr

Curtidas 1

Respostas

Massuda

Massuda

22/03/2006

Cores como clWhite ou clYellow são valores positivos (na verdade, são o RGB da cor), mas cores como clWindows ou clBtnFace são valores negativos que o Windows interpreta de modo especial; os valores negativos são índices para a tabela de cores do sistema, de modo que, por exemplo, clBtnFace acaba correspondendo a clSilver (acho!).


GOSTEI 0
Mrmarcelojr

Mrmarcelojr

22/03/2006

Ok, mas tem como eu colocar valore como cl.. em meu array? Como eu faço isso, seguindo o exemplo la em cima.


GOSTEI 0
Michael

Michael

22/03/2006

[b:3e281eae84]TColor [/b:3e281eae84]é definido no Delphi como um inteiro. Desta forma é isso que será armazenado na sua array. [b:3e281eae84]clBlack[/b:3e281eae84], [b:3e281eae84]clBlue[/b:3e281eae84], etc são apenas constantes para valores inteiros que representam essas cores. Por isso não há como fazer um typecast da representação numérica de uma cor e obter a constante utilizada.

O que vc pode fazer, para fins de depuração é usar a função [b:3e281eae84]ColorToString[/b:3e281eae84], que vai converter [b:3e281eae84]clBlack [/b:3e281eae84](ou [b:3e281eae84]$000000[/b:3e281eae84]) em ´clBlack´.

[]´s


GOSTEI 0
Gladstone Matos

Gladstone Matos

22/03/2006

Qual biblioteca devo declarar para poder usar o tipo TColor people? ;)
GOSTEI 0
Rafael Bosco

Rafael Bosco

22/03/2006

Qual biblioteca devo declarar para poder usar o tipo TColor people? ;)


Vcl.Forms
GOSTEI 0
POSTAR