1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213:
| UNIT SystemColors;
INTERFACE
USES SysUtils, Classes, Types, Windows, Graphics;
TYPE TAllElements =( CTL_MSGBOX, CTL_EDIT, CTL_LISTBOX, CTL_BTN, CTL_DLG, CTL_SCROLLBAR, CTL_STATIC, CTL_MAX, SCROLLBAR, BACKGROUND, ACTIVECAPTION, INACTIVECAPTION, MENU, WINDOW, WINDOWFRAME, MENUTEXT, WINDOWTEXT, CAPTIONTEXT, ACTIVEBORDER, INACTIVEBORDER, APPWORKSPACE, HIGHLIGHT, HIGHLIGHTTEXT, BTNFACE, BTNSHADOW, GRAYTEXT, BTNTEXT, INACTIVECAPTIONTEXT, BTNHIGHLIGHT, DKSHADOW3D, LIGHT3D, INFOTEXT, INFOBK, HOTLIGHT, GRADIENTACTIVECAPTION, GRADIENTINACTIVECAPTION, MENUHILIGHT, MENUBAR);
CONST CAllElements : ARRAY[TAllElements] OF DWORD= ( CTLCOLOR_MSGBOX, CTLCOLOR_EDIT, CTLCOLOR_LISTBOX, CTLCOLOR_BTN, CTLCOLOR_DLG, CTLCOLOR_SCROLLBAR, CTLCOLOR_STATIC, CTLCOLOR_MAX, COLOR_SCROLLBAR, COLOR_BACKGROUND, COLOR_ACTIVECAPTION, COLOR_INACTIVECAPTION, COLOR_MENU, COLOR_WINDOW, COLOR_WINDOWFRAME, COLOR_MENUTEXT, COLOR_WINDOWTEXT, COLOR_CAPTIONTEXT, COLOR_ACTIVEBORDER, COLOR_INACTIVEBORDER, COLOR_APPWORKSPACE, COLOR_HIGHLIGHT, COLOR_HIGHLIGHTTEXT, COLOR_BTNFACE, COLOR_BTNSHADOW, COLOR_GRAYTEXT, COLOR_BTNTEXT, COLOR_INACTIVECAPTIONTEXT, COLOR_BTNHIGHLIGHT, COLOR_3DDKSHADOW, COLOR_3DLIGHT, COLOR_INFOTEXT, COLOR_INFOBK, COLOR_HOTLIGHT, COLOR_GRADIENTACTIVECAPTION, COLOR_GRADIENTINACTIVECAPTION, COLOR_MENUHILIGHT, COLOR_MENUBAR );
TYPE
TElementsArray = ARRAY[TAllElements] OF TColor;
TSystemColors = CLASS(TComponent) PRIVATE PROTECTED FAllElementsCount :WORD; FChangeColor :TAllElements; FActualDisplayedColor :TColor; FallElementsOldColor :TElementsArray; FallElementsNewColor :TElementsArray; FallElementsStore :TElementsArray; FReset :BOOLEAN; PROCEDURE WriteChangeElement(Val:TAllElements); PROCEDURE WriteColor(Val:TColor); PROCEDURE ResetColors(Val:BOOLEAN); PUBLIC CONSTRUCTOR Create(AOwner:TComponent); OVERRIDE; PROCEDURE BeforeDestruction; OVERRIDE; PUBLISHED PROPERTY ColorElement:TAllElements READ FChangeColor WRITE WriteChangeElement; PROPERTY Color:TColor READ FActualDisplayedColor WRITE WriteColor; PROPERTY RESET:BOOLEAN READ FReset WRITE ResetCOlors; PROCEDURE SetColor(Element:TAllElements;Col:TColor); PROCEDURE ReSetColor(Element:TAllElements); PROCEDURE ReSetAll; PROCEDURE Restore; END;
PROCEDURE Register;
IMPLEMENTATION
CONSTRUCTOR TSystemColors.Create(AOwner:TComponent); VAR i : WORD; pos : TAllElements; BEGIN INHERITED Create(AOwner); FAllElementsCount := Length(CAllElements); FOR i := 0 TO FAllElementsCount-1 DO BEGIN pos := TAllElements(i); FallElementsOldColor[pos] := GetSysColor(CAllElements[pos]); FallElementsNewColor[pos] := FallElementsOldColor[pos]; END; FChangeColor := CAPTIONTEXT; FActualDisplayedColor := FallElementsNewColor[FChangeColor]; END;
PROCEDURE TSystemColors.BeforeDestruction; BEGIN ResetAll; INHERITED; END;
PROCEDURE TSystemColors.ResetColors(Val:BOOLEAN); BEGIN IF Val THEN BEGIN ReSetAll; FallElementsNewColor := FallElementsOldColor; FActualDisplayedColor := FallElementsOldColor[FChangeColor]; END; FReset := FALSE; END;
PROCEDURE TSystemColors.WriteChangeElement(Val:TAllElements); BEGIN FChangeColor := Val; FActualDisplayedColor := FallElementsNewColor[FChangeColor]; END;
PROCEDURE TSystemColors.WriteColor(Val:TColor); BEGIN FActualDisplayedColor := Val; FallElementsNewColor[FChangeColor] := Val; FallElementsStore[FChangeColor] := Val; SetSysColors(1,CAllElements[FChangeColor],FallElementsNewColor[FChangeColor]); END;
PROCEDURE TSystemColors.SetColor(Element:TAllElements;Col:TColor); BEGIN WriteChangeElement(Element); WriteColor(Col); END;
PROCEDURE TSystemColors.ReSetColor(Element:TAllElements); BEGIN SetColor(Element,FallElementsOldColor[ColorElement]) END;
PROCEDURE TSystemColors.ReSetAll; BEGIN FallElementsStore := FallElementsNewColor; SetSysColors(FAllElementsCount, CAllElements, FallElementsOldColor); END;
PROCEDURE TSystemColors.Restore; BEGIN FallElementsNewColor := FallElementsStore; SetSysColors(FAllElementsCount, CAllElements, FallElementsNewColor); END;
PROCEDURE Register; BEGIN RegisterComponents('Eigene Komponeneten', [TSystemColors]); END;
END. |