31.07.2014 Views

dotNet.pdf - kik - Koszalin

dotNet.pdf - kik - Koszalin

dotNet.pdf - kik - Koszalin

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Henryk Budzisz<br />

materiały przygotowane w ramach projektu ZPORR<br />

nr POKL.04.01.01-00-449/08-00<br />

<strong>Koszalin</strong> 2009


Wykaz ćwiczeo<br />

• Ćw.1. – Przycisk zamykajacy<br />

• Ćw.2. – Strzałka blokowa<br />

Uwaga: Ćwiczenia wymagają zainstalowania środowiska<br />

programistycznego VisualStudio.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 1<br />

Zadania:<br />

• zdefiniować komponent .NET – przycisk<br />

zamykający ,<br />

• dodać komponent do palety Toolbox,<br />

• przetestować jego użycie w przykładowej aplikacji .<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 1 – przygotowanie komponentu<br />

1. Utworzyć nowy projekt typu Class Library o nazwie Przycisk<br />

(File/New Project/Visual C++).<br />

2. Z pliku Przycisk.h usunąć domyślnie utworzoną klasę Class1.<br />

3. Do projektu Przycisk dodać klasę PrzyciskZamykający<br />

(Add/Class/Visual C++/Component Class).<br />

4. Dodać do projektu Przycisk referencje do bibliotek<br />

System.Windows.Forms.dll oraz System.Drawing.dll<br />

(References/Add New Reference/.NET/...).<br />

5. W pliku Przycisk.h dodać deklaracje:<br />

using namespace System::Windows::Forms;<br />

using namespace System::Drawing;<br />

6. Zastąpić klasę bazową Component klasą UserControl.<br />

7. Utworzyć plik biblioteczny Przycisk.dll (Build).<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 1 - c.d: aplikacja testująca<br />

1. Dodać nowy projekt typu Windows Form Application<br />

o nazwie TestKontrolek<br />

(Add/New Project/Visual C++).<br />

2. Dodać kontrolkę PrzyciskZamykający do palety<br />

Toolbox (Tools/Choose Toolbox Items/Browse i<br />

odszukać Przycisk.dll).<br />

3. W trybie Design przeciągnąć komponent<br />

PrzyciskZamykający na formatkę. Sprawdzić jego<br />

właściwości (Properties Window) i skasować go.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 1 – c.d: rozbudowa komponentu<br />

PrzyciskZamykający.<br />

1. W konstruktorze klasy PrzyciskZamykający dodać:<br />

Size = System::Drawing::Size(40,40);<br />

BorderStyle =<br />

System::Windows::Forms::BorderStyle::Fixed3D;<br />

2. Odbudować komponent i przetestować na formatce i<br />

w przeglądarce właściwości (Properties Window).<br />

3. Skasować z formatki.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 1 – c.d: rozbudowa komponentu<br />

PrzyciskZamykający; funkcja OnPaint.<br />

dodać funkcję OnPaint:<br />

virtual void OnPaint(PaintEventArgs^ e) override<br />

{<br />

int l = ClientRectangle.Left+4;<br />

int r = ClientRectangle.Right-4;<br />

int t = ClientRectangle.Top+4;<br />

int b = ClientRectangle.Bottom-4;<br />

Pen^ pen = gcnew Pen(ForeColor, 2);<br />

e->Graphics->DrawLine(pen,l,t,r,b);<br />

e->Graphics->DrawLine(pen,l,b,r,t);<br />

}<br />

i przetestować.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 1 – c.d: zamykanie okna<br />

W trybie Design, wygenerować funkcję obsługującą<br />

zdarzenie Click komponentu PrzyciskZamykający<br />

(Properties Window zakładka Events).<br />

W funkcji dodać:<br />

Close();<br />

Po odbudowaniu komponentu - przetestować.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2<br />

Zadania:<br />

• zdefiniować strzałkę blokową () na bazie klasy<br />

System.Windows.Forms.Control,<br />

• zdefiniować właściwość Direction określającą<br />

kierunek strzałki i właściwy sposób odrysowania,<br />

• dodać ikonę do komponentu,<br />

• przetestować komponent w przykładowej aplikacji.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – przygotowanie komponentu<br />

1. Utworzyć nowy projekt typu Class Library o nazwie Arrow<br />

(Add/New Project/Visual C++).<br />

2. Dodać do projektu Arrow referencje do bibliotek<br />

System.Windows.Forms.dll oraz System.Drawing.dll<br />

(References/Add New Reference/.NET/...).<br />

3. Zmodyfikować zawartość pliku Arrow.h do postaci:<br />

using namespace System;<br />

using namespace System::Windows::Forms;<br />

using namespace System::Drawing;<br />

namespace Arrow {<br />

public ref class BlockArrow : public Control {<br />

};<br />

}<br />

4. Utworzyć plik biblioteczny Arrow.dll (Build).<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – c.d: rozbudowa komponentu<br />

BlockArrow.<br />

protected:<br />

virtual void OnPaint(PaintEventArgs^ e) override<br />

{<br />

}<br />

int l = ClientRectangle.Left;<br />

int r = ClientRectangle.Right-1;<br />

int t = ClientRectangle.Top;<br />

int b = ClientRectangle.Bottom-1;<br />

// wierzchołki trójkąta<br />

Point p1 = Point(l,t);<br />

Point p2 = Point(l,b);<br />

Point p3 = Point(r,t+ClientRectangle.Height/2);<br />

array^ arrowPoints = {p1, p2, p3};<br />

Pen^ pen = gcnew Pen(Color::Black, 1);<br />

SolidBrush^ brush = gcnew SolidBrush(ForeColor);<br />

e->Graphics->FillPolygon(brush, arrowPoints);<br />

e->Graphics->DrawPolygon(pen, arrowPoints);<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00<br />

p1<br />

p2<br />

p3


Ćwiczenie 2 - c.d: aplikacja testująca<br />

1. Do testowania może posłużyć aplikacja zawarta w<br />

projekcie TestKontrolek.<br />

2. Dodać kontrolkę BlockArrow do palety Toolbox<br />

(Tools/Choose Toolbox Items/Browse i odszukać<br />

Arrow.dll).<br />

3. W trybie Design przeciągnąć komponent BlockArrow<br />

na formatkę. Powiększyć komponent i zmienić kolor<br />

(odziedziczona właściwość ForeColor).<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – poprawianie wyglądu<br />

komponentu.<br />

W klasy BlockArrow dodać konstruktor:<br />

public:<br />

BlockArrow()<br />

{<br />

}<br />

// konstruktor bezparametrowy<br />

Size = System::Drawing::Size(70,70);<br />

ForeColor = Color::Aquamarine;<br />

odbudować plik Arrow.dll i przetestować komponent na<br />

formatce.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – definiowanie kierunków<br />

strzałki blokowej<br />

1. W klasie BlockArrow dodać pole prywatne direction typu<br />

System.Windows.Forms.ArrowDirection:<br />

private:<br />

ArrowDirection direction;<br />

2. W konstruktorze dodać inicjację tego pola:<br />

direction = ArrowDirection::Right;<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – definiowanie właściwości<br />

Direction typu ArrowDirection<br />

W klasie BlockArrow zdefiniować właściwość:<br />

property ArrowDirection Direction<br />

{<br />

}<br />

virtual ArrowDirection get() {<br />

}<br />

return direction;<br />

virtual void set(ArrowDirection value) {<br />

}<br />

direction = value;<br />

Invalidate();<br />

odbudować plik Arrow.dll i sprawdzić właściwość Direction w<br />

przeglądarce właściwości.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – modyfikacja sposobu<br />

wyświetlania właściwości Direction.<br />

W przeglądarce właściwości podzielone są na grupy, np:<br />

Appearance, Behawior , Data.<br />

Właściwość Direction należy dodać do grupy Layout.<br />

Realizacja:<br />

• uzupełnić deklaracje użycia przestrzeni nazw:<br />

using namespace System::ComponentModel;<br />

• przed definicją właściwości dodać atrybut:<br />

[ Category("Layout") ]<br />

Odbudować bibliotekę Arrow.dll i przetestować<br />

modyfikację.<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – poprawienie rysowania strzałki<br />

(klasa BlockArrow, funkcja OnPaint)<br />

Point p1, p2, p3;<br />

switch(direction)<br />

{<br />

case ArrowDirection::Left: {<br />

}<br />

// wierzchołki trójkąta<br />

p1=Point(r,t); p2=Point(r,b); p3=Point(l,t+ClientRectangle.Height/2);<br />

break;<br />

case ArrowDirection::Right: {<br />

}<br />

p1=Point(l,t); p2=Point(l,b); p3=Point(r,t+ClientRectangle.Height/2);<br />

break;<br />

case ArrowDirection::Up: {<br />

}<br />

p1=Point(l,b); p2=Point(r,b); p3=Point(l+ClientRectangle.Width/2,t);<br />

break;<br />

case ArrowDirection::Down: {<br />

}<br />

}<br />

p1=Point(l,t); p2=Point(r,t); p3=Point(l+ClientRectangle.Width/2,b);<br />

break;<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00


Ćwiczenie 2 – ikona komponentu<br />

1. Do projektu Arrow dodać ikonę komponentu<br />

(Add/Resource/Icon/New) i przy użyciu narzędzi do<br />

rysowania zaprojektować ikonę 16x16 pikseli.<br />

2. Zmienić nazwę pliku na: Arrow.BlockArrow.ico<br />

3. Zapewnić dodawanie pliku do biblioteki .dll, poprzez<br />

modyfikacje właściwości projektu Arrow<br />

(Properties/Linker/Input w polu Embed Managed<br />

Resource File wpisać: Arrow.BlockArrow.ico)<br />

4. Odbudować plik Arrow.dll i ponownie dodać komponent<br />

do palety narzędzi Toolbox (Tools/Choose Toolbox<br />

Items/Browse i odszukać Arrow.dll).<br />

materiały przygotowane w ramach projektu<br />

nr POKL.04.01.01-00-449/08-00

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!