Array
(
)

Duvidas com TColor

Mrmarcelojr
   - 22 mar 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?


Massuda
   - 22 mar 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!).


Mrmarcelojr
   - 22 mar 2006

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


Michael
   - 22 mar 2006

TColor é definido no Delphi como um inteiro. Desta forma é isso que será armazenado na sua array. clBlack, clBlue, 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 ColorToString, que vai converter clBlack (ou $000000) em ´clBlack´.

[]´s