dotNet.pdf - kik - Koszalin
dotNet.pdf - kik - Koszalin
dotNet.pdf - kik - Koszalin
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