procedure TForm1.Timer1Timer(Sender: TObject); var DC: HDC; color: TColorRef; pont:Tpoint; begin getcursorpos(pont); DC:=GetDC(0); try Color:=GetPixel(DC,pont.x,pont.y); Win32Check(Color<>CLR_INVALID); form1.Color:=color; finally ReleaseDC(0,DC); end; end; Megjegyzés: A form színe egyenlő lesz a kurzor alatti pixel színével A TComponent minden leszármazottja egy CM_MOUSEENTER illetve CM_MOUSELEAVE üzenetet küld amikor az egér belép vagy kilép a komponens keretein. Ahhoz, hogy ezeket az üzeneteket 'elkapjuk' egy üzenetkezelő eljárást kell létrehoznunk. Az alábbi példa egy Formon lévő három címke (Label) és egy jelölőnégyzet (CheckBox) szövegének színét változtatja meg a kurzor belépésekor és kilépésekor. // Fölül kell írni a WndProc eljárást procedure WndProc(var Message : TMessage); override; procedure ChangeColor(Sender : TObject; Msg : Integer); ... procedure TForm1.WndProc(var Message : TMessage); begin // Melyik komponens fölött van a kurzor? // Annak a színe változzon! if Message.LParam = Longint(Label1) then ChangeColor(Label1, Message.Msg); if Message.LParam = Longint(Label2) then ChangeColor(Label2, Message.Msg); if Message.LParam = Longint(Label3) then ChangeColor(Label3, Message.Msg); if Message.LParam = Longint(CheckBox1) then ChangeColor(CheckBox1, Message.Msg); inherited WndProc(Message); end; procedure TForm1.ChangeColor(Sender : TObject; Msg : Integer); Begin // Ha Címke (Label) fölött van a kurzor If Sender Is TLabel Then Begin if (Msg = CM_MOUSELEAVE) then (Sender As TLabel).Font.Color := clWindowText; if (Msg = CM_MOUSEENTER) then (Sender As TLabel).Font.Color := clBlue; End; // Ha CheckBox fölött van a kurzor If Sender Is TCheckBox Then Begin if (Msg = CM_MOUSELEAVE) then (Sender As TCheckBox).Font.Color := clWindowText; if (Msg = CM_MOUSEENTER) then (Sender As TCheckBox).Font.Color := clRed; End; End; A szín megváltoztatása helyett bárilyen más eseményt meg lehet határozni...