[ Pobierz całość w formacie PDF ]
.pas';end.ModuÅ‚y rejestracyjnePodobnie jak komponenty VCL, także komponenty CLX zawarte w pakietach Å›rodowiskowych wymagajÄ…rejestracji.RejestracjÄ™ tÄ™ wykonuje procedura Register() zawarta w jednym z modułów wymienionych wdyrektywie contains.Wydruk 13.11 prezentuje kod zródÅ‚owy moduÅ‚u rejestracyjnego QddgSamples_regpakietu QddgSamples_Dsgn rejestracji podlegajÄ… komponenty TddgSpinner, TddgDesignSpinner iTddgImgListSpinner oraz edytorTddgRadioGroupEditor.Wydruk 13.11.ModuÅ‚ rejestracyjny pakietu QddgSamples_Dsgn{==================================================================QddgSamples_RegModuÅ‚ rejestracyjny dla komponentów niebazodanowychCopyright © 2001 by Ray Konopka==================================================================}unit QddgSamples_Reg;interfaceprocedure Register;implementationusesClasses, DesignIntf, DesignEditors, QExtCtrls,QddgSpin, QddgDsnSpn, QddgILSpin,QddgRgpEdt;{=============================}{== procedura rejestracyjna ==}{=============================}procedure Register;begin{== rejestracja komponentów ==}RegisterComponents( 'DDG-CLX',[ TddgSpinner,TddgDesignSpinner,TddgImgListSpinner ] );{== rejestracja edytora komponentu ==}RegisterComponentEditor( TRadioGroup, TddgRadioGroupEditor );end;end.Ikony komponentówNowo stworzonym komponentom można przyporzÄ…dkować ikony identyfikujÄ…ce je w palecie komponentów ikony te muszÄ… być 16-kolorowymi bitmapami o rozmiarze 24×24 piksele.Zgodnie z sugestiami zawartymi wsystemie pomocy Delphi i Kyliksa, należy utworzyć odrÄ™bne zasoby bitmap dla każdego z komponentów.Tymczasem edytor pakietów dla każdego dodawanego do pakietu moduÅ‚u.dcu poszukuje odpowiadajÄ…cego mupliku.dcr nawet wtedy, gdy pakiet jest pakietem wykonywalnym; wspomniane bitmapy nie sÄ… w pakieciewykonywalnym do niczego potrzebne i tylko bezproduktywnie zajmujÄ… miejsce.Tak wiÄ™c, zamiast tworzyć osobne pliki.dcr dla każdego z komponentów, należy raczej utworzyć pojedynczyplik z bitmapami dla wszystkich komponentów w pakiecie.Tak siÄ™ szczęśliwie skÅ‚ada, że pliki zasobowedoÅ‚Ä…czane do wykonywalnych plików Linuksa majÄ… format identyczny z plikami zasobowymi Win32 (mimo iżsame pliki wykonywalne różniÄ… siÄ™ w obydwu tych Å›rodowiskach).Można wiÄ™c, używajÄ…c dowolnego edytorazasobów windowsowych, utworzyć żądany plik.res i zmienić jego rozszerzenie na.dcr.EdycjÄ™ bitmapy dla jednego z opisywanych wczeÅ›niej komponentów przedstawia rysunek 13.9.Rysunek 13.9.Edycja bitmapy zawartej w pliku.dcrZwróć uwagÄ™ na to, iż w obydwu naszych przykÅ‚adowych pakietach Å›rodowiskowych plik.dcr ma takÄ… samÄ…nazwÄ™ jak odpowiedni moduÅ‚ rejestracyjny; umieszczajÄ…c wiÄ™c ten ostatni w pakiecie, automatyczniepowodujemy również doÅ‚Ä…czenie stosownej bitmapy.Dla pakietów wykonywalnych nie istniejÄ… moduÅ‚yrejestracyjne, nie ma wiÄ™c też niepotrzebnych bitmap.Na zakoÅ„czenie jeszcze dobra rada: mimo iż ikona reprezentujÄ…ca komponent w palecie nie ma żadnego wpÅ‚ywuna jego funkcjonowanie, nie można nie doceniać jej znaczenia.Jest ona wizytówkÄ… komponentu i ksztaÅ‚tujepierwsze wyobrażenie o nim; niedbaÅ‚a wizytówka może stwarzać (być może niesÅ‚usznie) wrażenie, iż opatrzonyniÄ… komponent wykonany jest równie niedbale.Jak istotne jest to w przypadku komponentów wykonywanychdla celów komercyjnych, nie trzeba nikogo przekonywać&PodsumowanieNiniejszy rozdziaÅ‚ poÅ›wiÄ™ciliÅ›my pewnemu rzec by można: rozwojowemu aspektowi tworzenia aplikacji ikomponentów w Å›rodowisku typu RAD, mianowicie uwzglÄ™dnieniu przyszÅ‚ej ich migracji na platformy inne niżMS Windows.To wÅ‚aÅ›nie Delphi, jako pierwsze popularne narzÄ™dzie do bÅ‚yskawicznego tworzenia aplikacji,przekroczyÅ‚o zaklÄ™tÄ… granicÄ™ Windows, gdy pod postaciÄ… Kyliksa zaistniaÅ‚o w systemie Linux.Możliwośćtworzenia aplikacji uniwersalnych, akceptowanych zarówno w Delphi, jak i w Kyliksie, pojawiÅ‚a siÄ™ w Delphi 6pod postaciÄ… biblioteki CLX, bÄ™dÄ…cej zestawem komponentów i zrealizowanej na podstawiemiÄ™dzyplatformowych mechanizmów biblioteki Qt.Tworzenie aplikacji miÄ™dzyplatformowych wiąże siÄ™ z pewnymi ograniczeniami w stosunku do aplikacjiopartych na bibliotece VCL; ograniczenia te wynikajÄ… po prostu z braku pewnych mechanizmów Windows winnych systemach operacyjnych, miÄ™dzy innymi w Linuksie, i sÄ… naturalnÄ… cenÄ… pÅ‚aconÄ… za uniwersalność.Nawet podczas tworzenia aplikacji przeznaczonych wyÅ‚Ä…cznie dla Windows warto zdawać sobie sprawÄ™ z faktu,iż (ewentualne) ich przystosowanie do wymogów CLX (w przyszÅ‚oÅ›ci) bÄ™dzie tym Å‚atwiejsze, w im wiÄ™kszymstopniu respektowane bÄ™dÄ… owe ograniczenia.Ów respekt wyrażać siÄ™ powinien przede wszystkim w unikaniu(wszÄ™dzie, gdzie to tylko możliwe i akceptowalne) mechanizmów specyficznych dla Windows główniekomunikatów, których obsÅ‚ugÄ™ należy zastÄ…pić metodami dyspozycyjnymi, oraz bezpoÅ›rednich odwoÅ‚aÅ„ dofunkcji GDI, które powinny ustÄ…pić miejsca odpowiednim metodom płótna.Zaprezentowane w niniejszymrozdziale implementacje przykÅ‚adowych komponentów obfitujÄ… w takie wÅ‚aÅ›nie eliminacje.Jednym z najistotniejszych przejawów uniwersalnoÅ›ci aplikacji miÄ™dzyplatformowej jest akceptowalność jejjedynego kodu zródÅ‚owego na różnych platformach (na razie w Delphi 6 i Kyliksie).W sytuacji, gdy pewnerozwiÄ…zania nie dadzÄ… siÄ™ Å‚atwo zaprogramować w sposób uniwersalny, możliwe jest wydzielenie fragmentówkodu dedykowanych tylko konkretnemu Å›rodowisku; temu celowi sÅ‚użą odpowiednie symbole kompilacjiwarunkowej (na razie MSWINDOWS i LINUX)
[ Pobierz całość w formacie PDF ]