Komponent StringGrid - wypełnianie tabeli
Komponent StringGrid służy do wyświetlania danych typu łańcuchowego w tabeli, przypominającej arkusz kalkulacyjny. Podstawowe właściwości:
Cells[ACol, ARow: Integer] - typ String, właściwość zwraca w postaci łańcucha zawartość komórki wskazanej parametrami
Cols[Index: Integer] - typ TStrings, przedstawia kolumnę tabeli, w szczególności właściwość zwraca w postaci tablicy łańcuchów kolumnę o numerze Index
Rows[Index: Integer] - typ TStrings, przedstawia wiersz tabeli, w szczególności właściwość zwraca w postaci tablicy łańcuchów wiersz o numerze Index
ColCount - typ Longint: właściwość określa liczbę kolumn
RowCount - typ Longint: właściwość określa liczbę wierszy
OnSelectCell - zdarzenie dostępne z karty Events; obsługująca je procedura zwraca w swoich parametrach współrzędne komórki wyselekcjonowanej przez użytkownika.
Ćwiczenie 1.25
Zadanie aplikacji
Dziennik elektroniczny: aplikacja na stronach notatnika przedstawiających przedmiot umieszcza tabelkę z listą osób w grupie oraz miejscem na ocenę i datę. Istnieje możliwość wpisywania ocen, ale oceny wpisywane do tabeli nie są zapamiętywane - sposób zapisu zawartości tabelki do pliku będzie omawiany w części dotyczącej plików.
Nowe umiejętności
Korzystanie z komponentu StringGrid. Stosowanie procedury OnActivate dla formularza.
Zbuduj notatnik o liczbie stron równej liczbie przedmiotów, które chcesz ująć w dzienniku. Na zakładkach stron umieść nazwy przedmiotów.
Na pierwszej stronie notatnika umieść komponent StringGrid z karty Additional.
Ustaw w oknie Object Inspector właściwości komponentu StringGrid:
Align alClient //tabela będzie wypełniać cala s i runę notatnika
ColCount 6 //miejsce na numer, nazwisko i imię oraz oceny
FixedCols l //liczba zamrożonych kolumn (stale widoczne bez możliwości edycji)
RowCount 20 //liczba wierszy w tabeli taka jak liczba uczniów w grupie
Rozwiń listę właściwości Options naciskając myszą znak + i ustaw właściwości:
goEditing True //umożliwi to wpisywanie wartości do tabeli
goColSizing True //zmiana rozmiarów szerokości kolumny
goColMoving True //możliwość przenoszenia kolumn przez przeciąganie myszą
goRowMoving True //możliwość przenoszenia wierszy przez przeciąganie myszą
goTabs True //przemieszczanie się po komórkach klawiszem Tab
Tak przygotowaną tabele przekopiuj na inne strony notatnika, wykorzystując z menu Edit->Copy, Edit->Paste. W trakcie kopiowania powstanie tyle tabelek StringGrid, ile stron zawiera notatnik.
Przejdź do edycji modułu i po słowie Implementation wpisz procedurę. Jej zadaniem jest ustawienie wartości początkowych pojedynczej tabeli.
procedure PiszTab(var Tabela:TStringGrid);
//parametrem procedury jest tabelka StringGrid, do której wpisujemy dane
var i: integer;
begin
with Tabela do
begin
//Utworzenie nagłówka tabeli, właściwość Cells pobiera lub zwraca wartość elementu tabeli
Cells [0,0] := 'Nr';
Cells [1,0] := 'Nazwisko i imię';
Cells [2,0] := 'Data';
Cells [3,0] := '0cena za okres';
//ustawienie numerów w tabeli
for i :=1 to 20 do
//W dzienniku przewidziano miejsce dla 20 uczniów
Cells [0,i] := IntToStr(i);
//wpisanie nazwisk uczniów
Cells [1,1] := 'Nowak Anna';
Cells [1,2] := 'Kowalska Alicja';
Cells [1,3] := 'Nowińska Ewa';
Cells [1,4] := 'Maj Anna';
end;
end;
Wyselekcjonuj formularz Form1 i dla zdarzenia OnActivate wpisz procedurę inicjującą tabelki notesu:
procedure TForm1.FormActivate(Sender: TObject);
begin
//procedurę PiszTab należy wywołać tyle razy, ile stron ma notatnik
PiszTab(StringGridl);
PiszTab(StringGrid2);
PiszTab(StringGrid3);
P1szTab(StringGrid4);
PiszTab(StringGrid5);
PiszTab(StringGrid6):
End;
Uruchom aplikację i sprawdź jej działanie:
sprawdź możliwość wprowadzania danych
powiększ szerokość kolumny przeznaczonej na nazwisko, rozsuwając nagłówek kolumny myszą
sprawdź działanie klawisza Tab, klawiszy strzałek po zatwierdzeniu edycji klawiszem Enter
sprawdź, czy za pomocą klawisza F2 można poprawić wpisany tekst
sprawdź możliwość przenoszenia myszą wierszy i kolumn tabeli.
Zadanie l
Zastosuj komponent StringGrid do wyświetlenia tabliczki mnożenia z zakresu od l do 10.
Zadanie 2
Zbuduj podręczny kalkulator zawierający w tabelce cyfry i znaki działań, po wyborze l cyfr i działania przez kliknięcie myszą, w polu edycyjnym pokazuje się wynik działania
Wskazówka
Umieść w tabelce komponentu StringGrid cyfry. Wykorzystaj zdarzenie OnSelectCell dla odbioru wyselekcjonowanej komórki. Zastosuj funkcję konwersji StrToInt zamiany zawartości pola edycji na liczbę
Zadanie 3
W tabelce StringGrid:
zorganizuj pobieranie danych dotyczących dostawy towarów: nazwa towaru, cena l sztuki, liczba sztuk, stawka VAT,
wykorzystując funkcje konwersji: StrToCurr() i CurrToStr() zbuduj kolumnę
Wartość - określającą wartość zakupionego towaru,
Cena z VAT - określającą cenę zawierającą stawkę VAT
Wartość z VAT - określającą wartość z uwzględnieniem stawki VAT,
dodaj procedury sortowania zawartości StringGrid według kolumny wskazanej z menu podręcznego (PopupMenu).
dodaj procedurę wybierania z tabeli danych dotyczących towaru o maksymalnej (minimalnej) cenie - przypisz procedurę do przycisku polecenia.
2