Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Delphi
Font ComboBox
delphi_fontcombo
28. května 2001, 00.00 | V dnešním článku si opět povíme něco víc o vlastním kreslení komponenty ComboBox, tentokrát pro výběr písma - FontComboBoxu.
Jelikož byl minulý článek o tvorbě vlastního ComboBoxu celkem úspěšný, ukážeme si dnes další věci, které můžeme právě s komponentou ComboBox dělat. Nejprve si musíme vysvětlit několik funkcí, na které v minulém článku nezbylo místo.
DrawText
Začneme tedy windowsovskou funkcí DrawText. Jak jste jistě všichni poznali, použijeme ji k vypisování textu. Proč ale nezůstaneme u TextOut ? Důvod je prostý - DrawText nám umožňuje kreslení formátovaného textu, s nastavením zarovnání, tabulátorů, zalomení řádků atd., čímž nám velice zlehčuje práci, a my máme čas na lepší věci. Parametry jsou následující -
- hDC - určuje Handle povrchu, na který chceme kreslit
- lpString - text, který chceme kreslit (přesněji pointer na text, tudíž nemůžeme zadat text 'nejaky text', ale pouze proměnnou, ve které máme string uložen)
- nCount - kolik znaků chceme kreslit, pokud zadáme -1, bude se nCount odkazovat na nulový prvek stringu, ve kterém je uložena jeho délka, tudíž se bude kreslit celý
- lpRect - ukazuje na oblast, do které chceme krelit. Pokud text přesahuje tuto oblast, není nakreslen.
- uFormat - typ formátování vůstupu, podrobně popsaný v nápovědě delphi, já zde zmíním pouze pár nejpoužívanějších typů:
- DT_SINGLELINE - jednořádkový text
- DT_BOTTOM - text zarovnaný dolů (pouze u DT_SINGLELINE)
- DT_VCENTER - text zarovnaný na střed svisle (pouze u DT_SINGLELINE)
- DT_TOP - text zarovnaný nahoru (pouze u DT_SINGLELINE)
- DT_LEFT - text zarovnaný doleva
- DT_CENTER - text zarovnaný na střed
- DT_RIGHT - text zarovnaný doprava
- DT_NOPREFIX - normálně je znak za & podrthnut a pokud chceme napsat tento znak, musíme použít &&. Při nastaveném DT_NOPREFIX jsou však tyto znaky normálně vypsány.
To by snad s funkci stačilo, pokud jste něco nepochopili, nezoufejte, určitě to pochopíte z nadcházejícího textu a zdrojového kódu.
DrawFocusRect
Tuto funkci v dnešním programu sice nevyužívám, ale přesto je dobré ji znát. Nakreslí totiž focus kolem obdélníku, jenž je také jejím jediným parametrem. Windows toto kreslí automaticky kolem vybrané komponenty, ale pokud ji překreslíme, musíme použít právě toto. Funkce kreslí operací XOR, tudíž pokud ji zavoláme znovu na stejný obdélník, focus zmizí.
Font ComboBox
V minulém díle to byl color ComboBox, dnes je to Font ComboBox. ComboBox pro výběr písma. Ovšem ne ledajaký, u každého písma uvidíte i vzorek, což výběr velice urychluje. Vzpomeňme třeba na MSOffice 2000:
Právě v Microsoft Office se to různými ComboBoxy přímo hemží, vpomeňte třeba na výber tloušťky a tvaru čáry atd. Tento pro výběr písma má u každé položky ještě ikonku, zde-li se jedná o písmo True Type, nebo jiné a také tři naposledy použitá písma úplně nahoře. To zde nepopisuje, jelikož si sem jist, že to každý zvládne. Ale zpět k našemu. Vytvoříme si nový projekt a na formulář přidáme ComboBox. ItemHeight nastavíme například na 25, Style na csOwnerDrawFixed. Nyní si vytoříme proceduru Form1.OnCreate a do ní přidáme následující kód, který zajistí, aby se to Items přidaly všechny nainstalované fonty.
|
Program můžete spustit a jak vydíte, v ComboBoxu máte opravdu všechna nainstalovaná písma. Jak ale určitě všichni potvrdíte, vybírat písmo pouze podle jména, když nevíte jak vypadá není zrovna pohodlné. Proto si vytvoříme proceduru ComboBox1.OnDrawItem. V ní nejprve otestujeme zda je položka vybraná. To poznáme podle vlastnosti State, která může nabývat hned několika hodnot:
- odSelected - Položka je vybraná
- odGrayed - Položka je zašedlá
- odDisabled - Položka je vypnutá
- odChecked - Položka je zaškrtnutá
- odFocused - Položka má focus
- odDefault - Položka je nastavena jako defaultní
- odComboBoxEdit - Kreslí se edit v ComboBoxu
|
Program můžete spustit a pokud je vše v pořádku, měl by vypadat podobně jako obrázek úplně nahoře.
Je dobré taky nastavit u ComboBoxu vlastnost DropDownCount, která určuje, kolik se zobrazí najednou položek na nějaké větší číslo. Já mám nastaveno 5 jen proto, abych neměl velký obrázek, vhodná volba je někde kolem 10-20 (zase záleží na výšce položky). Na jiné vylepšení již musíte přijít sami, nebo počkat do dalšího článku, kde se opět dozvíte více. Pro dnešek je to vše.
Download
ZDE si můžete stáhnout dnes vytvořený program a jeho zdrojáky (221 kB)
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007