Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
C++ Buider 5.
Ta dugo oczekiwana ksika, omawiajca pit ju wersj C++Buildera, nie jest jak
w przypadku wielu innych pozycji powiconych narzdziom programistycznym
typow prezentacj moliwoci rodowiska projektowego i jzyka C++. Poszczeglne
jej rozdziay byy bowiem tworzone nie przez twrcw, ale przez uytkownikw
C++Buildera dziki czemu cao nabiera niecodzienny charakteru kompendium
wiedzy praktycznej, bazujcej na niejednokrotnie wieloletnich dowiadczeniach
programistycznych. Zawarto tomu drugiego stanowi naturalne uzupenienie treci
tomu pierwszego, lecz dziki specyficznemu charakterowi ksiki tom ten jest
samodzieln, penowartociow pozycj, od ktrej mona rozpocz lektur caoci.
Ksika ta obejmuje szeroki zakres zagadnie zwizanych z zaawansowanymi
moliwociami pitej wersji C++Buildera. W kolejnych rozdziaach znajduj si
omwienia i przykady prezentujce wykorzystanie komponentw Interbase Express,
ADOExpress, InternetExpress i wielu innych. Dziki tej ksice wzbogacisz swoj wiedz
o tworzeniu aplikacji z wykorzystaniem architektur CORBA, COM, COM+. Zaawansowani
programici odsoni przed Tob tajniki programowania rozproszonych aplikacji
internetowych, biurowych i bazodanowych.
Wyeliminuj bdy powodujce niekontrolowane wycieki pamici oraz przechwytuj
szczegowe informacje o bdach i wyjtkach wystpujcych w czasie dziaania
programu
Rozszerz swoje umiejtnoci projektowania i implementowania
wielowarstwowych aplikacji bazodanowych opartych na technologii MIDAS
Wykorzystaj w swoich programach bogate moliwoci aplikacji pakietu Microsoft
Office
Poznaj techniki programowania rozproszonego z wykorzystaniem architektur
COM, COM+ i CORBA
Wzboga tworzone strony WWW o obiekty i formularze oparte na technologii
ActiveX
Wykorzystaj w peni moliwoci prezentacji danych i drukowania dokumentw,
oferowane przez rodowisko graficzne systemu Windows
Profesjonalnie projektuj i dystrybuuj wasne zestawy komponentw.
"
"
"
"
"
"
"
O Autorach .................................................................................................................19
Wprowadzenie ............................................................................................................29
Przedmowa do wydania polskiego ............................................................................33
Rozdzia 1. Projekty i rodowisko zintegrowane programu C++Builder .............37
Wprowadzenie do projektw C++Buildera .......................................................................... 37
Pliki uywane w projektach C++Buildera ...................................................................... 38
Meneder projektw........................................................................................................ 41
Korzystanie z repozytorium obiektw.................................................................................. 42
Wstawianie elementw do repozytorium obiektw........................................................ 42
Wykorzystanie elementw z repozytorium obiektw..................................................... 46
Wspuytkowanie elementw w obrbie projektu ........................................................ 46
Dostosowywanie repozytorium obiektw....................................................................... 47
Tworzenie i dodawanie kreatora do repozytorium obiektw.......................................... 47
Pakiety podstawy i zastosowanie..................................................................................... 50
Uwagi na temat korzystania z pakietw.......................................................................... 53
Pakiety wykonywalne programu C++Builder ................................................................ 54
Program narzdziowy tdump .......................................................................................... 56
Nowe cechy rodowiska zintegrowanego C++Builder 5 ..................................................... 56
Kategorie waciwoci w inspektorze obiektw ............................................................. 56
Obrazki w listach rozwijanych inspektora obiektw ...................................................... 57
Format XML pliku projektu............................................................................................ 61
Formularze zapis w formacie tekstowym .................................................................. 62
Opcje na poziomie wzw ............................................................................................. 64
Nowa lista zada ............................................................................................................. 67
Kreator aplikacji konsolowych ....................................................................................... 70
Podsumowanie ...................................................................................................................... 73
Wskaniki typu smart i kontenery typu strong ..................................................................... 89
Sterta kontra stos ............................................................................................................. 89
Wskaniki........................................................................................................................ 89
Kontenery typu strong (Strong Containers) .................................................................... 93
Puapki............................................................................................................................. 95
Wskaniki smart i kontenery strong podsumowanie ................................................. 96
Implementacja zaawansowanej obsugi wyjtkw (Advanced Exception Handler)............ 96
Przegld strategii ............................................................................................................. 97
Analiza korzyci.............................................................................................................. 97
Wymiana domylnej procedury obsugi wyjtkw......................................................... 98
Dodawanie do klasy informacji specyficznych dla projektu .......................................... 99
Kod rdowy procedury obsugi wyjtkw ................................................................... 99
Zaawansowana obsuga wyjtkw podsumowanie.................................................. 115
Tworzenie aplikacji wielowtkowych ................................................................................ 115
Zrozumie wielozadaniowo....................................................................................... 115
Zrozumie wielowtkowo.......................................................................................... 116
Tworzenie wtku za pomoc wywoa API ................................................................. 116
Obiekt TThread ............................................................................................................. 119
Gwny wtek VCL ...................................................................................................... 123
Ustalanie priorytetw .................................................................................................... 125
Pomiar czasu wykonania wtkw ................................................................................. 128
Synchronizacja wtkw ................................................................................................ 129
Wprowadzenie do wzorcw projektowych......................................................................... 133
Powtarzalna natura wzorcw ........................................................................................ 133
Wzorce w projektowaniu oprogramowania .................................................................. 134
Wzorce projektowe jako rdo terminologii ............................................................... 134
Format wzorca projektowego........................................................................................ 135
Klasyfikacja wzorcw projektowych............................................................................ 136
Wzorce projektowe wnioski..................................................................................... 137
Podsumowanie .................................................................................................................... 138
Zarzdzanie transakcjami.............................................................................................. 227
Zdarzenia komponentw ADO ..................................................................................... 227
Tworzenie uniwersalnej aplikacji bazy danych ............................................................ 228
Optymalizacja wydajnoci ............................................................................................ 230
Obsuga bdw............................................................................................................. 231
Aplikacje wielowarstwowe a ADO............................................................................... 232
Komponenty ADO Express podsumowanie ............................................................ 232
Architektury gromadzenia danych...................................................................................... 232
Decyzje wstpne............................................................................................................ 233
Pobieranie danych z wielu rde ................................................................................. 234
Narzdzie Data Module Designer....................................................................................... 236
Modu danych................................................................................................................ 236
Zalety stosowania moduu danych ................................................................................ 237
Moduy danych w aplikacjach, bibliotekach DLL i obiektach rozproszonych ............ 238
Zawarto moduu danych ............................................................................................ 239
Dodawanie waciwoci do moduu danych ................................................................. 240
Obsuga moduu danych................................................................................................ 240
Dla zaawansowanych .................................................................................................... 243
Dziedziczenie klasy formularza w moduach danych................................................... 243
Obsuga nierwnego dziedziczenia klas formularzy i moduw danych...................... 244
Modu danych niezaleny od interfejsu uytkownika................................................... 245
Modu danych a komponenty szkieletowe i komponenty specyficzne dla aplikacji.... 245
Moduy danych w pakietach ......................................................................................... 248
Moduy danych podsumowanie ............................................................................... 248
InterBase Express................................................................................................................ 248
Schemat bazy danych Bug Trackera ............................................................................. 249
Reguy bazy danych ...................................................................................................... 251
Generatory, wyzwalacze i procedury skadowane........................................................ 251
Implementacja programu Bug Tracker ......................................................................... 253
Program Bug Tracker w akcji ....................................................................................... 261
Podsumowanie .................................................................................................................... 262
!
Pasko lub hierarchicznie .............................................................................................. 369
Klient, serwer kto jest kim? ..................................................................................... 370
Object Request Broker .................................................................................................. 370
Podstawowy adapter obiektu......................................................................................... 370
Przenony adapter obiektu ............................................................................................ 370
CORBA kontra COM.................................................................................................... 370
Komponenty VisiBrokera ................................................................................................... 371
Smart agent.................................................................................................................... 371
Demon aktywacji obiektu OAD.................................................................................... 371
Konsola.......................................................................................................................... 372
Jzyk definicji interfejsu IDL ............................................................................................. 372
Sowo kluczowe interface ............................................................................................. 373
Sowo kluczowe attribute.............................................................................................. 373
Metody .......................................................................................................................... 373
Definicje typw ............................................................................................................. 374
Wyjtki .......................................................................................................................... 374
Dziedziczenie ................................................................................................................ 375
Moduy .......................................................................................................................... 375
Co nowego w C++Builderze 5?.......................................................................................... 375
Obsuga CORBA w C++Builderze..................................................................................... 376
Opcje rodowiskowe ..................................................................................................... 377
Opcje programu uruchomieniowego............................................................................. 377
Opcje projektu ............................................................................................................... 378
Kreator serwera CORBA .............................................................................................. 379
Kreator klienta CORBA ................................................................................................ 380
Kreator pliku IDL.......................................................................................................... 380
Kreator implementacji obiektu CORBA....................................................................... 381
Okno aktualizacji projektu ............................................................................................ 381
Kreator uycia obiektu CORBA ................................................................................... 382
Rnice pomidzy wersj czwart a pit C++Buildera .............................................. 383
Modele implementacyjne.................................................................................................... 384
Dziedziczenie proste ..................................................................................................... 385
Dziedziczenie z implementacj wirtualn..................................................................... 385
Model z delegacj (zwizek)......................................................................................... 386
CORBA dla zamonych inaczej...................................................................................... 386
Podsumowanie .................................................................................................................... 386
"
#
Programowanie powoki systemowej (shell)...................................................................... 450
Powoka podstawy ................................................................................................... 450
Odczytywanie zawartoci folderu ................................................................................. 453
Przekazywanie obiektw powoki................................................................................. 455
Podsumowanie .................................................................................................................... 460
$
Programowanie z wykorzystaniem liczb zmiennopozycyjnych......................................... 561
Wiadomoci oglne....................................................................................................... 561
Praca na liczbach........................................................................................................... 562
Dodawanie i odejmowanie............................................................................................ 563
Rozwinite cigi przeksztace ..................................................................................... 566
Porwnywanie danych .................................................................................................. 567
Liczby zmiennopozycyjne uwaga kocowa ............................................................ 567
Tworzenie ekranu tytuowego ............................................................................................ 567
Funkcja WinMain() ....................................................................................................... 568
Tworzenie ekranu tytuowego....................................................................................... 569
Zapobieganie uruchamianiu wicej ni jednego egzemplarza aplikacji ............................ 571
Rozwizanie problemu.................................................................................................. 571
Objanienie kodu........................................................................................................... 572
Podsumowanie .............................................................................................................. 576
Praca w trybie przecignij i upu................................................................................... 576
Rozwizanie problemu.................................................................................................. 576
Objanienie kodu........................................................................................................... 576
Jak to dziaa? ................................................................................................................. 579
Przecignij i upu podsumowanie.................................................................... 580
Wykonanie zrzutu ekranowego .......................................................................................... 581
W jaki sposb Windows radzi sobie z oknami? ........................................................... 581
Rozwizanie problemu.................................................................................................. 581
Wykonywanie zrzutw ekranowych podsumowanie............................................... 585
Wykorzystanie komponentu TJoyStick .............................................................................. 586
Tworzenie aplikacji podobnej do monitora systemu Windows.......................................... 596
Zasoby systemu Windows............................................................................................. 596
Rozwizanie problemu.................................................................................................. 598
Monitor systemu podsumowanie ............................................................................. 604
Aplikacja Soundex .............................................................................................................. 604
Implementacja ............................................................................................................... 605
Komponenty klasy TTreeView........................................................................................... 611
Podstawy ....................................................................................................................... 612
Dodawanie wzw ....................................................................................................... 612
Piktogramy wzw....................................................................................................... 615
Nawigacja w widoku hierarchicznym........................................................................... 616
Dostp do wzw ......................................................................................................... 617
Wyszukiwanie wzw.................................................................................................. 618
Wywietlanie liczby wzw podrzdnych................................................................... 620
Przemieszczanie wzw w hierarchii .......................................................................... 621
Przeciganie i opuszczanie wzw .............................................................................. 622
Modyfikacje wzw ..................................................................................................... 624
Usuwanie wza............................................................................................................. 626
Wycofywanie i zatwierdzanie operacji usuwania......................................................... 627
Zapisanie zawartoci drzewa w pliku ........................................................................... 630
Komponenty zestawu TTree podsumowanie........................................................... 631
%
Integracja C++Buildera z pakietem Microsoft Office daje moliwo konstruowania rnorodnych przydatnych aplikacji od prostych programw uytkowych pomocnych
w wypenianiu codziennych obowizkw biurowych po rozbudowane zestawy oprogramowania wykorzystujce pakiet Microsoft Office jako kolekcj przydatnych komponentw edycyjnych i kalkulacyjnych. W rozdziale zostan przedstawione przesanki integrowania tworzonych aplikacji z pakietem Office i sposoby realizacji tego zadania.
Integracja wasnych aplikacji z pakietem Microsoft Office daje nastpujce korzyci:
1. Dostp do uznanych programw i interfejsw rozszerzajcych moliwoci naszych
wasnych aplikacji.
Jeli chcesz udostpni uytkownikom arkusz kalkulacyjny lub edytor tekstw
jako cz swojego programu, nie musisz ju sam tworzy lub zdobywa
odpowiednich komponentw. Uytkownicy Twojego programu doceni wygod
tego rozwizania, pracujc z dobrze znanymi sobie aplikacjami.
2. Dostp do popularnych formatw dokumentw.
Nie zajmuj si ju formatami plikw dokumentw. Zamiast szuka niezbdnych
informacji dotyczcych sposobu czytania i zapisywania powszechnie stosowanych
plikw, zrb uytek z ju istniejcego kodu, ktry to potrafi. Zastosuj go
w swojej aplikacji.
3. Automatyzacja zada.
Jeli kiedykolwiek musiae wykona t sam operacj na wielu dokumentach, wiesz,
jak wiele wysiku trzeba woy w wykonanie zadania, otwarcie nastpnego
pliku, wykonanie zadania, otwarcie nastpnego pliku... Dziki automatyzacji
moemy przygotowa dan operacj, wybra pliki do przetwarzania
i uruchomi cao.
Wykorzystanie obiektu
to najatwiejszy sposb integracji pakietu Office
z utworzon aplikacj. Utwrz now aplikacj i umie w niej (na rodku formularza
gwnego) egzemplarz komponentu
(zakadka System) . Rozszerz go tak,
aby pozosta okoo 50-punktowy margines z wszystkich czterech stron elementu.
Kliknij teraz dwukrotnie obiekt
. Zostanie otwarte okno dialogowe Wstaw
obiekt, ktre powinno wyglda tak, jak na rysunku 8.1.
$
Okno dialogowe
Wstaw obiekt
C++Buildera
Program Word-Excel-PowerPoint
!"#$ %
&
'() !" *+,%
'()+. ! $/0%1
23
23
!"#$ %
&
'() !" 23*/,%
'()+. ! $/0%1
40 4
44
!"#$ %
&
'() !" 40
*/0,%
'()+. ! $/0%1
$%
Kiedy ju wprowadzisz powyszy kod, skompiluj i uruchom program. Tym razem podwjne kliknicie panelu wygeneruje wyjtek
(niedozwolona operacja na pustym panelu). Kliknij przycisk OK, aby wznowi prac.
Zamiast klika w obszarze panelu, sprbuj teraz nacisn jeden z trzech przyciskw
umieszczonych pod nim. Po klikniciu przycisku Excel lub Word panel zmieni si
w odpowiedni dokument, a formularz otrzyma pasek narzdziowy odpowiedniej aplikacji (patrz rysunek 8.2).
Arkusz Excela
w programie
OleContainer
Kliknicie przycisku PowerPoint zmienia panel w pusty slajd, ale na formularzu nie
pojawiaj si paski narzdzi ani menu. Dlaczego? Ot PowerPoint zosta zaimplementowany inaczej ni Word i Excel.
$&
$'
Metoda & uywana jest przez C++Builder do uruchomienia procedury lub funkcji
lub do pozyskania lub ustawienia wartoci waciwoci. W celu uzyskania dostpu do
danej funkcji obiektu automatyzacji odwouje si ona do czterech klas:
n #
n $
n $
!
n $
%
Klasa #
uywana jest do okrelenia funkcji, $
! suy do pozyskania wartoci waciwoci itd. Obiekty tych klas powinny by powoane przed ich uyciem w & i musz zosta odwieone za pomoc ich metod '( przed ponownym uyciem. Przyjrzyjmy si temu mechanizmowi, zanim przejdziemy do bardziej
szczegowej analizy kilku aplikacji.
Stwrz now aplikacj, umie na formularzu przycisk, nazwij go )
*+,
i opatrz etykiet Uruchom Worda. Uzupenij kodem z wydruku 8.2 metod
przycisku. Wydruk ten jest dostpny na doczonej do ksiki pycie CD-ROM projekt przykadu automation_objects.bpr znajduje si w folderze AutomationObj.
$
. 0 / . 0 70 8. !" 0 * %0 80 *4 9 %0 *4 5%0 *4 $ . !, . % %1
Ten sam fragment kodu, ale z wykorzystaniem metody & , zawarty jest na wydruku
8.3. Stwrz nowy przycisk o nazwie )
*+,
&, opatrz go etykiet Uruchom Worda (Exec) i uzupenij jego metod
kodem zamieszczonym na wydruku 8.3.
Program
LaunchWord
w czasie dziaania
Pozostao nam ju tylko sprawdzi, czy plik nagwkowy utilcls.h jest wczony do
programu. Uywanie obiektw zmiennego typu w automatyzacji powoduje powoanie
egzemplarza klasy
'(, zdefiniowanej wanie w pliku utilcls.h. Dopisujc wic
w jednym z plikw nagwkowych lini
=
<
*/)
$(
unikniesz ewentualnych problemw. Skompiluj i uruchom program. Kiedy pojawi si
formularz, kliknij przycisk Uruchom Worda (Exec). Spowoduje to uruchomienie nowej kopii programu Word (niezalenie od tego, czy jest ju uruchomiony jaki egzemplarz programu Word) z pustym dokumentem, czy te nie.
$
"
Zgodnie z nazw, kolekcja (ang. collection) uywana jest w programie Word do przechowywania grup obiektw. Kada kolekcja posiada dwa kluczowe elementy: waciwo
oraz metod .. Waciwo
informuje, ile obiektw przechowywanych
jest w kolekcji, a metoda . pozwala pobra z kolekcji referencj do danego elementu,
przez okrelenie jego numeru lub nazwy (jeli obiekt takow posiada). Niektre kolekcje posiadaj te inne metody i waciwoci zwikszajce ich moliwoci. Znakomitym przykadem jest kolekcja /
(, ktra udostpnia metod tworzc nowy dokument.
$)
&
B
C0
D!
"
7
5
()E73 !
"
@7,:@,EF
EGB2HHH%1
1
0 *4 $ .
!, .
% %1
Skompiluj i uruchom program, a kiedy pojawi si jego formularz gwny, kliknij przycisk Uruchom Worda. Jeli w tle uruchomiony jest program Word, nic si nie wydarzy
(nie dziaamy jeszcze w aden sposb na obiekcie aplikacji). Jeli jednak Word nie jest
uruchomiony, w momencie wygenerowania wyjtku C++Builder zatrzyma program
i poinformuje nas o tym. Zdarzenie to nie wystpi w przypadku uruchamianiu programu
spoza rodowiska uruchomieniowego C++Buildera.
%
Po uruchomieniu kopii programu Word warto zrobi z jego pomoc co poytecznego.
Zobaczmy wic, w jaki sposb przebiega praca z dokumentami programu Word.
Po uzyskaniu interfejsu do aplikacji Worda mamy dostp do jego kolekcji dokumentw.
Jest ona obiektem rzdzcym si wasnymi prawami i zawierajcym waciwoci i metody pozwalajce tworzy, otwiera i zapisywa dokumenty, przeglda zawarto
kolekcji itp.
Obiekt aplikacji udostpnia kolekcj dokumentw w nastpujcy sposb:
80 *4 9 +%-
W celu dodania nowego dokumentu do kolekcji stosujemy metod . Metoda ta
przyjmuje kilka opcjonalnych parametrw pozwalajcych lepiej kontrolowa jej dziaanie.
Do utworzenia zwykego pustego dokumentu wystarczy sama metoda . Tworzenie
nowego dokumentu na podstawie szablonu wymaga przekazania nazwy tego szablonu.
Dodaj nowy przycisk do aplikacji i nazwij go )
*/
. Opatrz go etykiet Nowy Dokument i uzupenij jego metod
kodem zamieszczonym na
wydruku 8.5.
$*
Aktualny wygl,d
programu Launch
Word
Zapisywanie dokumentw jest kolejn czsto wykonywan operacj. Aby zapisa dokument, mona wykorzysta jedn z metod zapisu lub metod %"( dokumentu.
$
Dokument mona zapisa na trzy sposoby: zapisa pojedynczy dokument, zapisa wszystkie
otwarte dokumenty lub zapisa wersj dokumentu. To, ktry sposb zostanie zastosowany, zaley od obiektu bdcego wacicielem metody. Obiekt /
lub (
zapisuje kopi samego siebie, natomiast obiekt /
( zapisuje ca kolekcj otwartych dokumentw.
Zademonstrujemy teraz dziaanie funkcji zapisu. Dodajmy do naszego formularza nowy
przycisk )
*%" etykietowany napisem Zapisz i wypenijmy poniszym kodem (wydruk 8.6) jego metod
.
Zapisywanie dokumentu
'J
$
!"#$ %
&
.
/
/
80 *4 9 5
+%/
*4 $%1
Skompiluj i uruchom aplikacj. Tym razem po uruchomieniu programu Word i utworzeniu nowego dokumentu kliknicie przycisku Zapisz jako spowoduje zapisanie dokumentu pod nazw zdefiniowan w wywoaniu metody %"(.
Metoda %"( przyjmuje wicej parametrw, wic jeli chcesz jej uywa w penej postaci, rozwa bezporednie zastosowanie metody & (
$
jest otoczk
dla metody & ).
Poniewa umiemy ju tworzy i zapisywa dokumenty programu Word, moe przyda
si nam moliwo pniejszego ich otwierania. Suy do tego metoda
kolekcji
(.
1
$$
Otwieranie dokumentu
'J
!"#$ %
&
.
/
80 *4 9 +%/
8*
,KK
"*%1
(%%
Po okreleniu zakresu we wntrzu dokumentu naley uzyska referencj do kolekcji
,
(. Dokonamy tego, odczytujc warto waciwoci ,
( z zakresu objtego aktualnie aktywnym obiektem '.
Bezporednio po zdobyciu referencji do kolekcji ,
( moemy uzyska list sw zawartych w dokumencie. W tym celu utworzymy program pobierajcy aktualnie otwarty
dokument programu Word. Stwrz now aplikacj zawierajc komponent ()
&
(pozostaw niezmienion nazw komponentu) i przycisk o nazwie )
*
,
(,
opatrzony etykiet Wczytaj sowa. Wypenij metod
przycisku kodem prezentowanym na wydruku 8.10.
Przykad ten znajduje si w projekcie example4.bpr, umieszczonym w folderze LoadWords na doczonej do ksiki pycie CD-ROM.
Skompiluj i uruchom aplikacj, nastpnie uruchom program Word. Dopisz kilka przypadkowych sw do nowego dokumentu i kliknij przycisk Wczytaj sowa w swojej aplikacji. Lista powinna wypeni si wprowadzonymi przez Ciebie sowami.
(%&
Kontrolka RichEdit1
wy.wietla zawarto.
tego rozdziau
(%'
$/0E7 S / 7
?!"0
:0
% 1
((4!
0 7
80 *4 9 5
+%((O
:
*4 $%
80 *4 9 $
%H
/2
'() %H
/2
'()38
*4 9 3%1
Tworzenie tabelki
7 08V78M((4!
(%
80 *4 9 5
+% 78*
H7%((O
"
7*4 , .
%N%((0!A
!8 7*4 9 !%!8!*
5, 7, .
% 0,
.
%%-
Powyszy kod pobiera aktualny zakres aktywnego dokumentu i zamyka go tak, e punkt
wstawienia nowych obiektw znajduje si na jego kocu. Pominicie zera lub zastpienie go jedynk zmieni punkt wstawienia na punkt pocztkowy zakresu. Nowy obiekt
dodawany jest do kolekcji (. Zakres jest uywany jako parametr funkcji .
Pokazujemy w ten sposb metodzie dane miejsce wstawienia tabelki nie dodajemy jej bezporednio do zakresu.
Wczeniej wspomniaem, e napiszemy program wstawiajcy do nowego dokumentu sowa
zawarte w innym dokumencie. Programem tym bdzie program Skorowidz (Vocabulary)
(patrz rysunek 8.7). Moesz go znale na pycie CD-ROM doczonej do tej ksiki, w folderze VocabA. Projekt zawierajcy przykad jest opatrzony nazw vocab_proj.bpr.
Program Skorowidz
Program ten aduje dokument Worda, pobiera ca jego zawarto do obiektu klasy
(%' i wydziela z niej sowa, szukajc spacji i innych znakw podziau. Po odnalezieniu sowa umieszcza go w posortowanej licie sw. Z listy tej automatycznie eliminowane
s duplikaty. Nastpnie budowana jest tabelka ta cz programu najbardziej nas interesuje (patrz wydruk 8.13).
Wstawianie sw do tabelki
.! H 6
.
,6
3#!%
&
.
!.
/
7-
(%(
.
/
!.
.
.
778W7 08 !()G()IU'%70 7/
7/
04 G 5 G 5 %-((4 23
((S0
!
/
78*
H7%((4!
"A!
!8/
7*4 9 !%((S0?
0@!A
0
"@@7:?0
:0
/
!8!*
5,/
7, .
% 0I'%,
.
%% 8/
!*
, .
%', .
%'%8/
!*
, .
%', .
%% *4 E 7,%((:!
78 *4 9 H7% 7*23 G 5 <<$:0
XI+
7'()
BIX%/
8'/
08P((0:0
>
0 8N-0 <!()G()-0 II%
&
8/
!*
, .
%/
0,
.
%/
% 78 *4 9 H7%G 5 * 5 7 % 7*23 G 5 <<!()G()$
7Y0 Z%/
II
/
)%
&
/
0II/
8'1
1
1
(%
Teraz zajmiemy si inn aplikacj pakietu Microsoft Office programem Excel. Podobnie jak Word, Excel udostpnia wikszo swoich mechanizmw przetwarzajcych
jako obiekty automatyzacji. I, podobnie jak Word, uywa kolekcji do przechowywania
elementw dokumentu.
Z dowiadczenia w pracy z Wordem i Excelem wiesz, e to bardzo rne w uytkowaniu
programy s take zupenie inne w programowaniu. Na szczcie wiele mechanizmw
programowania w Wordzie dziaa take z Excelem. Nawet jeli pewien mechanizm nie
ma swojego odpowiednika w Excelu, opanowanie jego obsugi nie jest trudne.
%
W Wordzie bazow kolekcj obiektw jest dokument, zawierajcy cay tekst, tabelki,
rysunki itp. W Excelu dokumenty traktowane s inaczej uywa si pojcia skoroszytu (ang. Workbook), ktry moe zawiera arkusze (ang. Worksheets). Arkusze przechowuj tekst, formuy i inne elementy Excela.
Istniej dwa sposoby dostpu do skoroszytw: pobranie z aplikacji kolekcji ,
(
lub odczytanie wartoci waciwoci ",
. Kolekcja ,
( daje dostp
do wszystkich funkcji skoroszytw (dodawanie, otwieranie, zamykanie itd.), natomiast
",
umoliwia kontrol jedynie aktywnego skoroszytu.
(%)
przypisuje kademu nowemu skoroszytowi nazw (Book1, Book2 Zeszyt1, Zeszyt2
w polskiej wersji MS Office), wykorzystywan np. przy pniejszym zapisie skoroszytu
do pliku.
Nowy skoroszyt bdzie utworzony z kilkoma czystymi arkuszami, w zalenoci od wartoci
waciwoci %+(.2,
obiektu aplikacji (patrz wydruk 8.14). Kod rdowy
przykadu znajdziesz w folderze GetExcel na doczonej do ksiki pycie CD-ROM,
w projekcie o nazwie GetExcel_Project.bpr.
Skoroszyt mona zapisa na kilka sposobw; najczstszym sposobem jest wykorzystanie
metod %" i %"(. Metody te s bardzo podobne do swoich odpowiednikw w Wordzie, jednak istnieje midzy nimi subtelna rnica. Poniewa skoroszyty Excela tworzone s wraz z nazwami, mog by zapisane bez pytania uytkownika o nazw pliku.
Metoda %" nie pyta wic o nazw pliku, lecz wykorzystuje ju przypisan nazw.
Dziaanie funkcji %" demonstruje kod z wydruku 8.15.
Funkcja %"( dziaa podobnie do %". W rzeczywistoci funkcja %"( wywoana bez
okrelania dodatkowych parametrw dziaa dokadnie tak samo jak %". Jednake moesz poda parametry okrelajce, w jakim pliku zapisany bdzie dokument. W swej
najprostszej postaci metoda %"( umoliwia zapisanie skoroszytu pod okrelon nazw, zamiast pod nazw domyln dokumentu. Spjrz na wydruk 8.16.
(%*
Umiejtno tworzenia i zapisywania dokumentw nie wystarczy trzeba rwnie
umie otworzy skoroszyt i odzyska wyniki wczeniejszej pracy. Ta operacja rwnie
podobna jest do znanej nam z Worda korzystamy z metody
kolekcji ,
(.
Jeeli znamy nazw dokumentu, jego otwarcie sprowadza si do przekazania tej nazwy
do metody (patrz wydruk 8.17).
Otwieranie skoroszytu
923
!"#$ %
&
.
0 !83*4 9 0 !%4 %
+
7'()23 %%
&
0 !*23 <<+
7'()
B%1
1
Obiekt aplikacji sprawdza, ktry ze skoroszytw jest aktualnie uywany przez program
Excel i udostpnia go jako waciwo ",
. Po uzyskaniu obiektu skoroszytu powiniene wybra jeden z przechowywanych w nim arkuszy (kolekcja ,
(+()
lub pobra arkusz aktywny (waciwo "%+). Jeli arkusz, ktry zamierzasz
uywa, nie jest w danej chwili aktywny, musisz wywoa jego metod ",
aby uaktywni go przed rozpoczciem pracy.
(%
Teraz moemy przystpi do wydobywania informacji z Excela. W tym celu uyjemy
obiektu '. Jest on bardzo uniwersalny i moe zosta wykorzystany do reprezentacji
zbiorw komrek, obejmujcych zarwno cay skoroszyt, jak i pojedyncz komrk.
Wydruk 8.18 zawiera przykad wykorzystania obiektu '.
Naley zwrci uwag na konwencj, zgodnie z ktr Microsoft nazwa rne waciwoci
i obiekty. Wiele referencji do obiektw uzyskuje si, pobierajc warto waciwoci o tej
samej nazwie. Przykadowo, referencja do obiektu ' uzyskiwana jest w wyniku
odczytania waciwoci '. Konstruujc aplikacje zintegrowane z pakietem Office,
powiniene mie wiadomo, jakiego rodzaju obiektem aktualnie operujesz.
Wa.ciwo. Range
((4!
"A?
780 /*4 9 H7%((4!
"A? 5'2[
780 /*4 9 H7, .
%5'2[%((4!
"A"
"?
780 /*4 9 H7, .
%W%-
Program Excel
Zaczynamy
(%$
(&%
A oto inne waciwoci przydatne w procesie formatowania komrek: kolekcja )
(
(brzegi), waciwoci 7'+ (wysoko), ,+ (szeroko) i kolekcja .
(wntrze) Waciwoci te okrelaj styl ramek otaczajcych komrki, wielko komrek, ich
kolor i wzr wypenienia.
zamiast
$
!.
Metoda ta dziaa nie tylko w odniesieniu do wartoci komrki, ale take jej formuy,
wic moesz z jej pomoc pozyskiwa informacje o sposobie obliczania komrki.
Zakadka Servers
palety komponentw
C++Buildera
Po chwili zostanie wywietlona lista dostpnych metod i waciwoci (patrz rysunek 8.10).
(&&
Wa.ciwo.ci i metody
komponentu
WordApplication
,-
.
Bardziej zasadna od przepisywania caego kodu programu Skorowidz byaby aktualizacja
tych jego czci, ktre dotycz wsppracy z programem Microsoft Word. Zaczniemy od
kodu uruchamiajcego Worda, a nastpnie przyjrzymy si metodom wydobywania tekstu
z dokumentw, tworzenia nowych dokumentw oraz wprowadzania do nich tekstu.
(&'
Projekt zawierajcy omawiany przykad (vocab_proj.bpr) znajduje si w folderze VocabB
na pycie CD-ROM doczonej do ksiki.
Pierwszym zadaniem bdzie nawizanie poczenia z Wordem i przejcie nad nim kontroli. Wczeniej naleao sprawdzi, czy istnieje uruchomiony egzemplarz programu
Word, a jeli nie uruchomi go. Tym razem, dziki wykorzystaniu metody
,
moemy zaoszczdzi kilka linii kodu. Na wydruku 8.20 zamieszczony jest kod uruchamiajcy i wywietlajcy interfejs programu Word.
Jak wida, kod jest podobny do tego z pierwotnego programu Skorowidz, z tym e jest
nieco prostszy i przejrzystszy. Gdyby omin fragment kodu zwizany z obsug wyjtku
(nie zalecam), cay kod zmieciby si w dwch linijkach.
Wspominaem ju, e kontrola nad programem Word uzyskiwana jest za porednictwem metody
. To jedna z podstawowych metod dostpnych w klasach
pochodnych klasy
%". Wyszukuje ona kopi odpowiedniego serwera automatyzacji OLE i uzyskuje dostp do istniejcego serwera lub w razie niepowodzenia tworzy jego now instancj.
Pojawienie si okna programu byo spowodowane przypisaniem odpowiedniej wartoci
do waciwoci (. Jak wida w tym przykadzie, w przeciwiestwie do mechanizmw OleAutomation, waciwoci obiektw klasy
%" s dostpne bez porednictwa metod w rodzaju
$
% .
(&
Na pierwszy rzut oka stwierdzimy podobiestwo powyszego kodu do tego w oryginalnej wersji programu Skorowidz. Gwn zmian jest to, e nie wykonujemy ju tak
wielu czynnoci porednich. Zamiast kilku obiektw
przechowujcych rne zmienne tymczasowe, uywamy tylko trzech zmiennych.
(&(
Bardziej przejrzysty jest rwnie kod sucy do pobierania tekstu z dokumentu. Wikszo powyszego wydruku zajmuje kod sucy do manipulowania list sw, natomiast
poprzednio wikszo kodu obsugiwaa sterowanie Wordem.
Operacja adowania dokumentu jest teraz zawarta w pojedynczej linii kodu:
+'() 5
'()+()
B%%-
Mimo e wywoanie to obejmuje w rzeczywistoci kilka linii kodu, jest ono do przejrzyste. Kolekcj /
( otrzymujemy bezporednio z komponentu ,
,
a nastpnie uywamy metody
kolekcji do otwarcia dokumentu. Po zaadowaniu
pliku przekazujemy rezultat wywoania do metody
, uzyskujc dostp do zawartoci dokumentu.
Moglibymy rozbi t lini na kilka etapw. Mechanizm uzupeniania kodu podpowiedziaby nam nazwy rnych struktur i typw przekazywanych pomidzy tymi wywoaniami. Nie
jest to tak proste, jak zastosowanie pozbawionego typw wywoania
, ale
umoliwia uzyskanie szybszego, bezporedniego dostpu do metod i waciwoci.
Po otwarciu dokumentu zaznaczamy jego zawarto i kopiujemy j do bufora tekstowego.
Tak jak poprzednio, musimy wykorzysta obiekt ' do zaznaczenia interesujcego
nas obszaru.
78 +'()H7 24 ,24 %-
(&
Jak widzisz, nie jest to a tak skomplikowane. Warto zaznaczy, e istnieje potrzeba
jawnego wprowadzania znaku nowej linii (8). Podczas pierwszego uruchomienia programu nie wprowadzalimy znakw nowej linii i program wywietla mieszanin sw.
Z pewnoci zauwaysz, e w tej wersji programu nie ma kodu wprowadzajcego sowa do
tabelki. Jest kilka przyczyn pominicia tego fragmentu, jedn z nich bya ch pokazania,
jak proste jest operowanie tekstem w ramach dokumentu po zaniechaniu uywania OleAutomation. Drug przyczyn jest fakt, e wstawianie tabelek do dokumentw z wykorzystaniem komponentu ,
/
nie jest ju tak przejrzyste i proste jak w OleAutomation.
Zestaw funkcji udostepniany przez komponent ,
/
nie jest cakowicie zgodny
z wywoaniami OleAutomation (pomogoby to w konwersji kodu programw). To
jeden z minusw stosowania biblioteki ATL jeeli jej twrcy z premedytacj blokuj
pewne moliwoci, sam nic na to nie poradzisz.
(&)
%". Z ich pomoc moesz bardziej cile integrowa wasne programy z innymi
aplikacjami, dziki czemu otrzymujesz niedostpne wczeniej moliwoci, a Twoje
programy dziaaj szybciej, omijajc kilka warstw dostpu do aplikacji.
Kosztem tych udogodnie jest wiksze obcienie C++Buildera w sensie duszego czasu
kompilacji i wikszych rozmiarw Twoich programw; czasami bardziej cisa integracja
oznacza mniejsz elastyczno programu. Podczas instalacji C++Buildera 5 zostaniesz
poproszony o okrelenie wersji pakietu Office, z ktr bd pracowa komponenty
%
" (Office 97 lub 2000). Moliwe, e uywany przez nas komponent ,
/
jest
zgodny z obiema wersjami MS Office, pewne jest natomiast, e mniej cise zwizki architektury
dziaaj niezalenie od wybranej wersji.
Poznaj swoje narzdzia tak, eby wiedzie, ktre z nich najlepiej odpowiada Twoim
potrzebom. W niektrych sytuacjach zalecane jest wykorzystanie
, ale
istniej zastosowania, w ktrych nic nie zastpi moliwoci biblioteki ATL.
Poniej przedstawione s przykadowe projekty wykorzystujce rne moliwoci programu Word:
n Meneder dokumentw
(&*
n Meneder korespondencj
Integracja z systemem poczty jest czst cech edytorw tekstu, ale edytory te
nie zawsze wsppracuj z wykorzystywanymi przez Ciebie rdami danych i nie
zawsze oferuj wszystkie podane moliwoci. Przejmujc kontrol nad Wordem,
moesz przeszukiwa kady dokument w poszukiwaniu pl do wypenienia.
Moesz przechowywa kopie korespondencji kadego adresata, a nawet prowadzi
audyt umoliwiajcy sprawdzenie, komu, gdzie i jakie dokumenty wysae.
*
Moesz rozszerzy wspprac wasnych aplikacji z Excelem, wprowadzajc do komrek wykresy, dane z bazy danych. Moesz uywa ich do prezentowania i pozyskiwania
informacji.
Przykadowe projekty:
n Analizator dziennika serwera WWW
Oprcz standardowego wykorzystania Outlooka jako programu pocztowego, moe on
take posuy jako harmonogram, lista zada, system przypominajcy jednym sowem asystent osobisty. Jego obiekt aplikacji dostpny jest jako
-
.
(&
W przeciwiestwie do Worda czy Excela, w Outlooku w celu pozyskania interfejsu obiektu
nie stosuje si zazwyczaj kolekcji obiektw, lecz wywouje metody generujce interfejsy.
Wydruk 8.23 zawiera kod tworzcy now wiadomo e-mail w programie Outlook:
!
Access moe si wydawa niezbyt szczliwym kandydatem do integracji. C++Builder
udostpnia lepsz obsug baz danych, a Access cho idealny jako narzdzie szybkiego tworzenia maych aplikacji bazodanowych nie jest szczeglnie niezawodny
czy skalowalny. Nie jest te najczciej uywan czci pakietu Office (poza wersjami
Professional i Small Business).
Pomimo tego C++Builder jest idealnym narzdziem do przenoszenia aplikacji z Accessa do innej bazy danych. Obiekt aplikacji programu Access udostpniany jest w odpowiedzi na danie referencji do obiektu ((-
. Oto kilka propozycji aplikacji zintegrowanych z programem Access:
n Aplikacja odwzorowujca baz danych
Microsoft Project nie jest waciwie skadow pakietu Office, ale udostpnia takie same
moliwoci integracji. Tworzc egzemplarz obiektu aplikacji (
-
, uzyskujesz kolekcje projektw, zasobw, zada itd. Wszystkie one daj si poczy
z innymi aplikacjami za porednictwem C++Buildera.
(&$
"
Aplikacje obsugujce automatyzacj OLE s coraz bardziej popularne. Metody uywane
w odniesieniu do pakietu Office s rwnie przydatne w integracji z innymi programami.
Oto niektre aplikacje umoliwiajce integracj z wykorzystaniem OLE:
n FrontPage (0
'-
),
n Visio ((
-
),
n Internet Explorer (.&
-
),
n Adobe Photoshop ($+
(+
-
),
n Fusion (0(
-
).
('%
Mimo e skupilimy si na Wordzie i Excelu, techniki, jakie poznalimy, mog by
uywane w odniesieniu do wikszoci aplikacji pakietu Office, a take kilku innych
programw umoliwiajcych wykorzystanie dobrodziejstw automatyzacji. Poza metodami opisanymi w tym rozdziale, w celu uzyskania podobnych efektw mona rwnie
wykorzysta alternatywne mechanizmy automatyzacji.
Tworzenie i manipulowanie dokumentami jest uyteczne, ale przede wszystkim daje moliwo wprowadzania i pozyskiwania ich zawartoci, co czyni integracj potnym
narzdziem. Integracja aplikacji z programami pakietu Office wprowadza sporo
komplikacji, ale nie jest bardzo trudna. Temat jest obszerny, poniewa Office to bardzo
rozbudowana kolekcja zoonych programw. Umiejtno uruchomienia aplikacji
i wykonania za jej pomoc prostych zada mona naby szybko i atwo, ale pniej
trzeba jeszcze dugo uczy si sposobw realizacji konkretnych zada z wykorzystaniem programw pakietu Office. Nauka ta moe by rdem wielkiej satysfakcji.
Trzymaj wic pod rk pliki pomocy i miao eksperymentuj. Jeeli nie masz pewnoci
co do dziaania ktrego z polece, zastosuj je. Office szybko da Ci zna, jeli nie bdzie
mg zrealizowa wydawanych przez Ciebie polece.