Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... ·...

13
Programim Mobile Leksion 9 Programimi pºr Windows Mobile 1 Tema: Programimi pºr Windows Mobile Nº kºtº leksion.... .Net Framework dhe .Net CF Ndºrtimi i ndºrfaqeve grafike pºr Windows Mobile 1. Hyrje nº platformºn .Net 1.1. .Net Framework Microsoft .NET Framework ºshtº njº paketº dhe kornizº pune qº mund tº instalohet nº kompjutera qº punojnº mbi sisteme shfrytºzimi Windows. Pºrfshin njº librari shumº tº madhe programimi si edhe njº makinº virtuale qº menaxhon ekzekutimin e programeve tº shkruar enkas pºr tº. Pºrdoret pothuaj nga tº gjithº aplikacionet e shkruar pºr platformºn Windows. Momentalisht ekzistojnº disa versione tº saj. Versioni mº i pºrhapur aktualisht (por jo i fundit) ºshtº 3.0 dhe ºshtº i pºrfshirº nº Windows Server 2008 dhe nº Windows Vista, por mund tº instalohet edhe nº Windows XP dhe nº Windows Server 2003. Tiparet kryesorº tº dizenjimit Ndºrveprimi. Duke qenº se ºshtº i nevojshºm ndºrveprimi midis aplikacioneve tº vjetºr dhe atyre mº tº rinj, .Net Framework ofron mºnyra pºr tº aksesuar funksionalitete tº implementuar nº programe qº ekzekutohen jashtº mjedisit .Net. Tº tilla janº aksesi nº komponentet COM dhe tiparet P/Invoke. Common Language Runtime. CLR ºshtº komponentja makinº virtuale e .Net Framework. Tº gjithº programet nº .Net ekzekutohen nºn supervizimin e CLR e cila garanton disa tipare dhe sjellje specifike tº programeve pºr sa i pºrket menaxhimit tº kujtesºs, sigurisº dhe menaxhimit tº pºrjashtimeve. Pavarºsia e gjuhºve. .Net Framework ka prezantuar mekanizmin e CTS (Common Type System) i cili specifikon tº gjithº tipet e mundshºm tº tº dhºnave dhe tº gjithº konstruktet e programimit qº suportohen nga CLR. Gjithashtu specifikon se si kºta mund tº ndºrveprojnº me njºri tjetrin. Nº sajº tº tij .Net suporton shkºmbimin e instancave tº tipeve midis programeve tº shkruar nº gjuhº tº ndryshme programimi tº .Net. Base Class Library. BCL ºshtº njº librari funksionalitetesh e vlefshme pºr tº gjitha gjuhºt qº pºrdorin .Net Framework. Pºrfshin klasa qº enkapsulojnº funksione si p.sh pºr manipulimin e skedarºve, vizatimin e grafikave, ndºrveprimin me bazat e tº dhºnave si edhe pºr menaxhimin e skedarºve XML. Instalim i thjeshtº. .Net framework pºrfshin disa mjete dhe tipare qº ndihmojnº nº menaxhimin e instalimeve tº sigurtº tº softuerºve nº mºnyrº tº tillº qº tº mos interferojnº me softuerº tº tjerº tº instaluar paraprakisht. Siguria. Dizenjimi ºshtº konceptuar qº tº adresojº njº sºrº problemesh tº mundshºm qº mº parº janº shfrytºzuar nga programe keqdashºs si p.sh tejmbushja e baferave. .Net ka krijuar njº model tº pºrgjithshºm sigurie pºr tº gjithº aplikacionet. Portabilitet. Teorikisht .Net Framework ka mundºsi qº tº jetº e pavarur nga platforma (cross-platform). Aktualisht ºshtº e tillº nº sistemet Windows, Windows CE, Windows Mobile dhe nº XBox. Ekzistojnº projekte tº cilºt synojnº tº sjellin platformºn .Net nº sistemet Linux. I tillº ºshtº projekti open-source Mono http://www.mono-project.com/Main_Page .

Transcript of Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... ·...

Page 1: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

1

Tema: Programimi për Windows Mobile

Në këtë leksion....

.Net Framework dhe .Net CF

Ndërtimi i ndërfaqeve grafike për Windows Mobile

1. Hyrje në platformën .Net

1.1. .Net Framework

Microsoft .NET Framework është një paketë dhe kornizë pune që mund të instalohet në kompjutera që punojnë mbi sisteme shfrytëzimi Windows. Përfshin një librari shumë të madhe programimi si edhe një makinë virtuale që menaxhon ekzekutimin e programeve të shkruar enkas për të. Përdoret pothuaj nga të gjithë aplikacionet e shkruar për platformën Windows. Momentalisht ekzistojnë disa versione të saj. Versioni më i përhapur aktualisht (por jo i fundit) është 3.0 dhe është i përfshirë në Windows Server 2008 dhe në Windows Vista, por mund të instalohet edhe në Windows XP dhe në Windows Server 2003. Tiparet kryesorë të dizenjimit

Ndërveprimi. Duke qenë se është i nevojshëm ndërveprimi midis aplikacioneve të vjetër dhe atyre më të rinj, .Net Framework ofron mënyra për të aksesuar funksionalitete të implementuar në programe që ekzekutohen jashtë mjedisit .Net. Të tilla janë aksesi në komponentet COM dhe tiparet P/Invoke.

Common Language Runtime. CLR është komponentja makinë virtuale e .Net Framework. Të gjithë programet në .Net ekzekutohen nën supervizimin e CLR e cila garanton disa tipare dhe sjellje specifike të programeve për sa i përket menaxhimit të kujtesës, sigurisë dhe menaxhimit të përjashtimeve.

Pavarësia e gjuhëve. .Net Framework ka prezantuar mekanizmin e CTS (Common Type System) i cili specifikon të gjithë tipet e mundshëm të të dhënave dhe të gjithë konstruktet e programimit që suportohen nga CLR. Gjithashtu specifikon se si këta mund të ndërveprojnë me njëri tjetrin. Në sajë të tij .Net suporton shkëmbimin e instancave të tipeve midis programeve të shkruar në gjuhë të ndryshme programimi të .Net.

Base Class Library. BCL është një librari funksionalitetesh e vlefshme për të gjitha gjuhët që përdorin .Net Framework. Përfshin klasa që enkapsulojnë funksione si p.sh për manipulimin e skedarëve, vizatimin e grafikave, ndërveprimin me bazat e të dhënave si edhe për menaxhimin e skedarëve XML.

Instalim i thjeshtë. .Net framework përfshin disa mjete dhe tipare që ndihmojnë në menaxhimin e instalimeve të sigurtë të softuerëve në mënyrë të tillë që të mos interferojnë me softuerë të tjerë të instaluar paraprakisht.

Siguria. Dizenjimi është konceptuar që të adresojë një sërë problemesh të mundshëm që më parë janë shfrytëzuar nga programe keqdashës si p.sh tejmbushja e baferave. .Net ka krijuar një model të përgjithshëm sigurie për të gjithë aplikacionet.

Portabilitet. Teorikisht .Net Framework ka mundësi që të jetë e pavarur nga platforma (cross-platform). Aktualisht është e tillë në sistemet Windows, Windows CE, Windows Mobile dhe në XBox. Ekzistojnë projekte të cilët synojnë të sjellin platformën .Net në sistemet Linux. I tillë është projekti open-source Mono http://www.mono-project.com/Main_Page.

Page 2: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

2

Figurë 1 - Infrastruktura Common Language

Versionet

Version1 Numri i versionit Data e lëshimit Visual Studio Default në Windows 1.0 1.0.3705.0 2002-02-13 Visual Studio .NET 1.1 1.1.4322.573 2003-04-24 Visual Studio .NET 2003 Windows Server 2003 2.0 2.0.50727.42 2005-11-07 Visual Studio 2005 3.0 3.0.4506.30 2006-11-06 Windows Vista, Windows Server 2008 3.5 3.5.21022.8 2007-11-19 Visual Studio 2008 Windows 7 Pritet të lëshohet nga Microsoft versioni 4.0 së bashku me MS Visual Studio 2010. Në këtë version do të përfshihet suport për programimin në paralel për sistemet multi-core dhe për sistemet e shpërndarë.

Kritika ndaj .Net Framework Aplikacionet që ekzekutohen në një mjedis të menaxhuar si makinat virtuale tentojnë të kërkojnë më

tepër burime se sa aplikacionet e tjerë që i aksesojnë direkt burimet e makinave. Një MSIL (Microsoft Intermediate Language) mund të inxhinierohet në të kundërt (dekompilohet) shumë

më thjeshtë se sa kodet e tjerë burim. Për këtë arsye VS 2005 dhe të tjerat pas saj kanë përfshirë edhe teknika fshehjeje të kodit (obfuscating).

Në mjediset e menaxhuar rregullisht thirret garbave collection për të liruar kujtesën. Kjo gjë pezullon ekzekutimin e aplikacionit për një sasi kohe të paparashikueshme (zakonisht jo më shumë se pak ms, ndërsa në sisteme me kufizime në kujtesë koha mund të jetë më e gjatë). Kjo dukuri i bën këta mjedise të papërshtatshëm për sistemet në kohë reale.

Duke qenë se framework-u nuk është parainstaluar në versionet më të vjetër të Windows përdoruesit duhet që ta instalojnë para se të përdorin aplikimet në .Net. Kjo mund t�i bëjë përdoruesit që të hezitojnë që të shkarkojnë paketat e instalimit meqenëse këto të fundit kanë përmasa të mëdha për hir të përfshirjen së .Net framework në to. Përmasat e .Net Framework janë gjithnjë e në rritje: 54MB për versionin 3.0, 197 për 3.5MB dhe 250MB për 3.5 SP1.

Page 3: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

3

1.2. .Net Compact Framework .Net CF është një version i zvogëluar i .Net Framework. Një pjesë e .Net Framework Class Library që nuk janë të nevojshëm në platformat mobile janë hequr. Gjithashtu është zvogëluar numri i metodave overload. Rrjedhimisht përmasa e .Net CF është sa 8% e .Net Framework. Ky reduktim lejon që .Net CF të përshtatet me pajisjet me kujtesë të kufizuar. Përshtatja favorizohet nga funksionalitetet ekstra për platformat mobile që nuk gjenden në versionin e plotë. Kodi i shkruar në .Net framework mund të ekzekutohet edhe në .Net CF për sa kohë që nuk përdor librari që gjenden jashtë .Net CF. E anasjellta nuk është e vërtetë. 1.3. Sistemet e shfrytëzimit për .Net Compact Framework

Dy sistemet kryesorë për të cilët zhvillohet aplikimet në .Net CF janë Windows CE dhe Windows Mobile. Shpesh

mos kuptimi i ndryshimit midis dy të mësipërmve shkakton konfuzion në zhvilluesit e rinj.

Windows CE

Windows CE është një sistem shfrytëzimi modular i cili mund të përshtat për disa lloj pajisjesh jo desktop.

Zhvilluesit e sistemeve të ndërfutur mund të përdorin një Aplikacion të quajtur Platform Builder me anë të të cilit

mund të zgjedhin me saktësi se cilët module të Windows CE duan të vendosin në sistemin e tyre të shfrytëzimit.

Disa prej moduleve janë thelbësorë, kurse të tjerët janë opsionalë. Rrjedhimisht nuk ekziston një version definitiv

për Windows CE; çdo sistem shfrytëzimi CE është një koleksion modulesh të cilët dizenjuesi ka vendosur t�i

përfshijë në sistem. Një ndër versionet më të fundit të Windows CE është quajtur nga Microsoft si Windows

Embedded CE 6.0. Ekzistojnë edhe versione të tjerë si Windows XP Embedded. Për më tepër informacion mbi

Platform Builder shihni http://msdn.microsoft.com/en-us/embedded/default.aspx.

Windows Mobile

Windows Mobile është sistemi i shfrytëzimit për Pocket PC dhe për smartphone. Konsumatorët që duan një

platformë standarde dhe të stabilizuar për të ekzekutuar softuerët e tyre zakonisht përdorin këto lloj pajisjesh.

Përshtatja që është e mundshme në Windows CE për këta lloj konsumatorësh është e pavlefshme. Ata kanë nevojë

për konsistencë midis pajisjeve dhe përmirësim të qartë nga njëri version tek tjetri.

Kësisoj, prodhuesit e pajisjeve që dizenjojnë dhe ndërtojnë pajisje për Windows Mobile e kryejnë këtë në

përputhje me marrëveshjet me Microsoft i cili dikton funksionalitet bazë harduer që pajisja duhet të ketë si edhe

softuerët që duhet të përfshihen në paketën bazë. Prandaj softuerët që ekzekutohen në pajisjen e një prodhuesi

ekzekutohen edhe në pajisjet e prodhuesve të tjerë. Përdoruesit marrin pajisje të ngjashme për sa i përket

butonave, përmasës së ekranit dhe mënyrës së përdorimit. Disa kohë më parë këta kufizime kanë qenë shumë më

strikt se sa janë sot.

Në fakt Windows Mobile është i ndërtuar mbi Windows CE. Grupi zhvillues i Windows Mobile përdor Platform

Builder për të ndërtuar implementime të veçantë të Windows CE si p.sh shell-in, MS Internet Explorer Mobile etj.

Është detyrë e zhvilluesve që të përzgjedhin platformën që do të përdorin. Zgjedhja nuk është shumë e vështirë.

Nëse jeni duke zhvilluar një aplikacion që mund të përdoret me një dorë nga tastiera dhe që nuk ka laps(Stylus)

atëherë Windows Mobile 6 Standard është zgjedhja e duhur. Nëse po shkruani kod për një harduer jo standard

atëherë patjetër që duhet të përdorni Windows CE. Megjithatë ekzistojnë edhe pajisje që i suportojnë të dy

opsionet. Në dy figurat më poshtë tregohen pamje nga Windows Mobile dhe Windows CE.

Page 4: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

4

Figurë 2 - Windos Mobile

Figurë 3 - Windows CE

Page 5: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

5

1.4. Visual Studio .Net

Krijimi i projekteve për pajisje mobile në Visual Studio .Net nis në të njëjtën mënyrë si edhe për aplikacionet e tjerë

desktop. Shihni figurat:

Figurë 4 - Krijimi i një projekti në .Net për pajisje mobile

Procesi i testimit, ekzekutimit dhe debugging kryhet fillimisht në emulator.

Figurë 5 - Pamje nga VS Studio IDE gjatë zhvillimit të një aplikacioni për Windows Mobile Pocket PC

Page 6: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

6

1.5. Instalimi dhe përgatitja e paketave të instalimit për Windows Mobile

Në mënyrë që një aplikacion të ekzekutohet në një pajisje reale mobile duhet që pajisja të ketë të instaluar

versionin e duhur të .Net CF. Paketa e instalimit për të vjen me prapashtesë .cab dhe mund të instalohet thjesht në

pajisje. Me të njëjtën prapashtesë ndërtohen edhe paketat e instalimit për aplikimet. Ndërtimi i paketave të

instalimit mund të kryhet edhe me anë të Visual Studio si CAB Project ose Smart Device CAB Project.

2. Ndërtimi i ndërfaqeve grafike për Windows Mobile

2.1. Format dhe Kontrollet në Visual Studio .Net

Disa prej komponentëve kryesorë GUI të vlefshëm në VS .Net janë: Form, Button, CheckBox, ComboBox,

ContextMenu, DataGrid, DomainUpDown, HScrollBar, ImageList, InputPanel, Label, Listbox, ListView, MainMenu,

NumericUpDown, OpenFileDialog, Panel, PictureBox, ProgressBar, RadioButton, SaveFileDialog, StatusBar,

TabControl, TextBox, Timer, Toolbar, TrackBar, TreeView, VScrollBar etj. Disa prej tyre janë komponentë mbajtës,

të tjerë jo. Form është i vetmi kontroll i nivelit të lartë ku mund të vendosen gjithë të tjerat. Forma është pjesë e

System.Windows.Forms namespace.

Property Përshkrim

BackColor Ngjyra në background. ContextMenu Menuja kontekstuale. Controls Koleksioni i kontrolleve në form. DialogResult Rezultati që merret pasi forma shfaqet në formë dialogu. Enabled E aktivizuar ose jo. MaximizeBox Kontrollon nëse duhet të shfaqet kutia e maksimizimit të dritares. Menu Menuja kryesore e forms. MinimizeBox Kontrollon nëse në cep të dritares duhet të shfaqet X apo OK. Text Titulli Visible Kontrollon nëse forma është e dukshme apo jo.

Figurë 6 - Property të Form

Ndërsa metodat më të përdorura për Form janë: Close() Hide() Show() Ngjarjet:

Kategoria Emri i ngjarjes Gjendja e aktivizimit Activated Deactivate Hapje dhe mbyllje Load Closing Closed Disposed Fokusi i tastierës GotFocus LostFocus Inputi nga tastiera KeyDown KeyPress KeyUp Inputi nga Mausi MouseDown MouseMove Click MouseUp

Page 7: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

7

Ndryshim Gjendjeje EnabledChanged TextChanged Paint ParentChanged Resize Validim Validating Validated

Figurë 7 - Ngjarje të Form

Më poshtë tregohet një shembull i thjeshtë se si mund të ndërtohet një formë në C# .Net, si mund të shtohen

kontrolle në të dhe se si mund të caktohen ngjarje për secilin prej kontrolleve. Kodin e plotë të shembullit do ta

gjeni në skedarin mob example9-1.rar. using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; namespace FormEvents { /// <summary> /// Summary description for FormMain. /// </summary> public class FormMain : System.Windows.Forms.Form { string strAppName = "Form Events"; private int m_cEvents; private int cEvents { get { return m_cEvents; } set { m_cEvents = value; Text = strAppName + " (" + m_cEvents.ToString() + ")"; } } private bool bShowMouseMove = false; //deklarimi i kontrolleve në formë private System.Windows.Forms.ListBox lboxEvents; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.CheckBox chkMouseMove; private System.Windows.Forms.Button cmdMessageBox; private System.Windows.Forms.Button cmdFormFocus; private System.Windows.Forms.TextBox textBox2; private System.Windows.Forms.Button cmdNothing; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Label Label1; private System.Windows.Forms.Button cmdClear; private System.Windows.Forms.MainMenu mainMenu1; public FormMain() { //

Page 8: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

8

// Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { //krijimi i instancave përkatëse të kontrolleve this.mainMenu1 = new System.Windows.Forms.MainMenu(); this.lboxEvents = new System.Windows.Forms.ListBox(); this.cmdClear = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.cmdFormFocus = new System.Windows.Forms.Button(); this.chkMouseMove = new System.Windows.Forms.CheckBox(); this.cmdMessageBox = new System.Windows.Forms.Button(); this.textBox2 = new System.Windows.Forms.TextBox(); this.cmdNothing = new System.Windows.Forms.Button(); this.textBox1 = new System.Windows.Forms.TextBox(); this.Label1 = new System.Windows.Forms.Label(); //për secilin prej kontrolleve përcaktohen tiparet bazë të tyre // // lboxEvents // this.lboxEvents.Location = new System.Drawing.Point(-1, -1); this.lboxEvents.Size = new System.Drawing.Size(242, 72); // // cmdClear // this.cmdClear.Location = new System.Drawing.Point(184, 80); this.cmdClear.Size = new System.Drawing.Size(48, 20); this.cmdClear.Text = "Clear"; this.cmdClear.Click += new System.EventHandler(this.cmdReset_Click); // // panel1 // this.panel1.Controls.Add(this.cmdFormFocus); this.panel1.Controls.Add(this.chkMouseMove); this.panel1.Controls.Add(this.lboxEvents); this.panel1.Controls.Add(this.cmdClear); this.panel1.Size = new System.Drawing.Size(240, 104);

Page 9: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

9

// // cmdFormFocus // this.cmdFormFocus.Location = new System.Drawing.Point(96, 80); this.cmdFormFocus.Size = new System.Drawing.Size(80, 20); this.cmdFormFocus.Text = "Form Focus"; this.cmdFormFocus.Click += new System.EventHandler(this.cmdFormFocus_Click); // // cmdMessageBox // this.cmdMessageBox.Location = new System.Drawing.Point(56, 192); this.cmdMessageBox.Size = new System.Drawing.Size(120, 24); this.cmdMessageBox.Text = "Show MessageBox"; this.cmdMessageBox.Click += new System.EventHandler(this.cmdMessageBox_Click); //�vazhdon specifikimi i kontrolleve // // FormMain // this.BackColor = System.Drawing.Color.LightGray; this.Controls.Add(this.Label1); this.Controls.Add(this.textBox1); this.Controls.Add(this.cmdNothing); this.Controls.Add(this.textBox2); this.Controls.Add(this.cmdMessageBox); this.Controls.Add(this.panel1); this.Menu = this.mainMenu1; this.MinimizeBox = false; this.Text = "Form Events"; this.Disposed += new System.EventHandler(this.FormMain_Disposed); //�shtohen të gjitha ngjarjet e formës } #endregion /// <summary> /// The main entry point for the application. /// </summary> static void Main() { Application.Run(new FormMain()); } private void AddItem(string strItem) { lboxEvents.Items.Add(strItem); lboxEvents.SelectedIndex = cEvents; cEvents++; } private void FormMain_Deactivate(object sender, System.EventArgs e) { AddItem("FormMain_Deactivate");

Page 10: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

10

} //implementohen të gjitha metodat për ngjarjet e formës private void cmdReset_Click(object sender, System.EventArgs e) { lboxEvents.Items.Clear(); cEvents = 0; } private void cmdMessageBox_Click(object sender, System.EventArgs e) { MessageBox.Show("A Message Box", strAppName); } //implementohen të gjitha metodat për ngjarjet e kontrolleve në formë } } 2.2. Data Binding

Data Binding është aftësia që mundësohet në gjuhët e .Net për të shoqëruar objektet që nuk i përkasin GUI-t dhe

që ruajnë të dhëna, me kontrolle që prezantojnë dhe marrin të dhëna si input. Data Binding në mënyrë specifike u

zhvillua për të lehtësuar lëvizjen e të dhënave midis nivelit të biznesit dhe nivelit të prezantimit në një aplikacion

tradicional me tre nivele. Kjo është në fakt një marrëdhënie dy drejtimore. Çdo ndryshim në të dhënat pasqyrohet

në kontrolle, dhe çdo ndryshim në kontroll pasqyrohet gjithashtu tek të dhënat.

Kontrollet ndryshojnë nga njëri tjetri nga aftësitë që ata kanë për tu lidhur me të dhënat me anë të data binding.

Disa kontrolle mund të shfaqin më shumë të dhëna se të tjerët, disa pranojnë input nga përdoruesi dhe të disa të

tjerë jo, disa kanë avantazhin e përdorimit të data binding kompleks kurse të tjerët suportojnë vetëm data binding

të thjeshtë. Rasti më i zakonshëm është kur si data source shërben një System.Data.DataTable. Gabimisht

mund të krijohet ideja që komponentet e thjeshta kanë data binding të thjeshtë. Në fakt është krejt e kundërta.

Objektet që kanë data binding në mënyrë të natyrshme janë më të përshtatshëm nqs kanë disa kolona. Për ata që

kanë vetëm një kolonë çështja bëhet pak më tepër e ndërlikuar. Kontrollet që kanë data binding kompleks janë

ComboBox, DataGrid, ListBox. Tiparet e tyre që përdoren gjatë krijimit të data binding janë:

Property Përkufizimi Vërejtje DataSource Objekti me të dhëna E detyruueshme DisplayMember Kolona që duhet të shfaqet Opsionale për DataGrid ValueMember Kolona që duhet të përdoret si

identifikues për rreshtin Opsionale; kolona e çelësit primar për objektin e të dhënave

SelectedIndex Indeksi aktualisht i përzgjedhur Bazuar në 0 SelectedItem Objekti me të dhëna i përzgjedhur I barabartë me

DataObject[Control.SelectedIndex] SelectedValue Vlera e ValueMember e objektit të

përzgjedhur

Figurë 8 - Property që përdoren për Data Binding

2.3. Ndërtimi i një CustomControl

.Net CF ofron një larmishmëri tiparesh për krijimin e aplikacioneve, ndër këto bën pjesë edhe Toolbox-i me

kontrolle. Megjithatë ndonjëherë funksionalitetet e kontrolleve në Toolbox nuk janë të mjaftueshëm. Në raste të

tillë nevojitet të ndërtohen kontrolle të personalizuar për të mbushur boshllëkun që krijohet. Ja disa shembuj kur

ju mund t�ju duhet të ndërtoni kontrolle të personalizuar

Page 11: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

11

Doni të ndërtoni një TextBox të tillë që pranon dhe shfaq vetëm data që shtrihen brenda një intervali

specifik.

Keni vendosur një grup kontrollesh në një formë për të shfaqur emrin dhe informacione mbi adresën e një

individi/kompanie. Të njëjtin grup kontrollesh doni ta përdorni në shumë dritare ose në shumë

aplikacione të tjerë.

Doni që të pranoni input nga mausi ose nga tastiera në një mënyrë jostandarde, ndoshta ta përdorni

inputin e mausit për të vizatuar ose për të naviguar shfaqjen e disa të dhënave.

Doni të shfaqni informacion specifik për aplikacionin, si p.sh gjendjen e lojës ose një graf që tregon

progresin e projektit.

.Net CF i menaxhon të gjitha këto situata duke lejuar zgjerimin e kontrolleve ekzistues dhe mënyra të tjera si:

1) Mund të trashëgoni nga një kontroll ekzistues si p.sh nga Textbox.

2) Mund të krijoni kontrolle kompozitë.

3) Mund të krijoni kontrolle të rinj.

Një kontroll i personalizuar (custom control) gjithmonë përcaktohet si klasë e re. Për të patur sukses me krijimin e

kontrolleve duhet që të kuptoni plotësisht kontrollet ekzistues dhe klasat bazë mbi të cilat ata ndërtohen. Kjo

është veçanërisht shumë e rëndësishme për ata programues që kanë përvojë në krijimin e kontrolleve të

personalizuar për desktop .Net sepse kontrollet e .Net CF janë të ndryshëm nga analogët e tyre për desktop. Klasa

të mundshme nga të cilat mund të trashëgoni janë:

1) Një klasë ekzistuese kontrolli. 2) System.Windows.Forms.Control 3) System.ComponentModel.Component 4) Object

Kodi i mëposhtëm tregon se si mund të krijohet një TextBox i personalizuar i cili ka disa tipare/sjellje më tepër se

sa TextBox i zakonshëm.

using System; using System.Windows.Forms; namespace YaoDurant.Gui { public class TextBoxPlus : TextBox { // Constructor public TextBoxPlus() { this.Width *= 2; } // Overridden method protected override void OnGotFocus(EventArgs e) { base.OnGotFocus(e); this.SelectAll(); } // Overridden property public override string Text { get { return base.Text;

Page 12: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

12

} set { value = value.ToUpper(); base.Text = value; } } // Original method public string ToStringLower() { return this.Text.ToLower(); } } } Gjatë trashëgimit të një kontrolli vetjak për të krijuar kontrolle të rinj duhet të kryhen edhe disa vendimmarrje si

p.sh mënyra e testimit, si do të shtohen tiparet/sjelljet e reja etj. Shembulli që vijon synon të krijojë një kontroll

për pranim/menaxhim inputi në formë date. Për të sjellë këtë funksionalitet janë shtuar property si: Date,

Format, MaxDate, MinDate.

Vendimmarrje 1

Një tjetër problem për tu zgjidhur është mënyra se si do të ekspozohet përmbajtja e personalizuar e kontrollit, në

rastin konkret data. Vetë TextBox mbi të cilin ndërtohet kontrolli i ri ka një property universale Text për

ekspozimin e përmbajtjes e cila bie në konflikt me property-n e shtuar Date. Dy mënyrat më të mira për të

menaxhuar këtë situatë janë:

Të sinkronizohen property-t Text dhe Date dhe të dyja të jenë funksionale.

Të sinkronizohen property-t Text dhe Date por Text të jetë vetëm e lexueshme

Vendimmarrje 2

Përderisa përmbajtja e personalizuar e kontrollit është e ndryshme nga përmbajtja origjinale, është e nevojshme

që të ketë kritere të ndryshëm valimi. Cili është vendi më i përshtatshëm për krijimin e këtyre kritereve?

Monitorimi i përmbajtjes mund të kryhet në ngjarje si TextChanged, LostFocus, ose në një prej ngjarjeve

Validation. Zakonisht zgjidhen ngjarjet Validating dhe Validated si të përshtatshme meqenëse teksti

duhet të modifikohet pasi përdoruesi ta ketë shkruar dhe jo në momentin që e shkruan. Tjetër mundësi është që

validimi të kryhet në pjesën Set{...} të property-ve. Në shembullin mob example9-2.rar tregohet i plotë kodi

për ndërtimin dhe përdorimin e DateBoxControl.

Testimi i kontrolleve të personalizuar

Gjatë krijimit të kontrolleve të personalizuar programuesit ballafaqohen shpesh me problemin e testimit të tyre,

duke qenë se DLL-të (.dll është formati i output-it për një librari me kontrolle në .Net) nuk mund të ekzekutohen

vetë. Kjo çështje mund të zgjidhet në dy mënyra:

Së pari është e mundur që gjatë zhvillimit fillestar të kontrollit mund ta përfshijmë atë në brenda projektit të

programit. Kjo është mënyrë e thjeshtë për ta testuar kontrollin.

Së dyti, nëse duam të krijojmë kontrollin në një DLL i cili duhet të vendoset në Toolbox-in e VS .NET atëherë brenda

të njëjtit solution në .Net mund të krijojmë dy projekte, njëri prej të cilëve është ai i cili mban kontrollin në fjalë.

Projekti tjetër shërben për të testuar kontrollin e personalizuar.

Page 13: Leksion 9 - Programimi per Windows Mobilemobile.geo.edu.al/wp-content/uploads//Leksion_9... · 2013. 6. 29. · Programim Mobile Leksion 9 Œ Programimi pºr Windows Mobile 2 Figurº

Programim Mobile Leksion 9 � Programimi për Windows Mobile

13

Figurë 9 - Brenda të njëjtit solution në .Net janë përfshirë dy projekte, njëri që përfshin kontrollin e personalizuar dhe tjetri

që shërben për ta testuar atë