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:
Komponenty
Komponenta DelphiX v C++ Builderu 4
23. března 2001, 00.00 | DelphiX jsou vynikající komponenty pro Delphi umožnující snadnější práci s DirectX. Chcete-li je ovšem zprovoznit v prostředí C++ Builder, narazíte na mnohé problémy. Na jaké a jak jim čelit popisuje tento článek.
DephiX je velmi zdařilý soubor komponent pro Delphi, který velmi zjednodušuje práci s rozhraním DirectX.
V C++ Builderu je spoustu způsobů, jak dělat DirectX aplikace.Malé ukázky jsou v příkladech k Builderu (v adresáři Examples/DDraw), ale použití komponenty je jednodušší a mnohem komfortnější, než pachtění s API funkcemi. Proto si myslím, že se najdou jedinci, kteří stejně jako já zatoužili vyzkoušet si DelphiX v C++ Builderu.
DelphiX není odladěn a určen pro C++ Builder, je naprogramován pro Delphi 3,4,5, proto mohou nastat drobné potíže při jeho instalaci.
Ale nic není ztraceno, podařilo se mi jej nainstalovat do C++ Builderu4.
Jak jsem to dokázal a co je k tomu potřeba?
- 1) Nejprve je potřeba stáhnout komponenty z
internetu z http://www.ingjapan.ne.jp/hori/
měli by fungovat poslední dvě verze, to jsou soubory DelphiX2000_0717-2.zip a nebo starší verze DelphiX991024.zip - 2) Teď je potřeba archív rozbalit například do adresáře Components, přitom je pro nás nejdůležitější podadresář Source.
- 3) Z podadresáře Source přehrajeme všechny hlavičkové soubory do adresáře INCLUDE v Builderu.
- 4) Spustíme C++ Builder, zvolíme menu
Component / Instal Component...
A nainstalujeme do nového balíčku (package) Into new package, pojmenujeme ho třeba DX.BPK
- 5) Nyní musíme najít Unit file name (hlavní modul komponenty DXReg.pas) tak, že klepneme na browse a nalistujeme adresář Source a označíme soubor DXReg.pas .... a instalujeme
Jenže teď přijdou ty potíže. První chybová hláška Unable to open spin.res. Velmi jednoduše ošidíme překladač tak, že si bokem najdeme adresář Source a některý ze souborů typu RES přejmenujeme na spin.res, čímž překladač opijeme rohlíkem. Opět rozběhneme instalaci. Až překladač vystřízlivý, přijdou na řadu další problémy (asi tři chyby v hlavičkových souborech).
Nic není ztraceno, stačí jen chybné deklarace přepsat na komentář //(jsou asi 3).
Jistě si říkáte, že takovým zásahem mohou vzniknout chyby a DelphiX nebude fungovat, ale již dva měsíce s DelphiX pracuji a žádné fatální chyby se neprojevily.
No a to je celá věda. Teď již překladač ohlásí několik warnings a komponenty jsou nainstalovány.
V Paletě komponent přibude záložka, když si na ni klepnete zobrazí se vám výběr všech komponent:
Další malý problém. Když kompilátor nenašel soubor spin.res, mi jsme ho nahradili jiným, ten ale nebyl zřejmě kompatibilní s resource C++ Builderu a proto se ikonky korektně nezobrazili. Naštěstí C++ Builder4 zobrazuje nad ikonkami malé nápovědky (Hints). Myslím, že se to dá přestát, přestože orientace v komponentách je poněkud nepřehledná.
Takže DelphiX již máme nainstalované, teď už se můžeme pustit do samotného programování. Co k tomu budeme potřebovat?
Je vám jasné, že jen tak na zelené louce bez vědomostí se nedá nic vytvořit. Proto je dobré mít po ruce help. Má však jednu dost velkou vadu, a to že je psán pro Delphi. Já osobně jsem měl velké problémy pochopit některé konstrukce z objektového pascalu. Další vynikající pomůckou jsou příklady "Samples", ale opět jsou v Pascalu (jak by taky ne :))), přesto se z nich dá něco vyčíst.
Jednoduchý příklad
Teď je konečně čas na první příklad.
1) Spustíme si C++ Builder a založíme nový projekt
2) Do formuláře umístíme komponentu DXDraw a nastavíme Align na alClient
3) uděláme obsluhu události pro formulář (např. Form1) OnPaint a napíšeme následující kód:
DXDraw1->Surface->Fill(250);DXDraw1->Flip();
a můžeme přeložit, nejjednodušší program v DirectX je na světě.
Program zaplní surface (plochu) modrou barvou.
Zkusme program vylepšit. Do formuláře přidejme komponentu DXTimer a nastavme vlastnost Interval na 100.A místo obsluhy OnPaint ve formuláři, ošetřeme událost OnTimer a do těla funkce napište následující kód: static int barva=0;
DXDraw1->Surface->Fill(barva++);
DXDraw1->Flip();
To by myslím pro dnešek stačilo, na jednotlivé komponenty bych se podíval příště.
-
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