• Rezultati Niso Bili Najdeni

Gradniki na anketnem obrazcu

In document Načrtovanje programskih (Strani 31-36)

GroupBox TextBox NumericUpDown

LinkLabel

Button PictureBox DateTimePicker

ComboBox MaskedTextBox

GroupBox TextBox (Multiline=True)

CheckedListBox

CheckedListBox

ComboBox

NotifyIcon GroupBox RadioButton

Button CheckBox

Večina lastnosti gradnikov je privzetih, nekaterim gradnikom pa lastnosti malo popravimo:

Obrazec Form1: lastnost BackColor nastavimo na PaleGoldenrod, za lastnost Text pa zapišimo Anketa.

LinkLabel: gradnik ima vlogo povezave (hyperlink): njegovemu dogodku LinkClicked priredimo zagon poljubnega programa (npr. Windows Explorer-ja, Internet Explorer-ja, urejevalnika, ..). Gradnikom tega tipa na obrazcu nastavimo lastnost Text (tako kot kaže slika) in VisitedLinkColor (nastavimo poljubno barvo – ko bo uporabnik kliknil na gradnik, se bo njegova barva ustrezno spremenila).

NumericUpDown: Gradnik je namenjen le vnosu celih števil. Z lastnostma Max in Min lahko določimo največje in najmanjše število, ki ga uporabnik lahko vnese.

GroupBox: gradnik tega tipa je namenjen združevanju gradnikov, ki po neki logiki spadajo skupaj. V našem primeru ima ta gradnik še poseben pomen pri združevanju radijskih gumbov. Med gumbi, ki so znotraj posameznega obrazca, je lahko naenkrat izbran (ima pikico) le eden. Kadar pa imamo dve (ali več skupin) tovrstnih gumbov, vsako skupino postavimo znotraj združevalnega gradnika. Pravilo, da lahko uporabnik izbere le en radijski gumb, namreč velja znotraj posameznega združevalnega gradnika.

Ko ga postavimo na obrazec, ga lahko premaknemo tako, da ga z miško "primemo" za križec v zgornjem levem robu.

ComboBox: Uporabimo ga za vnos poljubnega števila vrstic besedila, med katerimi bo uporabnik lahko izbiral s pomočjo spustnega seznama. Na obrazcu so trije gradniki tega tipa:

o ComboBox za izbiro kraja: ko ga postavimo na obrazec, najprej kliknemo na trikotnik v desnem zgornjem robu tega gradnika. Odpre se okno, v katerem izberemo opcijo Edit Items… (ali pa v oknu Properties kliknemo na lastnost Items) in vnesemo nekaj krajev (vsakega v svojo vrsto, brez ločil!). Lastnost DropDownStyle pustimo nespremenjeno (DropDown): na ta način uporabniku omogočimo izbiro enega od že vnesenih krajev, poleg tega pa ima možnost, da v prazno polje vpiše nek drug kraj.

o Dva tovrstna gradnika za izbiro najbolj in najmanj priljubljenega TV programa. S pomočjo lastnosti Items… vnesemo nekaj TV programov, vsakega v svojo vrsto, brez ločil. Obema nastavimo še lastnost DropDownStyle na DropDownList. Na ta način bomo uporabniku dovolili le izbiro enega od vnesenih programov, ne bo pa mogel vpisati svojega.

Button: zgornjemu gumbu poleg lastnosti Text (Facebook) določimo še sliko za ozadje.

MaskedTextBox: v gradniku lahko nastavimo ustrezno masko, ki je uporabnikom v pomoč pri vnašanju podatkov, npr. za vnos telefonske številke, datuma, časa, …

TextBox: gradniku za vnos mnenja o programu nacionalne TV nastavimo lastnost Multiline na true. Na ta način lahko v gradnik zapišemo poljubno število vrstic, lastnost ScrollBars pa na Vertical (nastavimo navpični drsnik). Lastnost BackColor tega gradnika naj bo npr. Gold.

CheckBox: gradnik uporabniku omogoča izbiro ali brisanje ponujene možnosti.

CheckedListBox: gradnik tega tipa vsebuje poljubno število gradnikov tipa CheckBox. V oba gradnika s pomočjo lastnosti Items (klik na tripičje ob lastnosti) vnesemo seznam TV programov, lastnost BackColor pa naj bo npr. Gold.

NotifyIcon: ta gradnik omogoča prikaz ikonce v vrstici Windows Taskbar (običajno na spodnjem desnem robu zaslona). Ko gradnik postavimo na obrazec, se pokaže v prostoru pod obrazcem, na dnu urejevalniškega okna. Gradniku moramo nastaviti ustrezno ikono, za kar uporabimo lastnost Icon: kliknemo na tripičje ob lastnosti in s pomočjo okna, ki se odpre, poiščemo ustrezno datoteko tipa .ico.

Ostane nam še pisanje kode. Vsem trem gradnikom tipa LinkLabel nastavimo odzivne metode LinkClicked. Gumbu za zagon Facebook-a napišemo odzivno metodo dogodka Click, gumbu na dnu obrazca prav tako, v njej pa zapišemo kodo, s pomočjo katere bomo uporabnikove vnose zapisali v tekstovno datoteko Anketa.txt. Ta se nahaja v mapi Bin→Debug znotraj našega projekta.

Ko pišemo odzivno metodo na določen dogodek pogosto enostavno rečemo, da

"nastavimo dogodek".

Pri delu se nam bo slej ko prej zgodilo, da bomo v pogledu Code View pomotoma pobrisali nek dogodek, ki nam ga je ustvarilo razvojno okolje (bodisi, da smo pomotoma dvokliknili na nek gradnik, ali pa smo v oknu Properties dvokliknili na napačen dogodek). Ko projekt nato skušamo prevesti dobimo obvestilo o napaki.

Napako odpravimo tako, da v oknu ErrorList dvokliknemo na vrstico z napako, nakar nas razvojno okolje postavi v datoteko .designer.cs in sicer na mesto napake. Običajno je potrebno vrstico z napako (to je najava nekega dogodka, ki smo ga ravnokar pobrisali) samo pobrisati.

//metoda za dostop do Windows Explorerja

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

try //varovalni blok za obravnavo prekinitev {

/*označimo, da je bila oznaka že kliknena, zato se ji bo barva spremenila. Nastavili smo jo z lastnostjo VisitedLinkColor*/

linkLabel1.LinkVisited = true;

//metoda Start nas postavi v mapo z rezultati ankete System.Diagnostics.Process.Start("C:\\Anketa\\Datum");

} catch {

MessageBox.Show("Napaka pri odpiranju programa ");

} }

//metoda za dostop do Internet Explorerja

private void linkLabel2_LinkClicked(object sender,

System.Diagnostics.Process.Start("IExplore",

"http://www.napovednik.com/tv/slo1");

System.Diagnostics.Process.Start("Winword.exe","Moji zapiski o oddajah prejšnejega tedna.doc");//zagon Worda in odpiranje datoteke }

private void button1_Click(object sender, EventArgs e) {

try {

//metoda Start za odpiranje Facebook - a

System.Diagnostics.Process.Start("IExplore", "http://sl-si.facebook.com/");

} catch {

MessageBox.Show("Napaka pri odpiranju programa ");

} }

//metoda gumba Shrani za shranjevanje podatkov v tekstovno datoteko private void button2_Click(object sender, EventArgs e)

{

/*ime datoteke: ker nismo napisali poti do datoteke, bo le ta shranjena v mapi Bin -> Debug tekočega projekta*/

string datoteka = "Anketa.txt";

//podatkovni tok za pisanje v tekstovno datoteko StreamWriter pisi = File.AppendText(datoteka);

string ime=textBox1.Text; //shranimo ime in priimek

//ker je vrednost v gradniku NumericUpDown tipa Decimal, jo z metodo //Convert.Toint32 pretvorimo v celo število

int starost=Convert.ToInt32(numericUpDown1.Value); //starost //status je odvisen od izbire oznake v gradniku CheckBox string status = "Poročen";

if (checkBox1.Checked) status="Samski";

string spol="ženski";//spol je odvisen od izbire radijskega gumba if (radioButton1.Checked)

spol="moški";

string datum=dateTimePicker1.Value.ToShortDateString();//datum string kraj=comboBox1.Text;//rojstni kraj

string telefon=maskedTextBox1.Text; //telefon

/*najljubše TV programe zapišemo v niz TVProgramiDa*/

string TVProgramiDa="";

for (int i = 0; i < checkedListBox1.CheckedItems.Count;i++ ) {

//posamezne programe ločimo z vejico

TVProgramiDa = TVProgramiDa + checkedListBox1.CheckedItems[i]+',';

}

/*najmanj priljubljene TV programe zapišemo v niz TVProgramiNe*/

string TVProgramiNe = "";

for (int i = 0; i < checkedListBox2.CheckedItems.Count; i++) {

//posamezne programe ločimo z vejico

TVProgramiNe = TVProgramiNe + checkedListBox2.CheckedItems[i] + ',';

}

string najbolj = comboBox2.Text; //najpogosteje gledani TV program string najmanj = comboBox3.Text; //najredkeje gledani TV program string komentar = textBox2.Text; //komentar o nacionalni TV

/*vse podatke zapišemo v datoteko, vmes pa postavimo ločilni znak ; */

pisi.WriteLine(ime+';'+starost+';'+status+';'+spol+';'+datum+';'+kraj+';' +telefon+';'+TVProgramiDa+';'+TVProgramiNe+';'+najbolj+';' +najmanj+';'+komentar);

pisi.Close();//zapremo podatkovni tok

MessageBox.Show("Podatki so shranjeni v datoteki " + datoteka);

Close(); //zapremo obrazec }

Takole pa je videti obrazec z vnesenimi testnimi podatki:

In document Načrtovanje programskih (Strani 31-36)