unit uStringToColor;
interface
uses Graphics;
function StringToColor( const color: string ): TColor;
implementation
uses AnsiStrings
, Windows
;
type
TColorTableRecord = record
Text: string;
Code: integer;
end;
const
ColorTable: array [ 0..53 ] of TColorTableRecord =
( ( Text:'clScrollBar'; Code:TColor(clSystemColor or COLOR_SCROLLBAR) )
, ( Text:'clBackground'; Code:TColor(clSystemColor or COLOR_BACKGROUND) )
, ( Text:'clActiveCaption'; Code:TColor(clSystemColor or COLOR_ACTIVECAPTION) )
, ( Text:'clInactiveCaption'; Code:TColor(clSystemColor or COLOR_INACTIVECAPTION) )
, ( Text:'clMenu'; Code:TColor(clSystemColor or COLOR_MENU) )
, ( Text:'clWindow'; Code:TColor(clSystemColor or COLOR_WINDOW) )
, ( Text:'clWindowFrame'; Code:TColor(clSystemColor or COLOR_WINDOWFRAME) )
, ( Text:'clMenuText'; Code:TColor(clSystemColor or COLOR_MENUTEXT) )
, ( Text:'clWindowText'; Code:TColor(clSystemColor or COLOR_WINDOWTEXT) )
, ( Text:'clCaptionText'; Code:TColor(clSystemColor or COLOR_CAPTIONTEXT) )
, ( Text:'clActiveBorder'; Code:TColor(clSystemColor or COLOR_ACTIVEBORDER) )
, ( Text:'clInactiveBorder'; Code:TColor(clSystemColor or COLOR_INACTIVEBORDER) )
, ( Text:'clAppWorkSpace'; Code:TColor(clSystemColor or COLOR_APPWORKSPACE) )
, ( Text:'clHighlight'; Code:TColor(clSystemColor or COLOR_HIGHLIGHT) )
, ( Text:'clHighlightText'; Code:TColor(clSystemColor or COLOR_HIGHLIGHTTEXT) )
, ( Text:'clBtnFace'; Code:TColor(clSystemColor or COLOR_BTNFACE) )
, ( Text:'clBtnShadow'; Code:TColor(clSystemColor or COLOR_BTNSHADOW) )
, ( Text:'clGrayText'; Code:TColor(clSystemColor or COLOR_GRAYTEXT) )
, ( Text:'clBtnText'; Code:TColor(clSystemColor or COLOR_BTNTEXT) )
, ( Text:'clInactiveCaptionText'; Code:TColor(clSystemColor or COLOR_INACTIVECAPTIONTEXT) )
, ( Text:'clBtnHighlight'; Code:TColor(clSystemColor or COLOR_BTNHIGHLIGHT) )
, ( Text:'cl3DDkShadow'; Code:TColor(clSystemColor or COLOR_3DDKSHADOW) )
, ( Text:'cl3DLight'; Code:TColor(clSystemColor or COLOR_3DLIGHT) )
, ( Text:'clInfoText'; Code:TColor(clSystemColor or COLOR_INFOTEXT) )
, ( Text:'clInfoBk'; Code:TColor(clSystemColor or COLOR_INFOBK) )
, ( Text:'clHotLight'; Code:TColor(clSystemColor or COLOR_HOTLIGHT) )
, ( Text:'clGradientActiveCaption'; Code:TColor(clSystemColor or COLOR_GRADIENTACTIVECAPTION) )
, ( Text:'clGradientInactiveCaption'; Code:TColor(clSystemColor or COLOR_GRADIENTINACTIVECAPTION) )
, ( Text:'clMenuHighlight'; Code:TColor(clSystemColor or COLOR_MENUHILIGHT) )
, ( Text:'clMenuBar'; Code:TColor(clSystemColor or COLOR_MENUBAR) )
, ( Text:'clBlack'; Code:TColor($000000) )
, ( Text:'clMaroon'; Code:TColor($000080) )
, ( Text:'clGreen'; Code:TColor($008000) )
, ( Text:'clOlive'; Code:TColor($008080) )
, ( Text:'clNavy'; Code:TColor($800000) )
, ( Text:'clPurple'; Code:TColor($800080) )
, ( Text:'clTeal'; Code:TColor($808000) )
, ( Text:'clGray'; Code:TColor($808080) )
, ( Text:'clSilver'; Code:TColor($C0C0C0) )
, ( Text:'clRed'; Code:TColor($0000FF) )
, ( Text:'clLime'; Code:TColor($00FF00) )
, ( Text:'clYellow'; Code:TColor($00FFFF) )
, ( Text:'clBlue'; Code:TColor($FF0000) )
, ( Text:'clFuchsia'; Code:TColor($FF00FF) )
, ( Text:'clAqua'; Code:TColor($FFFF00) )
, ( Text:'clLtGray'; Code:TColor($C0C0C0) )
, ( Text:'clDkGray'; Code:TColor($808080) )
, ( Text:'clWhite'; Code:TColor($FFFFFF) )
, ( Text:'clMoneyGreen'; Code:TColor($C0DCC0) )
, ( Text:'clSkyBlue'; Code:TColor($F0CAA6) )
, ( Text:'clCream'; Code:TColor($F0FBFF) )
, ( Text:'clMedGray'; Code:TColor($A4A0A0) )
, ( Text:'clNone'; Code:TColor($1FFFFFFF) )
, ( Text:'clDefault'; Code:TColor($20000000) )
);
function StringToColor( const color: string ): TColor;
var
x: integer;
res: Dword;
begin
for x := Low(ColorTable) to High(ColorTable) do
if CompareText( ColorTable[x].Text, color ) = 0 then begin
res := ColorTable[x].Code;
if clSystemColor and res = clSystemColor then
result := Windows.GetSysColor( res and $FFFFFF )
else
result := TColor(res);
Exit;
end;
// if we do not exit the function within the for loop then raise an exception
// or do a MessageDlg, ShowMessage or something to indicate invalid color.
end;
end.