1 Borland C++ Builder posiada standardową bibliotekę komponentów VCL (ang. visual component library). Komponenty są to klasy które reprezentują kontrolki Windows. Można je podzielic na komponenty widoczne które tak wyglądaja na formularzu jak wyglądaja na ekranie np: etykiety, pola edycyjne, przyciski, listy rozwijalne, oraz komponenty niewidoczne które reprezentuja elementy niewidoczne podczas działania programu np: komponenty związane z obsługą zegara systemowego, komponenty do obsługi baz danych, oraz standardowe okna dialogowe. 1. WŁAŚCIWOŚCI PODSTAWOWE a. Właściwość Name Borland C++ Builder po wstawieniu komponentu na formularz tworzy wskaźnik do komponentu i nadaje mu nazwę określonej przez właściwość Name. Dzięki temu wskaźnikowi i nazwie użytkownik ma dostęp do komponentu w trakcie pracy programu. Tworząc procedury i ich nazwy dla danego komponentu Borland C++ Builder wykorzystuje także własność Name tego komponentu. UWAGI: - Wartość właściwości Name może być modyfikowana w dowolnej chwili, pod warunkiem, że modyfikacja ta odbywa się wyłącznie poprzez Inspektor Obiektów. - Należy nadawać komponentom nazwy znaczące najszybciej jak jest to możliwe, aby uniknąć zamieszania i niepotrzebnej pracy w przyszłości. Najlepiej aby nazwy komponentów odzwierciedlały funkcje jakie te komponenty będą pełniły w programie. Typowe skróty: - Edt Pole edycyjne (ang. edit) - Btn Przycisk (ang. button) - Lbl Etykieta (ang. label) b. Właściwość Color Właściwość Color określa kolor tła komponentu. Sposób obsługiwania właściwości Color przez Inspektora Obiektów jest nieco unikalny. Jeżeli klikniesz na kolumnie Value zobaczysz przycisk rozwinięcia informujący o możliwości wyboru z listy kolorów. Tego typu możliwość jest powszechnie spotykana, ale to nie wszystko. Jeżeli klikniesz podwójnie na kolumnie Value, wyświetlone zostanie okno dialogowe Color. Okno to (rys. 7.1) umożliwia wybór jednego z predefiniowanych kolorów lub utworzenie własnych kolorów przez kliknięcie na przycisku Dodaj do kolorów niestandartowych. UWAGI nazwy kolorów standardowych zdefiniowanych w środowisku Borland C++ Builder oznaczone są jako cl+(nazwa koloru w języku angielskim) np. clblack. c. Właściwość Enabled Właściwość Enabled pozwala na włączanie i wyłączanie dostępu do komponentów. Kiedy komponent jest zablokowany, nie może przyjąć stanu aktywności (klikanie na nim nie daje żadnego efektu) i zazwyczaj informuje o swoim stanie w sposób wizualny. Enabled jest właściwością typu Boolean: wartość True udostępnia dany komponent, podczas gdy wartość False blokuje dostęp do niego.
2 d. Właściwość Font Właściwość Font jest egzemplarzem klasy TFont i posiada swoje charakterystyczne właściwości. uje ona wygląd i formatowanie czcionek związanych z danym komponentem. Posiada ona następujące podstawowe własności: - Name - rodzaj czcionki - Height - wysokość czcionki w pikselach. - Size - wysokość czcionki w punktach. - Style - ustawienie pogrubienia, pochylenia, podkreślenia lub przekreślenia czcionki. e. Właściwość Hint Właściwość ta służy do określenia tekstu pomocy kontekstowej dla komponentu. Tekst ten dzieli się na dwie części. Pierwsza z nich nazywana jest czasami krótką pomocą kontekstową. Jest to tekst wyświetlany w chwili gdy użytkownik umieści kursor nad komponentem i zatrzyma go przez chwilę w tej pozycji. Druga część to tzw. długa pomoc kontekstowa. Długa pomoc kontekstowa stanowi opcjonalny tekst wyświetlany na pasku stanu, gdy użytkownik przemieści kursor nad określony komponent. Długą pomoc kontekstową oddziela się od krótkiej pomocy kontekstowej poziomą linią Krótka Pomoc Kontekstowa Długa Pomoc Kontekstowa f. Właściwość Tag Właściwość Tag to nic innego jak 4-bajtowa zmienna zarezerwowana na potrzeby programisty. Można wykorzystać ją do przechowywania dowolnych danych, jakie przydać się mogą komponentowi. Przechowywaną daną może być w szczególności wskaźnik do innej klasy, wartość indeksowa lub cokolwiek innego. Korzystanie z tej właściwości należy traktować jako zaawansowaną technikę programistyczną. WŁAŚCIWOŚCI PODSTAWOWE (Komponenty wizualne) Właściwość BorderStyle BoundsRect Caption ClientHeight ClientRect ClientWidth Constraints Ctl3D Height Może posiadać wartość bssingle lub bsnone. Użyj bsnone jeśli chcesz, aby komponent wtapiał się w tło. Prostokątny obszar całego komponentu (nie ograniczony jedynie do obszaru klienta). Określa tytuł komponentu. Wiele komponentów nie posiada tytułu, dlatego właściwość ta jest dla nich niewidoczna. Zawiera wysokość obszaru klienta w komponencie. Zawiera współrzędne prostokątnego obszaru klienta w komponencie. Zawiera szerokość obszaru klienta w komponencie. Określa wymiary ograniczające komponent (maksymalną i minimalną szerokość i wysokość). Właściwość bardziej istotna dla formularzy niż dla innych komponentów. Określa, czy komponent powinien być rysowany z trójwymiarowym obramowaniem. Jeżeli właściwość BorderStyle jest ustawiona na bsnone, właściwość ta nie ma znaczenia. Określa wysokość komponentu.
3 WŁAŚCIWOŚCI PODSTAWOWE (Komponenty wizualne) C.D. HelpContext Left Parent PopupMenu TabOrder TabStop Top Visible Width Służy do skojarzenia numeru indeksu w pliku pomocy z określonym komponentem. Określa współrzędną x komponentu. Wskaźnik do rodzica komponentu. Specyfikuje menu kontekstowe wyświetlane w chwili, gdy użytkownik kliknie prawym przyciskiem myszki. Związana z komponentami typu okienkowego. Ustala pozycję komponentu w porządku zgodnym z klawiszem Tab. Związana z komponentami typu okienkowego. Decyduje o tym, czy komponent może być włączony do cyklu wymuszanego przez klawisz Tab. Wartość False eliminuje komponent z tego cyklu. Określa współrzędną y komponentu. Określa czy komponent jest aktualnie widoczny. Jej zmiana objawia się ukryciem lub wyświetleniem komponentu. Określa szerokość komponentu. METODY PODSTAWOWE (Komponenty wizualne) Metoda Broadcast ClientToScreen ContainsControl HandleAllocated Hide Invalidate Perform Refresh Repaint SetBounds Wysyła komunikat do wszystkich komponentów potomnych typu okienkowego. Konwertuje współrzędne okna użytkownika (klienta) do współrzędnych ekranowych. Zwraca wartość True, jeżeli określony komponent jest potomkiem danego komponentu lub formularza. Zwraca wartość True, jeżeli dla komponentu utworzony został uchwyt. Utworzenie uchwytu (o ile nie został on jeszcze utworzony) następuje automatycznie w wyniku zwykłego odczytania wartości właściwości Handle, dlatego metoda HandleAllocated może zostać wykorzystana do sprawdzenia istnienia uchwytu bez jego tworzenia. Ukrywa komponent. Komponent jest nadal dostępny i może być ponownie wyświetlony w czasie późniejszym. Wymusza przerysowanie komponentu (jego odświeżenie). Przerysowanie to nastąpi w najbliższym dogodnym dla Windows czasie. Przekazuje komunikat bezpośrednio do komponentu, zamiast przesyłać go przez system komunikatów Windows. Wymusza natychmiastowe przerysowanie komponentu i czyści go tuż przed ponownym namalowaniem. Wymusza natychmiastowe przerysowane komponentu. Tło komponentu nie jest czyszczone przed ponownym namalowaniem. Umożliwia jednoczesne ustawienie właściwości Top, Left, Width i Height. Operacja taka oszczędza czas w porównaniu z ręcznym ustawianiem każdej właściwości z osobna.
4 METODY PODSTAWOWE (Komponenty wizualne) C.D. SetFocus Update Czyni komponent aktywnym. Działa jedynie w przypadku komponentów typu okienkowego. Wymusza natychmiastowe odświeżenie komponentu. Zazwyczaj w celu odświeżenia komponentów powinieneś stosować metody Refresh i Repaint. ZDARZENIA PODSTAWOWE (Komponenty wizualne) Zdarzenie OnChange OnClick OnDblClick OnEnter OnExit OnKeyDown OnKeyPress OnKeyUp OnMouseDown OnMouseMove OnMouseUp OnPaint Zdarzenie jest generowane, gdy w komponencie zajdzie jakakolwiek zmiana. Dokładna implementacja zależy od typu komponentu. Generowane jest, gdy użytkownik kliknie dowolnym przyciskiem myszy na obszarze komponentu. Generowane gdy użytkownik kliknie podwójnie na komponencie. Pojawia się, gdy komponent typu okienkowego stanie się aktywny. Pojawia się, gdy komponent typu okienkowego straci stan aktywności w wyniku przeniesienia go przez użytkownika do innego komponentu. Zdarzenie to nie pojawia się kiedy użytkownik przełącza się między formularzami lub przechodzi do innej aplikacji. Generowane jest po naciśnięciu klawisza przez użytkownika w chwili gdy kontrolka posiada stan aktywności. Naciśniętym klawiszem może być jeden z klawiszy alfanumerycznych, strzałka kursora, Home, End, Ctrl itd. Zdarzenie to jest również wywoływane po naciśnięciu klawisza przez użytkownika, ale tylko jeżeli klawiszem tym był któryś z klawiszy alfanumerycznych, Tab, Backspace, Enter lub Esc. Pojawia się za każdym razem, gdy zwolniony zostanie naciśnięty klawisz. Generowane jest w chwili gdy kursor znajdzie się nad komponentem i naciśnięty zostanie jeden z przycisków myszy. Parametry przekazywane do funkcji obsługującej to zdarzenie informują o tym który z przycisków myszy został kliknięty, które z klawiszy specjalnych (Alt, Shift, Ctrl) zostały naciśnięte, a także jakie były współrzędne położenia x i y kursora myszy w chwili pojawienia się zdarzenia. Pojawia się za każdym razem, gdy mysz przemieszcza się nad komponentem. Generowane jest, gdy przycisk myszy zostanie zwolniony nad komponentem. Przycisk musi wcześniej zostać wciśnięty, gdy kursor myszy znajduje się nad komponentem. Pojawia się zawsze, gdy komponent wymaga odświeżenia (ponownego narysowania). Można samodzielnie reagować na to zdarzenie po to, aby wykonywać takie operacje odświeżające, jakie potrzebne są z naszego punktu widzenia.
5 4. PODSTAWOWE KOMPONENTY I ICH WŁAŚCIWOŚCI Etykieta (TLabel) Komponent Label służy do wyświetlania tekstu w formularzu. Czasami tekst ten jest określany w fazie projektowania i później nie ulega już zmianom. W innych przypadkach, etykieta zachowuje się w sposób dynamiczny, ulegając zmianom w trakcie pracy, w sposób zależny od przebiegu programu. Do zmiany tekstu etykiety w trakcie pracy programu należy korzystać z właściwości Caption. UWAGI: W przypadku kiedy etykieta zachowuje się w sposób dynamiczny warto nadać jej własną nazwę. Caption Font Visible AutoSize - jest to tekst wyświetlany na etykiecie - zmienia własności czcionki tekstu etykiety - określa czy etykieta jest widoczna, czy niewidoczna na formularzu - Przy wartości True etykieta automatycznie zmienia swój rozmiar dopasowując się do tekstu zawartego we właściwości Caption. Jeżeli wartością jest False, tekst wystający poza prawą krawędź jest obcinany. Wartość domyślna: True. Pola Edycyjne (TEdit, TMemo) Komponent Edit realizuje prostą kontrolkę edycji jednowierszowej. Komponent Memo realizuje prostą kontrolkę edycji wielowierszowej. (TEdit) Rozmiar Text - Width - szerokość komponentu, Height - wysokość komponentu - Przechowuje tekst stanowiący zawartość komponentu. (TMemo) Lines - Przechowuje tekst stanowiący zawartość komponentu, klasa TStrings. ScrollBars - Określa, które paski przewijania powinny być wyświetlane. Podstawowe metody (klasa TStrings) Add (const AnsiString FileName) dodawanie nowej linii do pola tekstowego LoadFromFile (const AnsiString FileName) wczytywanie danych z pliku tekstowego o nazwie FileName SaveToFile (const AnsiString FileName) wczytywanie danych do pliku tekstowego o nazwie FileName, jeśli plik nie istnieje to zostanie utworzony, jeśli plik istnieje to informacje wcześniej w nim zapisane zostaną utracone. OnChange OnEnter OnExit - zmiana zawartości pola edycyjnego - znalezienie się w polu edycyjnym, uaktywnienie pola edycyjnego - opuszczenie pola edycyjnego
6 Przyciski (TButton) Standardowy przycisk Windows. Enabled - określa czy przycisk jest aktywny czy nieaktywny (true/false) Caption - jest to tekst wyświetlany na przycisku OnClick - wciśnięcie przycisku Pola Wyboru (TCheckBox, TRadioButton, TRadioGroup) : Użycie komponentów CheckBox, RadioButton pozwalają na wybranie określonej opcji poprzez zaznaczenie pola wyboru (zaczernione kółko lub krzyżyk). UWAGI: Przyciski opcji umieszczane w formularzu będą automatycznie traktowane jako część tej samej grupy. Jeżeli zachodzi potrzeba wyodrębnienia więcej niż jednej grupy przycisków opcji i grupy te muszą funkcjonować niezależnie od siebie, wtedy należy użyć komponentu RadioGroup. Komponent tego typu umożliwia szybkie ustawienie grupy przycisków opcji razem z otaczającą je trójwymiarową ramką i etykietą. : (TCheckBox, TRadioButton) Caption - jest to tekst wyświetlany opisujący pole wyboru Checked - ustawienia stanu zaznaczenia, a także odczytanie bieżącego stanu. (TRadioGroup) Items - określa opisy elementów listy, pole typu TStrings ItemIndex - określa indeks wybranego elementu (pierwszy element ma indeks 0) OnClick - kliknięcie na danym polu Listy rozwijalne (TListBox, TComboBox) Komponent ListBox reprezentuje standardową listę wyboru w Windows. Jeżeli lista zawiera więcej elementów, niż jest w stanie jednocześnie wyświetlić, dostęp do pozostałych jest możliwy dzięki paskom przewijania. ComboBox jest specjalizowaną listą rozwijalną. Jest ona kombinacją listy i kontrolki edycyjnej. Użytkownik może wybrać element z listy lub wpisać wartość w polu edycji. Items - elementy listy, pole typu TStrings MultiSelect - czy możliwe jest wybranie więcej niż jednego elementu ItemIndex - określa indeks wybranego elementu (pierwszy element ma indeks 0)
7 Podstawowe metody Items.Add('nowy element listy') - dodawanie nowych elementów listy OnClick - kliknięcie na danym polu Panele (TPanel) Komponent Panel służy między innymi do przechowywania przycisków paska narzędzi, wyświetlania etykiet tekstowych (takich jak tytuł formularza), wyświetlania grafiki, jak również przechowywania zwykłych przycisków. Jedną z zalet Panelu jest to, że umieszczone w nim komponenty stają się jego potomkami. Pozwala na wygodne łączenie elementów w grupy. podstawowe właściwości: Align - automatyczne dopasowanie panelu do lewej/prawej/góry/dołu lub pozostałego wolnego miejsca. Pozwala na wygodne rozplanowanie wyglądu okna. Menu (TMainMenu, TPopUpMenu) MainMenu to komponent pozwalający na zaprojektowanie górnego menu tekstowego programu. PopUpMenu to komponent pozwalający na stworzenie menu kontekstowego programu, łączonego z danym komponentem i wyświetlane po najechaniu na komponent i kliknięciu prawego klawisza myszy. Aby dodać zaprojektowane menu kontekstowe (wywoływanie w kontekście danego komponentu) należy we własności PopUpMenu danego komponentu wybrać kojarzone z nim menu kontekstowe. Projektowanie menu z wykorzystaniem Projektanta Menu (ang. Menu Designer) Dwukrotne kliknięcie na komponenty MainMenu, PopUpMenu uruchamia program narzędziowy Menu Designer, który pozwala na wizualne projektowanie menu tekstowego. Każdy z elementów menu jest oddzielnym komponentem będącym potomkiem menu nadrzędnego. Możliwe jest dodanie podmenu do danego elementu. Podmenu jest elementem menu, który po kliknięciu ukazuje nowe menu z nowymi opcjami. Podmenu możesz stworzyć albo wybierając z menu kontekstowego Projektanta Menu opcję Create Submenu, albo przy wciśniętym klawiszu Ctrl naciskając na klawiaturze klawisz strzałki. Możliwe jest połączenie danego elementu menu z odpowiednim skrótem klawiszowym, który powinien ułatwiać pracę ze stworzonym programem. Tworzenie skrótu do danego elementu menu polega na zmianie jego właściwości ShortCut. Po wybraniu tej właściwości można wybrać skrót klawiszowy z dostępnych tam skrótów.