Duvidas com TColor

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

Respostas

22/03/2006

Massuda

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


Responder Citar

22/03/2006

Mrmarcelojr

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


Responder Citar

22/03/2006

Michael

[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


Responder Citar