14 Rozdziae 13id 15545 Nieznany

background image

Rozdział 13

Ostateczne poprawki

Obecnie należy się zatrzymać i spojrzeć wstecz. Powinniśmy dostrzec potrzebę
drobnych zmian, które uczynią program bardziej estetycznym i przyjaznym
w użyciu.

Faza przeglądania projektu po jego skonstruowaniu bywa wykonywana pobieżnie,
bez świadomości jej znaczenia. Ocena programu oczami przyszłego użytkownika
jest przydatna podczas konstruowania aplikacji. Pozwala wydobyć na jaw
problemy związane z jej działaniem Jeśli aplikacja przetrzyma krytyczną autorską
kontrolę, to są duże szanse, że zda również egzamin w normalnym działaniu.

Faza przeglądania jest ważna również dlatego, że pozwala wprowadzić do
programu pewne udogodnienia i rozszerzenia. Takie ulepszenia pozwalają cieszyć
się pracą i czynią trud programisty bardziej przyjemnym.

Ulepszenia, które wprowadzimy w tym rozdziale, to:

„Wyposażenie aplikacji w logo.

„Zmiana tytułu i ikony programu.

„Dodanie systemu pomocy (w tym pomocy kontekstowej).

„Dodanie „dymków” z objaśnieniami.

„Uaktywnienie paska statusu.

„Dodanie okna dialogowego „O programie”.

„Dodanie przycisku umożliwiającego wydruk formularzy (i innych rozszerzeń

usprawniających system).

„Dodanie okien dialogowych do potwierdzania niektórych poleceń.

Po wykonaniu tych poprawek zakończymy pracę, porównując kompletną aplikację
ze specyfikacją sporządzoną we wcześniejszym rozdziale. Sprawdzimy jej
zgodność z

założonymi na początku właściwościami, celowość rozwiązań,

stabilność oraz ogólną funkcjonalność programu.

background image

408

Część II

Dodawanie rysunku do aplikacji

Dodawanie tła do aplikacji Delphi nie jest konieczne. Niektórzy programiści wolą
skonstruować specjalne okno, którego jedynym celem jest wyświetlenie logo.
W naszym przypadku dodamy mapę bitową do głównego okna programu,

fmRSYSMAN0

.

Zanim rysunek zostanie umieszczony na formularzu, musi powstać mapa bitowa.
Można wykorzystać jeden z

rysunków towarzyszących Delphi, Windows

lub innym pakietom, można również sporządzić własny projekt za pomocą
narzędzi typu Image Editor z Delphi. Edytor rysunków dostępny jest z menu

Tools

w folderze Delphi. Rysunki 13.1 i 13.3 prezentują przykłady wykonane przez
autora przy pomocy edytora rysunków Delphi.

Wczytujemy ponownie projekt RENTMAN (jeśli jeszcze tego nie zrobiliśmy)
i otwieramy

fmRSYSMAN0

w wizualnym projektancie formularzy. Wybieramy

środkowy panel i umieszczamy na nim komponent

Image

. Nowy obiekt

nazywamy

imSplash

i ustawiamy jego własność

Aligment

na

alClient

.

Następnie dwukrotnie klikamy na jego właściwości

Picture

i w kolejnym

okienku dialogowym wybieramy przycisk

Load

. Pojawi się następne okno (

Load

),

przy pomocy którego wybieramy mapę bitową i klikamy na opcji

Open

. Po

powrocie do okna

Picture

zatwierdzamy wybór przyciskiem

OK

.

Jeśli rysunek będzie wyświetlany na formularzu, którego wymiary mogą być
zmieniane (tak jak w naszym przypadku), to należy się upewnić, że wielkość
obrazka jest wystarczająca, by mógł wypełnić okno powiększone do pełnego

Rysunek 13.1.
Przy użyciu
narzędzia Delphi
o nazwie Image
Editor można
utworzyć własne,
oryginalne mapy
bitowe, takie jak
przedstawiona
obok.

background image

Rozdział 13 Ostateczne poprawki

409

rozmiaru. W tym celu wystarczy powiększyć okno aplikacji, a następnie przejrzeć
w inspektorze obiektów własności

Height

i

Width

. Można utworzyć lub znaleźć

mapę bitową odpowiadającą tym parametrom.

Innym rozwiązaniem jest rozciągnięcie mapy bitowej do potrzebnej wielkości.
Takie postępowanie nie jest jednak godne polecenia, gdyż zazwyczaj kończy się
zniekształceniem rysunku. Aby rozciągnąć mapę bitową, należy nadać jej
właściwości

Strech

wartość

True

.

Ustawienie właściwości

Strech

na

True

umożliwia dodatkowo pomniejszanie

mapy bitowej, co pozwala podczas dokonywanych zmian na dostosowanie jej
wielkości do rozmiaru okna formularza. Ważne jest, aby sprawdzić poprawny
widok rysunku przy pełnym rozmiarze okna. W przypadku

fmRSYSMAN0

domyślnym rozmiarem formularza jest wielkość maksymalna.

Po prawidłowym wpasowaniu mapy bitowej do formularza, zachowujemy projekt
i uruchamiamy program. Rysunek 13.2. ilustruje widok obrazka umieszczonego na
formularzu podczas pracy programu.

Ustawienie tytułu oraz ikony programu

Możemy teraz określić tytuł oraz ikonę aplikacji. Delphi każdej aplikacji
przyporządkowuje tę samą domyślną ikonę. Takie rozwiązanie jest dopuszczalne,
dopóki tworzymy jedynie podręczne narzędzia, ostatecznie wprowadza jednak
chaos. Ikona aplikacji ma za zadanie umożliwić jej identyfikację jednym rzutem
oka oraz rozróżniać jedne programy od innych.

Rysunek 13.2.
Dodanie rysunku
do głównego okna
aplikacji poprawia
jej wygląd.

background image

410

Część II

Aby przyporządkować aplikacji unikatową ikonę, musimy rozpocząć od wyboru
jakiegoś obrazka. Zarówno Windows, jak i Delphi zawierają całe kolekcje
możliwych do wykorzystania ikon. Możemy również utworzyć własne symbole,
wykorzystując do tego Image editor.

Następnie wybraną ikonkę możemy połączyć z

aplikacją (z

menu

Project

wybieramy pozycję

Option

i klikamy na etykiecie aplikacji), po czym wpisujemy

do okienka tytułu: RENTMAN System, wciskamy przycisk

Load Icon

i wyznaczamy nową ikonę (por. rysunek 13.4).

Ustawiony w ten sposób tytuł będzie wykorzystany w pasku zadań Windows do
identyfikacji naszego programu. Ikona będzie występowała w wielu różnych
miejscach, przede wszystkim tam, gdzie Windows wymaga ikony do
reprezentowania programu. Będzie również obecna na komputerach użytkowników
programu, jeśli w oparciu o

InstalShield

napiszemy program do instalowania

naszej aplikacji.

Rysunek 13.3. Do
zaprojektowania
ikony mającej
reprezentować
aplikację można
wykorzystać Image
Editor z pakietu
Delphi.

Rysunek 13.4.
Do połączenia
ikony z aplikacją
oraz nadania jej
odpowiedniego
tytułu
wykorzystujemy
okno dialogowe
dostępne przy
pomocy opcji:
Project\Options\Ap
plications.

background image

Rozdział 13 Ostateczne poprawki

411

Dodawanie systemu pomocy Windows

Warto (pomimo złożoności tematu i bogatej literatury dotyczącej tworzenia,
dodawania i wykorzystywania) wyposażyć naszą aplikację w system pomocy
Windows wzorem wszystkich profesjonalnych programów.

Narzędzia do tworzenia plików pomocy

Dwa spośród licznych narzędzi warte są wymienienia:

ForeHelp

i

RoboHelp

.

Jeśli mamy zamiar serio zajmować się tworzeniem systemów pomocy, to warto
zainwestować w jeden z nich. Pozwoli to zaoszczędzić wiele godzin mozolnej
pracy. W tej części rozdziału pokażemy tradycyjną metodę tworzenia plików
pomocy.

Podstawowe zagadnienia

Aby budować zbiory pomocy Windows, należy poznać ich składniki. Każdy
kompletny zbiór pomocy zawiera trzy podstawowe pliki: plik projektu (*.HPJ-
help-project file), plik zawierający spis zawartości pomocy (*.CNT- help-contents
file) i plik przechowujący treść zagadnień pomocy (*.RTF- rich-text file). Pierwsze
dwa zbiory są plikami tekstowymi, a trzeci zawiera dane w formacie RTF. Zbiory
formatu RTF można tworzyć przy pomocy wielu edytorów tekstu, w szczególności
programem MS WORD. Wszystkie te pliki (jak również, w razie potrzeby, inne)
muszą być odpowiednio połączone przy pomocy specjalnego kompilatora pomocy
Windows.

UWAGA

Program WordPad, dołączony standardowo do Windows, może odczytywać
i zapisywać pliki w

formacie RTF, ale nie posiada niektórych narzędzi

formatujących, niezbędnych do tworzenia plików pomocy. Ponieważ nie
umożliwia tworzenia przypisów i pisania tekstem ukrytym, nie nadaje się na edytor
tekstu pomocy. Element Delphi o nazwie

TRichEdit

używa tych samych

wewnętrznych sterowników Windows, co Word Pad, więc również nie jest
narzędziem, którym moglibyśmy się tu posłużyć.

Wszystkie trzy wymienione wyżej pliki zawierają specjalne instrukcje sterujące
wyglądem i zachowaniem się wygenerowanego z nich pliku pomocy. Zanim
pojawił się Windows 95 pliki z projektem oraz z zawartością pomocy musiały być
edytowane ręcznie (chyba że wykorzystywano programy narzędziowe nie będące
elementem Windows). Począwszy od Windows 95 Microsoft dostarcza narzędzi

background image

412

Część II

ułatwiających pracę z plikami pomocy. Zestaw nazywa się Microsoft Help
Workshop i jest dostępny w pakiecie Delphi.

Zanim utworzymy pliki projektu i spisu zwartości, musimy napisać plik z tekstem
pomocy. Zbiór powinien zawierać dowolny tekst z pewną liczbą znaków
specjalnych i

specjalnych atrybutów formatujących, które będą określać

zagadnienia pomocy oraz relacje między nimi.

Tekst pomocy jest pogrupowany według zagadnień, przy czym każde z nich
powinno znajdować się na oddzielnej stronie. Znajdujące się w obrębie każdego
tematu znaki przypisów są wykorzystywane do oznaczania tytułu zagadnienia, jego
identyfikatora, kolejności przeglądania oraz hasła indeksu. Specjalne atrybuty
tekstu wyznaczają odwołania (hotspot) łączące ze sobą różne zagadnienia. Tabela
13.1. zawiera wykorzystywane do zarządzania plikiem pomocy znaki specjalne i
atrybuty tekstu.

Tabela 13.1. Znaki specjalne i atrybuty wykorzystywane do tworzenia pliku

pomocy.

Symbol/atrybut Znaczenie
# Określa identyfikator zagadnienia, który jest

wykorzystywany przy każdym odwołaniu się do tematu.

$ Definiuje

tytuł zagadnienia.

K Określa hasło indeksu lub zbiór haseł.

+ Określa miejsce zagadnienia w ustalonej kolejności

przeglądania.

A Definiuje

słowo kluczowe

!

Definiuje miejsce uruchomienia makrodefinicji.

* Określa znacznik do warunkowego wyłączenia lub wyboru

zagadnienia

> Określa typ używanego okna.

@

Wskazuje komentarz do zagadnienia.

Podwójne
podkreślenie

Wyznacza skok do innego tematu (hotspot).

Tekst ukryty

Identyfikuje temat o danym ID- celem przełączenia.

Jedynie pierwsza pozycja- symbol identyfikatora zagadnienia (nazywany również
łańcuchem kontekstowym - ang. context string) jest aktualnie niezbędny do

background image

Rozdział 13 Ostateczne poprawki

413

prawidłowego działania systemu, reszta jest opcjonalna. W praktyce najczęściej są
wykorzystywane pierwsze cztery, czyli: #, $, K, +.

Budowa pliku z tekstem pomocy

Znając przeznaczenie odpowiednich symboli, możemy je odpowiednio
wykorzystać. Rozpoczniemy od utworzenia nowego pliku przy pomocy procesora
tekstu. Edytor musi posiadać możliwość zapisywania plików w formacie RTF,
tworzenia przypisów oznaczonych symbolami użytkownika, podwójnego
podkreślania oraz pisania tekstu ukrytego. Najczęściej wykorzystywanym do tego
celu procesorem jest MS Word, ale można użyć każdego edytora spełniającego
wymienione wymagania.

Utworzymy trzy proste tematy pomocy do programu RENTMAN. Ustanowimy
połączenia między zagadnieniami oraz zdefiniujemy elementy indeksu dla każdego
z nich.

Rozpoczniemy od wprowadzenia następującego tekstu pomocy do pozycji menu-

Log a call

:

Log a call

Wybierając tę opcję wywołasz formularz do opisania zlecenia

związanego z

konserwacją nieruchomości. Wymaga on określenia

nieruchomości, kt

órej dotyczy zlecenie.

Wprowadzanie łańcucha kontekstowego

Umieszczamy kursor bezpośrednio przed słowem Log i wprowadzamy przypis
oznaczony symbolem użytkownika # (W MS Word 7.0 opcja

Wstaw\Przypisy

).

W tym momencie zostanie utworzony identyfikator zagadnienia. Wpisujemy

LogCall

w okienku przeznaczonym na tekst przypisu. Inne zagadnienia, które

powinny być skojarzone z

tym tematem, będą używały tego łańcucha

kontekstowego do ustanowienia połączenia. Można również wykorzystać
identyfikator zagadnienia w programie Windows Workshop; przyporządkowując
go aktualnym numerom pomocy kontekstowej, które mogą być wykorzystywane
przez aplikację.

Wprowadzanie tytułu zagadnienia

Ponownie umieszczamy wskaźnik kursora bezpośrednio przed słowem

Log

i wprowadzamy przypis oznaczony symbolem użytkownika $. W ten sposób
ustanawiamy tytuł zagadnienia. Jako tekst adnotacji wpisujemy

Log a Call

.

Ponieważ Windows pozwala na wyszukiwanie zagadnień przy pomocy tytułów, to
wprowadzenie tytułu do każdego zagadnienia na pewno się opłaca. Tytuł będzie
pojawiał się na liście ostatnio wykorzystywanych tematów pomocy (History list),
w oknie dialogowym do przeszukiwania zagadnień oraz w menu Zakładki.
Zazwyczaj brzmi identycznie jak pierwsza linijka zagadnienia.

background image

414

Część II

Pierwsza linia tekstu zagadnienia powinna być sformatowana, podobnie tytuły
rozdziałów, paragrafów itp. Można wykorzystać większy rozmiar czcionki,
pogrubienie lub inną metodę powodującą, że tytuł będzie odróżniał się od treści
zagadnienia.

Wprowadzanie słów kluczowych

Zdefiniujemy teraz kilka haseł (słów kluczowych) do naszego zagadnienia. W tym
celu, bezpośrednio przed słowem

Log

, umieszczamy przypis oznaczony symbolem

K

, a jako treść adnotacji wpisujemy:

Log a call; Calls, logging;

Calls, entering; Calls, adding

. Powyższa zawartość będzie dostępna

w indeksie plików pomocy, co ułatwi użytkownikowi lokalizację interesującego go
tematu.

Bezpośrednio po definicji zagadnienia umieszczamy znak końca strony (w MS
Word: skrót klawiszowy CTRL+ENTER). Rysunek 13.5. ilustruje skompletowane
zagadnienie pomocy. Zauważmy, że spacje, które Word pozostawia po przypisach,
są usunięte. Warto usuwać te spacje ze względu na kłopoty, jakie, nie wiadomo
czemu, sprawiają kompilatorowi.

Następnym etapem konstruowania przykładu jest sporządzenie stron opisujących
zagadnienie

Property

- jako pomoc do pozycji

Tables

z głównego menu oraz

zagadnienie Work Orders jako pomocy do opcji

Reports

.

Na kolejnej stronie pliku wpisujemy następujący tekst zagadnienia

Property

:

Property

Rysunek 13.5.
Skompletowane
zagadnienie
pomocy „Log
a Call”

background image

Rozdział 13 Ostateczne poprawki

415

Wybierając tę opcję wywołasz formularz do wprowadzania

i

uaktualniania spisu nieruchomości. Aby się dowiedzieć, jak

korzystać z

dziennika zleceń konserwacji, należy przejść do

zagadnienia Log calls.

Podobnie jak poprzednio wprowadzamy łańcuch kontekstowy, tytuł i słowa
kluczowe. Nie należy zapomnieć o

sformatowaniu pierwszego wiersza

zagadnienia. Powinien wyglądać podobnie do pierwszego wiersza zagadnienia

Log a Call

.

Łączenie dwóch zagadnień przy użyciu „skoków” (Hotspot)

Zajmiemy się połączeniem zagadnienia

Property

z

Log a Call

. Ustawiamy

kursor myszy na stronie

Property

, bezpośrednio po prawej stronie (bez spacji)

napisu

Log calls

. Wpisujemy tekst:

LogCall

, zaznaczamy go myszą

i ukrywamy, ustawiając na

True

jego atrybut

Hidden

(w MS Word: opcja

Format\Czcionka

). Teraz zaznaczamy tekst Log calls i podkreślamy go podwójną

linią (w MS Word: atrybut podwójnej opcji

Format\Czcionka\Podkreślenie

). W ten

sposób napis

Log calls

zostanie zmieniony w odwołanie do innego tematu,

łatwe do rozpoznania dzięki doskonale znanemu zielonemu podkreśleniu,
widocznemu po wyświetleniu pomocy przez system Windows. Po kliknięciu przez
użytkownika w obrębie tego tekstu, na ekranie pojawi się właściwe zagadnienie
pliku pomocy.

UWAGA

Skoki do tematów (hotspot) są zazwyczaj identyfikowane dzięki zielonemu
podkreśleniu. Nie jest to jedyne rozwiązanie. Twórca programu może zmienić
zarówno kolory służące do specjalnych celów, jak i atrybuty podkreślenia. Aby
zobaczyć wszystkie skoki dostępne w bieżącym oknie pomocy, należy wcisnąć
kombinację klawiszy CTRL+TAB. Wszystkie miejsca skoków zostaną
wyświetlone w kolorach odwróconych.

Ponieważ każde zagadnienie powinno kończyć się znakiem nowej strony,
wstawiamy go bezpośrednio po tekście naszego nowego tematu.

background image

416

Część II

Ostatnim zagadnieniem pomocy do naszego programu jest Work Orders, który
będzie komentarzem do menu

Reports

. Wprowadźmy następujący tekst:

Work Order Print

Opcja umożliwia wybór oraz drukowanie wykazu prac. Wykaz p

rac

zawiera zestawienie robót koniecznych do wykonania
w

wynajmowanych nieruchomościach. Aby uzyskać więcej

informacji, można przeczytać zagadnienia Property lub Log

a Call.

Tak jak w

przypadku poprzednich tematów uzupełniamy zagadnienie

odpowiednimi przypisami, a następnie przystępujemy do ustawienia połączeń.

Rozpoczniemy od zmiany połączenia z zagadnienia Property; chcemy aby skok,
który tam ustanowiliśmy, nie powodował przejścia do innego zagadnienia, lecz
wyświetlenie go w specjalnym oknie. Jedyną różnicą, dzięki której aktywny tekst
przełącza pomoc do innego zagadnienia lub wyświetla je w oknie pomocniczym,
polega na sposobie podkreślenia odpowiedniego tekstu. Aby spowodować
wyświetlenie wskazanego zagadnienia w oknie pomocniczym, właściwe miejsce
powinno być podkreślone linią pojedynczą, a nie podwójną.

Na stronie Work Order Print umieszczamy kursor bezpośrednio po prawej stronie
(bez spacji) słowa

Property

. Wpisujemy hasło

Property

, zaznaczamy je

i ukrywamy tak, jak w poprzednim przykładzie. Następnie zaznaczamy słowo

Property

i podkreślamy je.

Analogicznie tworzymy połączenie do zagadnienia

Log a Call

, wykorzystując

do tego napis

Log a Call

. Efekt ilustruje rysunek 13.7.

Rysunek 13.6.
Skompletowany
temat pomocy
Property.

background image

Rozdział 13 Ostateczne poprawki

417

Mając skompletowane wszystkie zagadnienia, możemy sporządzić spis treści.

Spis treści pomocy

Kompilator pomocy wymaga, aby spis treści był pierwszym zagadnieniem w pliku.
Dlatego umieszczamy kursor na początku pliku i wstawiamy znak końca strony.
Tworzymy spis treści wpisując:

RENTMAN System Spis treści

Log a Call
Add or update property
Print work orders

Następnie wstawiamy trzy podstawowe przypisy do tematu, używając słowa

Contents

jako słowa kluczowego. Kolejną czynnością będzie ustanowienie

połączeń między tematami pomocy. Skoki na tej stronie mają za zadanie
spowodować przejście do wybranego zagadnienia.

Umieszczamy kursor bezpośrednio po prawej stronie hasła

Log a

Call

i wpisujemy tekst

LogCall

, zaznaczamy go i ukrywamy, a następnie zaznaczamy

hasło

Log a Call

i podkreślamy je podwójną linią. Odpowiednio modyfikując

indeksy, powtarzamy procedurę dla haseł

Add or update property

oraz

Print work orders,

zamieniając wszystkie linie tematu na skoki do

odpowiednich tematów pomocy.

Rysunek 13.8. ilustruje skompletowany spis treści pomocy.

Przed przejściem do tworzenia pliku projektu i spisu zawartości, pozostało jeszcze
ustanowić odpowiednią sekwencję przeglądania. Ustalenie kolejności przeglądania

Rysunek 13.7.
Skompletowany
temat pomocy
Work Order Print.

background image

418

Część II

jest potrzebne, aby móc przechodzić kolejno po wszystkich zagadnieniach
pomocy. System pomocy Windows umożliwia takie przeglądanie po wciśnięciu
klawisza

Przeglądaj

, który można uaktywnić dzięki programowi Help Workshop.

Chociaż można ustawić dowolną liczbę sekwencji przeglądania pliku pomocy, to
(ze względu na prostotę) pozostaniemy przy jednej.

Ustawiamy wskaźnik kursora bezpośrednio po lewej stronie pierwszej linii spisu
treści i wstawiamy przypis, oznaczając go symbolem użytkownika +. Jako treść
adnotacji wpisujemy słowo auto. Taki zapis jest interpretowany przez kompilator
jako zlecenie przyporządkowania zagadnieniu kolejnego numeru sekwencji
przeglądania. Chociaż możemy przyporządkować każdemu tematowi stały numer,
to takie rozwiązanie jest bardziej elastyczne i umożliwia dodawanie kolejnych
zagadnień bez konieczności przebudowy kolejki. Czynność wstawiania przypisu
„auto” powtarzamy dla każdego tematu pomocy.

Budowa pliku zawierającego zagadnienia pomocy jest zakończona. Zachowujemy
go na dysku (upewniając się, że będzie zapisany w formacie RTF ) w głównym
katalogu systemu RENTMAN, nadając mu nazwę

rentman.rtf.

Tworzenie pliku ze spisem zawartości pomocy

We wcześniejszych wersjach Windows programista musiał ręcznie tworzyć plik ze
spisem treści (chyba że korzystał z

narzędzi nie pochodzących z

pakietu

Windows). Zarówno ten plik tekstowy, jak i plik projektu były następnie łączone
z odpowiednim plikiem RTF przy pomocy kompilatora pracującego w systemie
DOS.

Rysunek 13.8.
Skompletowany
spis treści pomocy.

background image

Rozdział 13 Ostateczne poprawki

419

Z chwilą wejścia na rynek Windows 95 Microsoft udostępnił graficzny edytor
o nazwie Help Workshop, przeznaczony do tworzenia dwóch wymienionych
plików tekstowych. Program służy również do kompilacji i testowania plików
pomocy. Narzędzie wchodzi w skład Delphi i można je znaleźć w katalogu

..\Delphi3\Help\tools

. Plik z programem nosi nazwę

HCW.EXE

.

Help Author

Pierwszą czynnością jest włączenie opcji

File\Help Author

. Uruchomienie tej opcji

ma liczne zalety. Po pierwsze, udostępnia wiele dodatkowych informacji
o systemie pomocy (takich jak numer każdego tematu pomocy), które będą
wyświetlane w czasie projektowania. Po drugie, umożliwia korzystanie z pewnych
kombinacji klawiszy do przemieszczania się po pliku pomocy (niezależnie od tego,
czy przycisk

Browse

jest aktywny, czy nie). I tak CTRL+SHIFT+

- pozwala

cofnąć się do poprzedniego zagadnienia, CTRL+SHIFT+

- umożliwia przejście

do następnego zagadnienia, CTRL+SHIFT+HOME przesuwa nas na początek
pliku, a CTRL+SHIFT+END na jego koniec.

Kolejną czynnością jest wybranie opcji

File\New

, po której należy dwukrotnie

kliknąć na opcji

Help Contents

.

Właściwe tworzenie pliku rozpoczynamy od wpisania

.\rentman.hlp

do pola

edycji

Defoult filename

(

and window

). W polu

Default

title

box

wprowadzamy

nazwę

RENTMAN system

. Kolejno wciskamy przycisk

Add Above

- i w okienku

Title

- umieszczamy tytuł: Rentman System Spis treści, a w polu

Topic ID

wpisujemy

Contents

. Nowe ustalenia zachowujemy, wciskając klawisz

OK

.

Następnie wciskamy przycisk

Add Below

, w okienku

Title

umieszczamy tytuł:

Log

a Call

, następnie w polu

Topic ID

wpisujemy

LogCall

i znów zachowujemy

zmiany wciskając klawisz

OK

. Powtarzamy proces dla pozostałych tematów

pomocy.

Po dodaniu ostatniego zagadnienia zapisujemy zbiór na dysku w głównym
katalogu systemu RENTMAN pod nazwą

rentman.cnt

. Listing 13.1. pokazuje

zawartość napisanego właśnie pliku.

Listing 13.1. Wygenerowany przez program Help Workshop plik

spisu zawartości.

:Base .\rentman.hlp
:Title RENTMAN System

1 RENTMAN System Spis treści=Contents

1 Log a Call=LogCall
1 Property=Property
1 Print a work order=WorkOrderPrint

background image

420

Część II

Tworzenie pliku z projektem pomocy

Podobnie jak poprzedni, tak i tworzony właśnie plik, jest zbiorem tekstowym,
który możemy skonfigurować za pomocą programu Help Workshop. Po
prawidłowym utworzeniu pliku będziemy mogli skompilować projekt.

UWAGA

Mimo iż pliki ze spisem treści oraz projektem są zbiorami tekstowymi, które
można tworzyć dowolnym edytorem, to lepiej tego nie robić. Help Menager jest
wyspecjalizowanym narzędziem do zarządzania plikami pomocy i przetwarzanie
inaczej utworzonych zbiorów sprawia czasem problemy. Program ostrzega przed
używaniem zbiorów tworzonych obcymi edytorami.

Wybieramy opcję

File\New

i dwukrotnie klikamy na pozycji

Help Project

. Pierwszą

reakcją programu będzie zachęta do wprowadzenia nazwy projektu. Zmieniamy
katalog na główną kartotekę systemu RENTMAN, wpisujemy

rentman

jako

nazwę pliku i wciskamy przycisk

Save

.

Help Workshop

doda do nazwy zbioru

rozszerzenie

HPJ

.

Dodawanie do projektu plików RTF i CNT

Wciskamy przycisk

Option

, wyznaczamy

Contents

jako domyślny temat pomocy

(

Default topic

) oraz RENTMAN System jako tytuł pomocy, następnie klikamy na

przycisku

Compression

i wybieramy opcję

Maximum

. Kolejno wciskamy przycisk

Files

i w okienku

Rich

Format

Text

(RTF) files wpisujemy

rentman.rtf

,

a w polu

Contents file

wstawiamy

rentman.cnt

. Ostatnią czynnością jest

zamknięcie okna dialogowego przyciskiem

OK

.

Dodawanie do projektu przycisku „Przeglądaj”

Zaczynamy od wciśnięcia przycisku

Windows

, a po wyświetleniu się okna

dialogowego klikamy na przycisku

Add

i wpisujemy

main

w okienku

New

Window

Type

. Nowy typ okna zapisujemy, wciskając klawisz

OK

. Po powrocie do

okienka

Windows Properties

wciskamy przycisk

Buttons

i zaznaczamy przycisk

przełącznika

Browse Buttons

. Dzięki temu, po otwarciu naszego zbioru system

pomocy Windows uaktywni przycisk

Browse

, umożliwiający nawigację po pliku

pomocy zgodnie z ustaloną sekwencją przeglądania. Jeśli teraz wciśniemy przycisk

Macros

, przekonamy się, że Help Workshop dodał makrodefinicję

BrowseButtons()

do listy makr globalnych projektu pomocy. Wciskając

klawisz

OK

zachowujemy zmiany w pliku.

background image

Rozdział 13 Ostateczne poprawki

421

Przyporządkowanie numerów pomocy kontekstowej do identyfikatorów
tematów

Po powrocie do głównego okna

Help WorkShop

klikamy na przycisku

Map

.

Następnie wybieramy

Add

, wpisujemy

Contents

do okienka

Topic ID

oraz

0

w polu numerycznym

Mapped

. Dzięki temu wywołanie pomocy kontekstowej dla

obiektów, którym nie przewidziano obsługi, spowoduje wyświetlenie spisu treści
pomocy. Zapisujemy zmiany wciskając przycisk

OK

.

Aby przyporządkować numer tematowi Log a Call, należy ponownie wcisnąć
przycisk

Add

, dodać identyfikator LogCall pod numerem

100

. Pozostawianie

rozsądnych odstępów między kolejnymi numerami ma za zadanie bezproblemowe
przyporządkowanie pośrednich liczb ewentualnym nowym identyfikatorom.
Powtarzamy procedurę przypisując tematowi Property numer

200

, a Work Order

Print liczbę

300

. Użyte numery są liczbami, które należy wykorzystać w aplikacji

do połączenia odpowiednich obiektów z

systemem pomocy. Numery

wprowadzimy jako wartości własności

HelpContext

odpowiednich

komponentów.

Po zdefiniowaniu, przyporządkowaniu i zapisaniu zmian, jesteśmy gotowi do
skompilowania i przetestowania projektu. Aby skompilować projekt, wciskamy
przycisk

Save and Compile

, znajdujący się w lewym dolnym narożniku ekranu.

Po kompilacji można zająć się testowaniem utworzonego systemu pomocy.

Testowanie pliku pomocy

Działanie pomocy można łatwo skontrolować, nie opuszczając programu Help
WorkShop. W tym celu należy wybrać opcję

File\Run WinHelp

(lub wcisnąć

przycisk ze znakiem zapytania w pasku narzędziowym). Powinno ukazać się okno
dialogowe

View Help File

. Na liście rozwijalnej

Mapped Topic ID

wybieramy

pozycję

Contents

i wciskamy klawisz

OK

. Lista zawierająca identyfikatory

zagadnień, którym przyporządkowano numery pomocy kontekstowej, służy do
symulacji wywołania pomocy kontekstowej do odpowiednich elementów
programu. Należy sprawdzić kolejno wszystkie tematy.

Aby sprawdzić działanie pomocy, należy wybrać opcję

View Help

i otworzyć nowo

utworzony zbiór. Na ekranie powinien ukazać się spis treści (Rysunek 13.9). Jeśli
wybierzemy temat Log a Call, to zobaczymy treść właściwego zagadnienia (por.
rysunek 13.10). Sprawdzamy przechodzenie między tematami, wracając do spisu
treści i wybierając zagadnienie Work Order Print (por. rysunek 13.11). Na koniec
wciskamy przycisk

Contents

, aby zobaczyć, jak sprawdza się w działaniu świeżo

utworzony plik spisu treści.

background image

422

Część II

Rysunek 13.9.
Strona ze spisem
treści nowo
utworzonego pliku
pomocy.

Rysunek 13.10.
Na ekranie treść
zagadnienia Log
a Call.

background image

Rozdział 13 Ostateczne poprawki

423

Połączenie pliku pomocy z aplikacją

Ostatnim i rozstrzygającym o sukcesie krokiem do integracji systemu pomocy
z aplikacją jest połączenie pliku pomocy z programem i odpowiednie ustawienie
działania pomocy kontekstowej.

Opuszczamy Help Workshop i wracamy do Delphi. Przed opuszczeniem programu
możemy wyłączyć konfigurację Help Author. Po przejściu do Delphi i wyborze
przycisku

Application

opcji

Project\Option

zauważymy, że miejsce na nazwę pliku

pomocy jest puste. Wpisujemy

rentman.hlp

i wciskamy OK.

Do wizualnego projektanta formularzy wczytujemy

fmRSYSMAN0

i uruchamiamy

narzędzie do tworzenia menu, dwukrotnie klikając komponent

MainMenu

.

Z menu File wybieramy opcję

Log a Call

i wciskamy klawisz F11, celem przejścia

do inspektora obiektów. Aby przyporządkować opcji przeznaczone jej
zagadnienie, wpisujemy liczbę

100

- jako wartość właściwości

HelpContext

.

Powtarzamy procedurę dla zagadnień Property i WorkOrderPrint, odpowiednio
przyporządkowując im numery

200

i

300

.

Następnie ustawiamy opcję

Contents menu Help

. W tym celu klikamy dwukrotnie

na komponencie

MainMenu

, a następnie, również dwukrotnie, na opcji

Contents

menu

Help

. Przy pomocy edytora kodu Delphi piszemy polecenie:

Application.HelpContext(0);

HelpContext jest metodą wbudowaną w obiekcie Application, odpowiedzialną za
wywołanie programu WinHelp z

tematem o

wskazanym identyfikatorze.

W naszym przypadku wpisaliśmy

0

, co odpowiada spisowi treści.

Rysunek 13.11.
Pomoc na temat
Work Order Print.

background image

424

Część II

Na pasku narzędziowym aplikacji RENTMAN wybieramy przycisk

Help

i przy

pomocy klawisza F11 przełączamy się do inspektora obiektów. Przechodzimy do
strony

Events

i konfigurujemy zdarzenie

OnClick

, przyporządkowując mu

metodę

Contents1Click

zdarzenia

click

pozycji menu-

Contents

. Dzięki

temu wciśnięcie przycisku ze znakiem zapytania będzie skutkowało tak samo, jak
wybranie z menu opcji help.

Po zapisaniu na dysku zmian w projekcie zamykamy Delphi, uruchamiamy
aplikację i sprawdzamy współpracę z programem wszystkich elementów pomocy.

Dodawanie pomocy kontekstowej

Pomoc kontekstowa w Windows 95 dostępna jest poprzez nową ikonę ze znakiem
zapytania, pojawiająca się w paskach tytułu okien dialogowych aplikacji. Aby
dołączyć ten typ podpowiedzi do swojej aplikacji, należy uaktywnić opcję

biHelp

własności

BorderIcons

oraz utworzyć odpowiednie zagadnienia w

pliku pomocy.

Ponieważ mamy już całkowicie skompletowany plik pomocy, wykorzystamy go do
zilustrowania konfiguracji pomocy kontekstowej w aplikacjach Delphi.

Nie ma potrzeby tworzenia nowych zagadnień pomocy do zastosowania przez
pomoc kontekstową, jedyne czynności, jakie należy wykonać to:

„Ustawić na

True

parametr

biHelp

własności

BorderIcon

jednego z

formularzy aplikacji.

„Skonfigurować własność

HelpContxt

formularza, aby wskazywała

odpowiednie zagadnienie pliku pomocy.

Wykorzystamy przykładowo formularz tabelaryczny

fmRPROCGD0

tabeli

PROPERTY. Zaczniemy od otwarcia go w projektancie formularzy i przełączenia
opcji

biHelp

własności

BorderIcon

na

True

. Powinniśmy również wyłączyć

przyciski

biMinimize

oraz

biMaximize

paska tytułu. Następnie klikamy na

komponencie

DBCtrlGrid

i nadajemy jego własności

HelpContext

wartość

200

, przyporządkowaną zagadnieniu PROPERTY. W ten sposób można wywołać

podpowiedź do wszystkich komponentów formularza. Elementy, dla których
parametr

HelpContext

ma wartość

0

, dziedziczą wartość tego parametru od

swoich rodziców.

Po skonfigurowaniu pomocy kontekstowej, uruchamiamy aplikację i sprawdzamy
wyniki swojej pracy. Po wywołaniu właściwego formularza, klikamy na obrazku
ze znakiem zapytania i wybieramy dowolny komponent. W pojawiającym się
wówczas okienku powinna ukazać się treść tematu Property z pliku pomocy (por.
rysunek 13.12).

background image

Rozdział 13 Ostateczne poprawki

425

UWAGA

Konieczność wyłączenia elementów

biMinimize

i

biMaximize

jest podyktowana

ograniczeniami Windows, a nie Delphi. Oznacza to, że pomoc kontekstowa
w Windows została zaprojektowana dla okien modalnych, które normalnie nie
posiadają przycisków „do ikony” i „pełny ekran”.

Dodawanie podpowiedzi w dymkach

Aby dołączyć do formularza dymki z podpowiedziami, wystarcza wykonać dwie
czynności:

„Ustawić na

True

własność

ShowHint

formularza, która domyślnie ma

wartość

False

.

„Określić treść podpowiedzi, które powinny pokazywać się w dymkach przy

określonych komponentach.

Wracamy do Delphi, w projektancie formularzy otwieramy główne okno aplikacji,

fmRSYSMAN0

i przełączamy jego właściwość

ShowHint

na

True

. Następnie

opisujemy odpowiednim tekstem własności

Hint

przycisków na pasku

narzędziowym. Na przykład, w dymku do przycisku

sbLogCall

powinno

znajdować się zdanie: „Wciśnij ten przycisk, aby zobaczyć ostatnie zlecenie
konserwacji”.

Po skonfigurowaniu podpowiedzi do przycisków, zamykamy Delphi
i uruchamiamy aplikację. Po umieszczeniu kursora myszy nad dowolnym
przyciskiem powinniśmy ujrzeć „dymek” wraz z odpowiednim komentarzem.

Istnieje możliwość zmiany sposobu wyświetlania podpowiedzi. Możemy na
przykład spowodować, aby pojawiały się one w linii statusu. W tym celu trzeba
napisać procedurę użytkownika do obsługi podpowiedzi, a następnie przypisać ją
do wbudowanego w obiekcie aplikacji zdarzenia

onShowHint

. Procedura

powinna mieć postać:

procedure(var HintStr:string; var CanShow: Boolean;

var HintInfo: THintInfo) of object;

Rysunek 13.12.
Treść zagadnień
pomocy
wywołanych jako
pomoc
kontekstowa
pojawia się
w oknie
wyskakującym.

background image

426

Część II

Oto prosty przykład procedury, która przeadresowuje miejsce wyświetlania
podpowiedzi do linii statusu:

procedure TfmRSYSMAN0.RMShowHintProc (var HintStr:string;

var CanShow: Boolean; var HintInfo: THintInfo);

begin
stRENTMAN.Panels.Items[0].Text:=HintStr;
CanShow:=False;
end;

Procedurę należy zgłosić w części publicznej klasy

TfmRSYSMAN0

, na przykład:

public

{ Public declarations }

procedure RMShowHintProc (var HintStr:string;

var CanShow: Boolean; var HintInfo: THintInfo);

Ostatnią czynnością jest przypisanie procedury zdarzeniu FormCreate klasy

TfmRSYSMAN0

:

procedure TfmRSYSMAN0.FormCreate( Sender: TObject);
begin
Inherited;
Application.OnShowHint:=RMShowHintProc;
end;

Jest kilka powodów, dla których raczej należy unikać opisanych tu zmian miejsca
wyświetlania podpowiedzi. Aby takie rozwiązanie naprawdę zdało egzamin, trzeba
by uwzględnić inne elementy. Przykładowo: co zrobić z podpowiedzią, gdy nie jest
już potrzebna?

Uaktywnienie paska Statusu

W pierwszej fazie projektowania formularza

fmRSYSMAN0

dodaliśmy do niego

pasek statusu i jak dotąd jeszcze się nim nie zajęliśmy. Powinien wyświetlać trzy
elementy: informację, czym zajmuje się aplikacja, nazwę aktualnego użytkownika
i wersję wykorzystywanego oprogramowania. Wyświetlanie tych trzech
komunikatów na ekranie jest bardzo przydatne (łatwiej jest ustalić wersję
programu, sprawdzić nazwę użytkownika zastosowaną do rejestracji w systemie).

Pierwszy element nie wymaga namysłu. Aby wyświetlić komunikaty statusu,
wystarczy uaktualnić pasek przed i po właściwym zdarzeniu w czasie działania
programu. Aby, na przykład, odświeżyć zawartość linii statusu w związku ze
kliknięciem na pozycji

Log a Call

menu

File

, należy w opisany poniżej sposób

zmodyfikować odpowiednią procedurę. Przed zmianą ma ona postać:

background image

Rozdział 13 Ostateczne poprawki

427

procedure TfmRSYSMAN0.Logacall1Click(Sender: Tobject);
begin
Inherited;
dmRENTMAN

.taCALL.Insert;

fmRCALEDT0.Show;
end;

Ponieważ wcześniej wyznaczyliśmy miejsce interesującego nas teraz komunikatu
po lewej stronie paska, zmieniamy procedurę nadając jej kształt:

procedure TfmRSYSMAN0.Logacall1Click(Sender: Tobject);
begin
Inherited;
try
stRENTMAN.Panels.Items[0].Text:=

’Add

a maintenance call’;

dmRENTMAN

.taCALL.Insert;

fmRCALEDT0.Show;
finally
stRENTMAN.Panels.Items[0].Text:=

’’;

end;
end;

Dodanie identyfikatora aktualnego użytkownika jest równie proste. Wystarczy
pobrać z Windows odpowiednią informację, używając do tego jednego zapytania
API. Aby zmodyfikować program, należy przejść do inspektora obiektów,
dwukrotnie kliknąć na zdarzeniu

OnShow

formularza i przy pomocy edytora kodu

wpisać następujące polecenia :

MaxUserName:=30;
SetLength(UserName,MaxUserName);
GetUserName(Pchar(UserName),

MaxUserName);

SetLength(UserName,Pred(MaxUserName);

stRENTMAN.Panels.Items[1].Text:= ’User: ’+’UserName’;

Należy się upewnić, że w nagłówku modułu RSYSMAN0 znajdują się deklaracje
zmiennych:

UserName: String;
MaxUserName: Integer;

Procedura wykorzystuje funkcję Windows

GetUserName

do pobrania nazwy

aktualnego użytkownika. Zwracany przez funkcję łańcuch zostanie wyświetlony
w odpowiednim miejscu paska statusu.

Trzecim i ostatnim elementem paska statusu jest numer wersji programu. Delphi
jest wyposażony w specjalne narzędzie, umożliwiające współpracę tworzonego
programu z

VERSIONINFO

. Z

poziomu Delphi możemy skonfigurować

informacje o numerze wersji, jaka będzie raportowana przez naszą aplikację. Jak

background image

428

Część II

widać na rysunku 13.13. przy pomocy okna dialogowego Delphi-

Project Option

możemy określić różnorodne elementy zbioru

VERSIONINFO

.

Dodamy do aplikacji kod, który umożliwia wydobycie tych informacji,
i wyświetlenie ich w pasku statusu. Musimy najpierw zlokalizować w inspektorze
obiektów zdarzenie

onCreate

formularza

fmRSYSMAN0

i dwukrotnie na nim

kliknąć. Powinniśmy zobaczyć wprowadzone wcześniej oprogramowanie,
powodujące wyświetlenie komunikatu o nazwie użytkownika, należy do niego
dopisać kod zawarty w listingu 13.2.

Listing 13.2. Kod potrzebny do wydobycia informacji
o aktualnej wersji programu.

VersionSize:=GetFileVersionInfoSize(PChar(Application.ExeName

),Dummy);

If (VersionSize<>0) then begin

SetLength(VersionBuffer,VersionSize);
SetLength(Version,VersionSize);

If (GetFileVersionInfo(PChar(Application.ExeName),

Dummy, VersionSize, PChar(VersionBuffer))) and

(VerQueryValue(PChar(VersionBuffer),'\StringFileInfo\04

0904E4\ProductVersion',Pointer(Version),

VersionSize)) then

stRENTMAN.Panels.Items[2].Text:='Version:

'+Version;

end;

Aby projekt został prawidłowo skompilowany, musimy siê upewniæ, ¿e
w nagłówku metody FormCreate znajduj¹ siê nastêpuj¹ce deklaracje:

var

VersionBuffer, Version : String;

VersionSize : Integer;

Dummy : Integer;

Rysunek 13.13.
Delphi jest
wyposażona
w specjalne
narzędzie
umożliwiające
współpracę
tworzonego
programu
VERSIONINFO.

background image

Rozdział 13 Ostateczne poprawki

429

W celu udostępnienia informacji o wersji programu, kod zawarty w listingu
wykorzystuje trzy funkcje Windows API-

GetFileVersionSize

,

GetFileVersionInfo

i

QuerryValue

-. Po uaktualnieniu dane zostają

wyświetlone w pasku statusu.

UWAGA

Funkcje

GetFileVersionSize

,

GetFileVersionInfo

i

QuerryValue

mają szczególne wymagania: wartość

Pchar

przekazywana do procedury nie

może wskazywać na blok pamięci read-only. Próba przekazywania wartości przez
stałą - kończy się błędem niedozwolonego dostępu (stałe łańcuchowe są
przechowywane w sekcji read-only kodu wykonywalnego). Widocznie funkcje
zmieniają dane wejściowe podczas pobierania wskazanych zasobów.

Aby zobaczyć, jak programy zewnętrzne wykorzystują informacje o naszej
aplikacji zawarte w zbiorze VERSIONINFO, zamykamy program i uruchamiamy
Windows Explorer. Wyszukujemy katalog RENTMAN, prawym klawiszem myszy
klikamy na zbiorze

RENTMAN.EXE

i w menu wybieramy opcję

Property

. Jak

zauważymy, oprócz przycisku

Ogólne

, dostępnego dla wszystkich plików, pojawi

się przycisk

Wersja

. Po jego wciśnięciu można zapoznać się informacjami

o programie wprowadzonymi w Delphi.

Możliwość tworzenia zbioru VERSIONINFO z poziomu IDE jest jeszcze jednym
przykładem, jak głęboko Delphi współpracuje z Windows API. Nie można znaleźć
żadnego elementu Windows API, którego Delphi nie kontroluje.

Dodawanie okna „O programie”

Kolejnym zadaniem z naszej listy życzeń jest dodanie okna „O programie”. Takie
okienko posiada każda szanująca się aplikacja Windows. Służy do dostarczania
takich informacji, jak: nazwiska autorów programu, numer jego wersji, numery
telefoniczne pomocy technicznej itp. Czasami figlarni programiści wciskają do
niego ukryte informacje lub rysunki (powszechnie zwane „jajkami
wielkanocnymi” - formularz „O programie” Delphi 1.0 zawiera ukryty obrazek
Andersa Hejlsberga- głównego architekta Delphi).

WSKAZÓWKA

Aby zobaczyć „pisanki” ukryte w

Delphi, należy wcisnąć klawisz ALT

i wprowadzić tajne hasło: developers team quality. Na ekranie powinna pojawić
się lista z nazwiskami.

background image

430

Część II

Wracamy do Delphi i tworzymy nowy formularz, dziedziczący właściwości
formularza About ze składnicy obiektów (Object Repository). Nadajemy mu
nazwę

fmRABTBOX0

i nagłówek „O programie RENTMAN”. Dwukrotnie

klikamy na formularzu i wpisujemy do procedury obsługi zdarzenia

FormCreate

kod zawarty w listingu 13.3.

Listing 13.3. Obsługa zdarzenia FomCreate formularza „O

programie” wyznacza wartości jego najważniejszych

komponentów.

Procedure TfmRABTBOX0.FormCreate(Sender: Tobject);
var

VersionBuffer, VersionNoText, ProductNameText,

LegalCopyrightText,

CompanyText : String;

VersionSize : Integer;

Dummy : Integer;

begin
inherited;
VersionSize:=GetFileVersionInfoSize(PChar(Application.ExeName),

Dummy);

If (VersionSize<>0) then begin

SetLenght(VersionBuffer,VersionSize);

SetLenght(VersionNoText,VersionSize);

SetLenght(VersionNameText,VersionSize);

SetLenght(LegalCopyrightText,VersionSize);

SetLenght(CompanyText,VersionSize);

If (GetFileVersionInfo(PChar(Application.ExeName), Dummy,

VersionSize,PChar(VersionBuffer))) and

(VerQuerryValue(PChar(VersionBuffer),’\StringFileInfo\

04090E4\ProductVersion’,Pointer(VersionNoText),

VersionSize)) and

VerQuerryValue(PChar(VersionBuffer),’\StringFileInfo\

04090E4\ProductName’,Pointer(ProductNameText),

VersionSize)) and

VerQuerryValue(PChar(VersionBuffer),’\StringFileInfo\

04090E4\LegalCopyright’,Pointer(LegalCopyrightText),

VersionSize)) and

VerQuerryValue(PChar(VersionBuffer),’\StringFileInfo\

04090E4\ProductVersion’,Pointer(CompanyText),

VersionSize)) then begin

Version.Caption:=VersionNoText;

ProductNameCaption:=ProductNameText;

Copyright.Caption:=LegalCopyrightText;

Comments.Caption:=CompanyText;

end;

end;
end;

background image

Rozdział 13 Ostateczne poprawki

431

Podobnie jak oprogramowanie do wyświetlania w pasku statusu informacji
o wersji programu, powyższy kod wykorzystuje do aktualizacji informacji
o specyficznych własnościach aplikacji i wyświetlania ich w oknie „O programie”
zdefiniowany wcześniej zbiór VERSIONINFO

Aby połączyć nowy formularz z głównym oknem aplikacji, wpisujemy następujący
kod do opcji

About

w menu

Help

okienka dialogowego

fmRSYSMAN0.

fmRABTBOX0.ShowModal;

Na koniec wybieramy opcję

File\Use Unit

i w bloku deklaracji

Uses

dodajemy

zapowiedź modułu

RABTBOX0

. Po uruchomieniu aplikacji i wybraniu opcji

About

powinniśmy móc zobaczyć okno „O programie” (por. rysunek 13.14).

Dodawanie przycisku do drukowania formularzy.

Praca będzie przebiegała sprawniej dzięki zawartym w Delphi mechanizmom
dziedziczenia. Zaczniemy od otwarcia w projektancie Delphi protoplasty klasy
formularzy-

fmDataBaseForm

. Umieszczamy na nim komponent

BitBtn

około centymetra po prawej stronie elementu

DBNawigator

. Niech obiekt

nazywa się

bbPrintForm

, a jego nagłówek brzmi Print Form. Kojarzymy

z przyciskiem ikonkę, wpisując do własności

Glyph

adres mapy bitowej

Print.bmp

, która znajduje się podkatalogu ..

\Delphi\Images\Buttons

.

Następnie klikamy dwukrotnie na przycisku i wpisujemy linię kodu:

Print;

Rysunek 13.14.
Nowe okno „O
programie”
wykorzystuje
wcześniej
wprowadzone
informacje o wersji
aplikacji.

background image

432

Część II

Po tym do projektanta wczytujemy formularz

fmRWORMDE0

. Ma on teraz dwa

przyciski drukowania: pierwszy, oznaczony nagłówkiem

Print

, i drugi, z etykietą

Print

Form

. Ponieważ nie potrzebujemy dwóch obiektów spełniających tę samą

funkcję, jeden z nich wyłączymy. Klikamy na przycisku

Print

Form

i ustawiamy

semafor

visible

na

False

. Chociaż nie jesteśmy w

stanie usunąć

dziedziczonego obiektu, to możemy uczynić go niewidzialnym.

Po uruchomieniu aplikacji na wszystkich formularzach powinien znajdować się
przycisk umożliwiający drukowanie.

Dodawanie okien dialogowych do potwierdzania decyzji
o drukowaniu raportów

Ostatnim elementem jest dodanie okien dialogowych do potwierdzania decyzji
o drukowaniu raportów. Jeśli ich nie ma, wybranie raportu z menu lub wciśnięcie
przycisku szybkiego dostępu powoduje uruchomienie procesu tworzenia raportu
bez możliwości wycofania się z decyzji. Profesjonalnie napisane aplikacje nie
mogą tak działać. Każda czynność zabierająca więcej czasu lub mogąca
spowodować trwałe zmiany (potencjalnie destrukcyjna), powinna wymagać
potwierdzenia.

Dodanie okien dialogowych potwierdzających decyzję nie jest skomplikowane. Do
projektanta formularzy wczytujemy

fmRSYSMAN0

i w menu

Report

wybieramy

pozycję

Task List.

W edytorze kodu powinna pojawić się procedura obsługi

zdarzenia

OnClick

. Musimy znaleźć początek procedury i wpisać następujące

polecenie:

If (MessageDlg(

’Czy drukować raport Task List?’,

mtConfirmation, mbYesNoCancel, 0)<>mrYes) then
Exit;

Polecenie wywołuje wbudowaną funkcję

MessageDlg

i pyta, czy raport ma być

wydrukowany. Pierwszy parametr zawiera treść pytania wyświetlanego w oknie,
drugie określa rodzaj wyświetlanego okienka( w tym przypadku typowe żądanie
potwierdzenia decyzji). Trzeci element określa przyciski wyświetlane w okienku,
w tym przypadku

Yes

,

No

i

Cancel

. Ostatni parametr to numer przyporządkowanej

pomocy kontekstowej, tu: spisu treści pomocy.

Zachowujemy aplikację i uruchamiamy program.

Tą samą metodą możemy kontrolować drukowanie wszystkich raportów.
Wystarczy dołączyć podobną linię kodu na początku każdej procedury

OnClick

odpowiedniej pozycji menu, nie zapominając o zmianie treści opisu zapytania.


Wyszukiwarka

Podobne podstrony:
14 rozdzial 13 w2pa42u4da5r3dcm Nieznany (2)
14 rozdzial 13 uglpozcs747q2fnc Nieznany
2009 05 30 14;58;13id 26808 Nieznany (2)
14 RozdziaB 14id 15547 Nieznany (2)
14 rozdzial 14 EZYNFXVHACTX7QNC Nieznany
14 przejscia fazoweid 15265 Nieznany (2)
05 rozdzial 04 nzig3du5fdy5tkt5 Nieznany (2)
28 rozdzial 27 vmxgkzibmm3xcof4 Nieznany (2)
piel 38 1 14 79 id 356923 Nieznany
14 Zmaganie sie z choroba1id 1 Nieznany (2)
22 Rozdzial 21 KP4Q5YBIEV5DBSVC Nieznany (2)
09 08 Rozdzielnice budowlane RB Nieznany (2)
17 rozdzial 16 fq3zy7m2bu2oan6t Nieznany (2)
Kanicki Systemy Rozdzial 10 id Nieznany
14 Prowadzenie roznych kierunko Nieznany (4)
14 Poslugiwanie sie dokumentacj Nieznany
29 rozdzial 28 ciw47mwstcqakqpq Nieznany
24 rozdzial 23 wjv3mksbkbdm37qy Nieznany
29 rozdzial 28 w3cbrpnwzh762znr Nieznany (2)

więcej podobnych podstron