Delphi - Egyedi naptár készítése

forráskód letöltése
Ebben a cikkben egy olyan programot készítünk, ami az aktuális hónapot jeleníti meg a képernyőn. A megjelenítéshez felhasználja a beállított Windows háttérképet. Az ablak tetszőleges helyre mozgatható, az utolsó pozíciót megjegyzi, és a legközelebbi indításkor ugyanott jelenik meg. A naptár kirajzolása a WMPaint eljárásban történik, ami a WM_PAINT esemény bekövetkezésekor fut le, vagyis minden esetben, amikor szükséges az ablak területének frissítése. A kép előállításához létrehozunk egy TBitmap típusú objektumot (bmp). Erre azért van szükség, mert a képet pixelenként fogjuk manipulálni, és ez a Canvas Pixels tömbjén keresztül nagyon lassú lenne.

A PaintDesktop függvénnyel átmásoljuk a Windows háttérkép azon részét a Canvas-ra, amely pont az ablak alatt található. Ez a függvény csak a képet másolja, az ikonokat nem!
  
  PaintDesktop(Canvas.Handle);
Miután megtörtént a háttérkép másolása a Canvas-ra, a Canvas-t átmásoljuk a bmp képre, és ott folytatjuk tovább a rajzolást.


A Form mozgathatóságáról is gondoskodnunk kell, mivel az nem rendelkezik fejléccel. A mozgatáshoz a Form területén történt egér gomb lenyomásakor intézkedünk.
procedure TForm1.WMLButtonDown;
begin
  inherited;
  if Msg.wParam=MK_LBUTTON then begin
    ReleaseCapture;
    Perform(WM_SYSCOMMAND, SC_MOVE+2, 0);
  end;
end;