Korzystanie z komponentów SpinEdit, SpinButton i ColorGrid
Komponent SpinEdit zawiera okno edycyjne i strzałki do przesuwania wartości w określonej skali z określonym krokiem. Podstawowe właściwości:
Enabled |
typ Boolean, wartość True oznacza możliwość wyboru strzałkami określonych wartośc |
Increment |
typ Integer, krok zmiany przy poruszaniu się strzałkami |
MaxValue |
typ Integer, maksymalna wartość do uzyskania przy przesuwaniu strzałkami |
MinYalue |
typ Integer, minimalna wartość do uzyskania przy przesuwaniu strzałkami |
Position |
typ Integer, wartość odbierana z komponentu, gdy wybór nastąpił poprzez strzałki |
EditorEnabled |
typ Boolean, wartość True dopuszcza edycję w polu. Uwaga: w polu można wpisywać tylko liczby, ale odbierany parametr (za pomocą właściwości Text) jest typu łańcuchowego |
MaxLenght |
typ Integer, określa maksymalną liczę znaków wprowadzanych w polu |
Text |
typ String, właściwość dostępna z poziomu kodu, za jej pomocą odbieramy wartości wpisywane w polu. |
Wartości wybrane poprzez strzałki odbieramy procedurą dla zdarzenia OnChange. Wartości wpisane w polu odbieramy procedurą dla zdarzenia OnClick.
Komponent SpinButton to dwa połączone ze sobą przyciski: górny i dolny.
Podstawowe właściwości:
UpGlyph |
możliwość przypisania bitmapy do górnego przycisku |
DownGlyph |
możliwość przypisania bitmapy do dolnego przycisku |
Wykorzystywane zdarzenia:
OnDownClick |
przy kliknięciu dolnego przycisku |
OnUpClick |
przy kliknięciu górnego przycisku. |
Komponent ColorGrid przedstawia tabelkę wypełnioną 16 kolorami, umożliwia wybór koloru przez kliknięcie zamalowanego prostokąta, oddzielnie dla tła i wypełnienia.
Podstawowe właściwości:
BackGroundEnabled |
typ Boolean, wartość True oznacza uaktywnienie możliwości wyboru koloru tła |
BackGroundIndex |
typ Integer, określa indeks wskazanego elementu dla koloru tła |
ForeGroundEnabled |
typ Boolean, wartość True oznacza uaktywnienie możliwości wyboru koloru wypełnienia |
ForeGroundIndex |
typ Integer, określa indeks wskazanego elementu dla koloru wypełnienia (lub pisaka) |
GridOrdering |
postać kostki, możliwe ustawienia to 4x4, 16x1, 8x2, 2x8, 1x16. |
Wyselekcjonowane kolory odbieramy w procedurach obsługi zdarzeń poprzez właściwości: BackGroundColor, ForeGroundColor.
Komponent Splitter służy do podziału formularza na dwie części.
Ćwiczenie 3.11
Zadanie aplikacji
Aplikacja umożliwia wybór kształtu przez komponent SpinButton. Można uzyskać koło i kwadrat. Przesuwanie skali lub wpisanie wartości w oknie SpinEdit powoduje wypełnienie pokazywanego kształtu określonym wypełniaczem. Kolor tła (formularza) i kolor wypełnienia wybieramy odpowiednio prawym i lewym przyciskiem myszy za pomocą tabelki ColorGrid.
Nowe umiejętności
Korzystanie z komponentów SpinButton, SpinEdit i ColorGrid.
Rysunek 1 komponenty z karty Smaple
Na formularzu wstaw komponenty:
Splitter z karty Additional do oddzielenia części formularza przeznaczonej do dialogu z użytkownikiem od prezentacji Shape
Panel z karty Standard, umieść go na obszarze komponentu Splitter
Shape z karty Additional, ustaw jego właściwość:
Align alClient
SpinButton, SpinEdit i ColorGrid z karty Sample, umieszczając je na panelu
Etykiety opisujące komponenty.
Oprogramuj komponent SpinButton:
Utwórz obrazki na przyciski:
Wybierz z menu Tools>Image Editor, następnie z menu File->New-> Bitmap File
W oknie Bitmap Properties ustal wielkość obrazków
Width 16
Height16
Przygotuj dwie bitmapy przedstawiające kółko i prostokąt - będą to obrazki na przyciski SpinButton
Zapamiętaj bitmapy w folderze, w którym budujesz aplikacje, jako Kolo.bmp i kwadrat.bmp
Przypisz obrazki do przycisków:
Kliknij w polu właściwości DownGIyph i przejdź do Picture Editor
Kliknij przycisk Load i przejdź do folderu aplikacji
Wybierz bitmapę kolo.bmp
Kliknij przycisk Otwórz
W kolejnym oknie kliknij OK.
Wykorzystując właściwość UpGlyph, przypisz w analogiczny sposób drugą bitmapę do drugiego przycisku.
Przypisz procedury obsługi:
dla zdarzenia OnDownClick wpisz treść procedury:
Shapel.Shape:=stRectangle;
dla zdarzenia OnUpClick wpisz treść procedury:
Shapel.Shape:=stEllipse;
Oprogramuj komponent SpinEdit:
Uzupełnij właściwości:
MaxLength l //maksymalna liczba wprowadzonych znaków ograniczona do l
M1nValue 0
MaxValue 8 //mamy 9 rodzajów wypełniaczy
Dla zdarzenia OnChange wpisz procedurę:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
//rzutowanie typu integer na typ TBrushStyle
Shape1.Brush.Style:=TBrushStyle(SpinEdit1.Value);
end;
Dla zdarzenia OnClick wpisz procedurę:
Procedure TForm1.SpinEdit1Click(Sender: TObject);
begin
try
//zamiana wartości pobranej z okna na Integer a następnie rzutowanie na typ TBrushStyle
except
ShowMessage('Złe dane');
end;
end;
Oprogramuj komponent ColorGrid:
Dla zdarzenia OnChange wpisz procedurę:
procedure TForm1.ColorGrid1Change(Sender: TObject);
begin
//odbieranie z komponentu koloru tła i koloru wypełniacza
Form1.Color:=ColorGrid1.BackgroundColor;
Shape1.Brush.Color:=ColorGrid1.ForegroundColor;
Shape1.Pen.Color:=ColorGrid1.ForegroundColor;
end;
Dla zdarzenia OnMouseDown wpisz procedurę:
procedure TForm1.ColorGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//lewy przycisk myszy umożliwia ustawienie koloru wypełniacza
with ColorGrid1 do
if Button=mbLeft then
begin
BackGroundEnabled:=True;
ForegroundEnabled:=False;
End
Else
if Button=mbRight then
//prawy przycisk myszy umożliwia ustawienie koloru wypełniacza
begin
BackGroundEnabled:=False;
ForegroundEnabled:=True;
end;
end;
Aby zadziałała obsługa błędu, uruchom aplikację poza środowiskiem Delphi:
Sprawdź działanie przycisków
Sprawdź, czy można wpisywać wartości w oknie SpinEdit
Sprawdź możliwość wyboru koloru tła prawym przyciskiem myszy i koloru wypełniacza lewym przyciskiem
Sprawdź, czy po wybraniu wypełniacza o numerze l (bsClear) następuje kasowanie ustawień wypełnienia.
4