Delphi - Rendszer controllokkat megrajzoló Windows függvény

forráskód letöltése
A menükben, görgetősávokban, az ablakok fejlécén, illetve egyéb helyeken megjelenő speciális gombokat (pl. CheckBox és RadioButton) egy Windows API függvény segítségével mi is megrajzolhatunk. Ennek a függvénynek a részletes bemutatására kerül sor ebben a cikkben.
DrawFrameControl
function DrawFrameControl(
DC: HDC;
const Rect: TRect;
uType,
uState: UINT
): BOOL;
A speciális control-okat megrajzoló függvény a DrawFrameRect.
Paraméterek
DC: HDC
Annak a Canvas-nak a leírója (Handle), amelyre a rajzolás történik.
const Rect: TRect
A control koordinátáit tartalmazó TRect típusú struktúra.
uType
A control típusa, melyet egy konstanssal adhatunk meg. Az alábbi értékeket használhatjuk:
  • DFC_BUTTON: normál gomb (a gomb típusa az uState paraméterben adható meg);
  • DFC_CAPTION: az ablakok fejlécén megjelenő gomb;
  • DFC_MENU: a menüben megjelenő „képek”;
  • DFC_POPUPMENU: csak Windows’98-tól, felbukkanó menü elem;
  • DFC_SCROLL: görgetősáv elem;
uState: UINT
Ebben a paraméterben adhatjuk meg a Control tulajdonságait. Minden uType értékhez tartoznak egyedi tulajdonságok, melyek más uType értéknél nem használhatók, de vannak közös tulajdonságok is. A tulajdonságok konstansokkal, illetve azok kombinációival adhatók meg. A következő értékek használhatók:
Ha az uType értéke DFC_BUTTON, akkor az alábbi tulajdonságok adhatók meg:
  • DFCS_BUTTON3STATE: A gomb harmadik állapota. Például CheckBox-nál ez a „nem értelmezett” állapot (Grayed = szürkített);
  • DFCS_BUTTONCHECK: a gomb egy CheckBox;
  • DFCS_BUTTONPUSH: nyomógomb;
  • DFCS_BUTTONRADIO: a gomb egy RadioButton;
  • DFCS_BUTTONRADIOIMAGE: RadioButton képe;
  • DFCS_BUTTONRADIOMASK: RadioButton maszkja.
Az uType=DFC_CAPTION mellett használható konstansok (egyszerre csak egy adható meg):
  • DFCS_CAPTIONCLOSE: bezárás gomb (X);
  • DFCS_CAPTIONHELP: súgó gomb (?);
  • DFCS_CAPTIONMAX: maximális méret gomb;
  • DFCS_CAPTIONMIN: kis méret gomb;
  • DFCS_CAPTIONRESTORE: normál méret gomb;
A menükben megjelenő speciális jelek, amelyek az uType paraméter DFC_MENU értéke mellett használhatók:
  • DFCS_MENUARROW: egy balra mutató nyíl, ami az almenüknél szokott megjelenni;
  • DFCS_MENUARROWRIGHT: hasonló az előzőhöz, de jobbra mutató nyíl jelenik meg;
  • DFCS_MENUBULLET: A RadioButton típusú menüpontok előtt megjelenő jel;
  • DFCS_MENUCHECK: a CheckBox típusú menüpontok előtt megjelenő „pipa”;
Ha az uType paraméter értéke DFC_SCROLL, akkor az alábbi tulajdonságok adhatók meg:
  • DFCS_SCROLLCOMBOBOX: a ComboBox gombja;
  • DFCS_SCROLLDOWN: a görgetősáv lefelé gombja;
  • DFCS_SCROLLLEFT: a görgetősáv balra gombja;
  • DFCS_SCROLLRIGHT: a görgetősáv jobbra gombja;
  • DFCS_SCROLLSIZEGRIP: a StatusBar-on is megjelenő átméretező control;
  • DFCS_SCROLLSIZEGRIPRIGHT: ua. mint az előbbi, de ellenkező irányba;
  • DFCS_SCROLLUP: a görgetősáv felfelé gombja;
Az alábbi tulajdonságok általánosan használhatók:
  • DFCS_ADJUSTRECT: ha ezt a tulajdonságot beállítjuk, akkor a Rect paraméterben megadott TRect típusú struktúra mezőinek értékei a megrajzolt control keretének belső részéhez lesznek igazítva;
  • DFCS_CHECKED: a gomb megjelölt állapotban van (pl. CheckBox-nál vagy RadioButton-nál);
  • DFCS_FLAT: a 3D-s keret helyett egy egyszerű keretet rajzol;
  • DFCS_HOT: a HotTracked control-oknál használható (pl. RadioButton). A megjelenítés olyan lesz, mint amikor az egeret a control fölé mozgatjuk;
  • DFCS_INACTIVE: kikapcsolt állapotú (nem engedélyezett);
  • DFCS_MONO: monochrom keret rajzolása (fekete-fehér);
  • DFCS_PUSHED: a gomb benyomott állapotban van;
  • DFCS_TRANSPARENT: a hátteret érintetlenül hagyja.
Visszatérési érték
A függvény visszatérési értéke igaz, ha a control megrajzolása sikeres volt, és hamis, ha nem.