TChart
Komponent TChart nie jest w zasadzie
komponentem lecz kontrolką ActiveX. Użytkownicy środowiska Borland C++
Builder w wersji Personal nie mogą cieszyć się w pełni ze wszystkich
funkcji oferowanych przez tą kontrolkę ponieważ mają do użytku w zasadzie
wersję demonstracyjną tej kontrolki, pełna wersja jest udostępniana
dopiero w BCB w wersje Enterprise i Proffesional. Niemniej nawet w wersji
demo kontrolka jest użyteczna.
Ten obiekt jest tak złożony i rozbudowany, iż nie jest możliwe opisanie go
w kilku zdaniach, postaram się w tym dziale przybliżyć nieco możliwości
tej kontrolki, aczkolwiek bardzo rzadko z niej korzystam więc moja wiedza
na jej temat nie jest zbyt szeroka.
Tworzenie prostego pojedynczego wykresu poprzez wypełnienie
go danymi z tabeli.
W tej
poradzie pokaże jak zacząć pracę z kontrolką, bez zagłębiania się w
szczegóły stworzymy prosty wykres, który zostanie wypełniony danymi z
tabeli StringGrid1, efekt działania kodu uzmysłowi nam jak ta kontrolka
funkcjonuje. Zanim zaczniemy kodowanie umieśćmy na formularzu kilka
komponentów, więc przed wszystkim wstawiamy komponent Chart1, następnie
przycisk Button1, komponent ColorDialog1 z palety Dialogs i StringGrid1.
Klikamy prawym klawiszem myszy na kontrolce Chart1 i z menu
kontekstowego wybieramy Edit Chart... w oknie dialogowym, które
wyskoczy naciskamy przycisk Add powinno pojawić się nowe okno w którym z
zakładki Standard wybieramy interesujący nas typ wykresu, dla przykładu
niech będzie to Pie. W oknie Editing Chart1, w tabeli Series Title pojawi
się nowa seria o nazwie Series1. Nazwę serii możemy zmienić klikając na
przycisk Title. W tej poradzie nie będziemy zmieniać ustawień wykresu lecz
zdamy się na jego ustawienia domyślne. Na etapie programowania widzimy w
kontrolce Chart1 jakiś tam wykres, ale jest to po prostu przykład, który
po skompilowaniu projektu i uruchomieniu programu nie powinien być
widoczny.
Zmieniamy ustawienia komponentu StringGrid1 i tak w kolejności ustawiamy jego właściwość ColCount na 3, FixedCols i FixedRows na 0, Options->goEditing i Options->goAlwaysShowEditor na true, zaś w RowCount ustawiamy taką wartość jaka nam pasuje i jaka będzie odpowiadać liczbie elementów na wykresie.
Komponenty w zasadzie są gotowe do pracy, więc przystępujemy do kodowania, w pierwszej kolejności w zdarzeniu OnClick dla obiektu StringGrid1 umieścimy kod wypełniający trzecią kolumnę tego obiektu wartościami koloru dla każdego wiersza, czyli po kliknięcie w dowolny wiersz w trzeciej kolumnie tego obiektu, zostanie wywołane okno dialogowe wyboru koloru, w którym będize można wybrać interesujący nas kolor dla poszczególnych elementów wykresu, wartość koloru będzie wpisywana do wybranego wiersza trzeciej kolumny tabeli:
|
// Plik źródłowy np. Unit1.cpp. |
Teraz w zdarzeniu OnClick dla przycisku Button1 umieszczamy kod wypełniający wykres wartościami z tabeli:
|
// Plik źródłowy np. Unit1.cpp. |
Obiekt Chart jeden posiada właściwość Series, jest to właściwie obiekt, który został przez nas utworzony przy konfiguracji obiektu Char, ten obiekt widnieje w oknie Editing Chart1 w tabeli Series Title i nosi nazwę Series1 (jeśli nie dokonaliśmy zmiany nazwy). Właściwość Series wymaga podania numeru serii którą chcemy wypełnić wartościami. W tabeli Series Title może znaleźć się więcej niż jedna seria, a numery poszczególnych serii niezależnie od ich nazwy liczą się od 0. W przykładzie stworzyliśmy tylko jedną serię więc tylko na niej się skupimy. Właściwość Series posiada funkcję Add, funkcja ta pobiera trzy argumenty, pierwszy to wartość elementu wykresu, drugi to jego nazwa, a trzeci to kolor, w przykładowym kodzie funkcja ta pobiera poszczególne wartości z tabeli StringGrid1, a to oznacza, że przed kliknięciem w przycisk Button1 należy tą tabelę wypełnić wartościami i tak w pierwszej kolumnie wprowadzamy wartość liczbową, w drugiej nazwę elementu a w trzeciej wybieramy z okna dialogowego kolor tego elementu. Jeżeli chcemy uniemożliwić użytkownikowi ręczną zmianę zawartości wierszy w trzeciej kolumnie, należy dodać jeszcze prosty kod w zdarzeniu OnKeyDown dla obiektu StringGrid1:
|
// Plik źródłowy np. Unit1.cpp. |
I to by było tyle na początek...