Staňte se programátorem: Jednoduchý textový editor

Čtenáři si přejí více článků o programování. Vyslyšeli jsme jejich prosby a každý týden tak budeme publikovat jeden funkční kód včetně přeloženého spustitelného programu.

Na českém internetu najdete mnoho nejrůznějších seriálů o programování – ostatně vývoji desktopových i internetových aplikací se věnuje hned několik odborných serverů. Své zásluhy má také naše Živě.cz, kde v minulosti vyšlo hned několik zajímavých sérií na téma C#, PHP, HTML/CSS, SQL a mnoho dalšího. Všechny články najdete v našem archivu. Jejich kvalitu podtrhuje i skutečnost, že se některé z nich šíří na internetu ve formátu PDF. Raději si je ale přečtěte u nás, jen zde totiž najdete zpětnou vazbu v podobě diskuze pod článkem.

Žádný „Hello world!“, pouze praktický kód

Vzhledem k tomu, že díky novým jazykům a skvělým vývojovým „RAD“ prostředím je programování stále jednodušší ale i barvitější, rádi bychom na tyto skvělé seriály navázali. Znalost PHP či starého „Céčka“ dnes ostatně už nestačí, a pokud chcete držet krok s dobou, neobejdete bez moderních vysokoúrovňových jazyků a technologií.

V následujících týdnech a měsících se dozvíte, jak se programuje a z čeho se skládá doplněk pro Firefox, Google gadget nebo miniaplikace pro postranní lištu Windows Vista. Nakonec přijde řeč i na tvorbu Opera widgetů, Adobe AIR aplikací v HTML i Flexu, doplňků pro Internet Explorer a nesmíme samozřejmě zapomenout ani na moderní Web 2.0 mashupy. Poradíme vám tedy i s tím, jak si na svých běžných webových stránkách postavit robustní mapovou aplikaci s využitím Google Maps API a Microsoft Virtual Earth, nebo jak napsat vlastní webovou aplikaci pro oblíbený komunitní web Facebook.

Tip: Víte, jak se programují mashup aplikace pro internet s využitím technologií Googlu i Microsoftu? Dokážete napsat vlastní web postavený na Google Maps API? Přečtěte si recenzi knihy Programujeme Mashup aplikace pro Web 2.0 v PHP

Naše nová série článků se bude od běžných návodů skutečně lišit. Nechceme, abyste cokoliv kopírovali přes schránku, stejně tak nám připadá zbytečné opakovat stokrát řečené. Každý příklad tak ve stručnosti popíše, jaký postup autor použil, co k tomu bylo třeba a zdůrazní maximálně ty nejdůležitější části zdrojového kódu. Zbytek, tedy ten skutečný kód, najdete společně s přeloženým programem v příloze.

Programujeme v Microsoft Visual C# 2008 Express Edition

Na závěr tak vznikne zajímavá edice praktických programů a doplňků, které budete moci využít i v běžném kybernetickém životě. Začít se ale musí pokaždé od „píky“, první týdny se tedy budeme věnovat základním technikám a programovacím jazykům prostředí Microsoft .NET Framework – především pak C#, který tvoří ideální kompromis mezi Javou, C++ a tak trochu i legendárním Delphi, jehož autoři se podíleli i na tvorbě tohoto jazyka. Nemá smysl zde opět rozebírat výhody i nevýhody C# a .NETu, pakliže jsou vám tedy tato dvě slůvka naprosto cizí, určitě si prostudujte naše starší články.

Všechny C# projekty budou připravené pro nejnovější vývojové prostředí Microsoft Visual C# 2008 Express Edition, které sice nenabízí nejpokročilejší vlastnosti a nástroje, nám ale bude bez problému stačit. Nespornou výhodou je také skutečnost, že Express edice Visual Studia může každý z vás používat zcela zdarma.

Stáhněte si zdarma nejnovější vývojové prostředí Microsoft Visual C# 2008 Express Edition

První aplikace - jednoduchý poznámkový blok v C#

V prvním projektu vás náš vývojář Amadeo Mareš provede tvorbou jednoduchého poznámkového bloku podobného tomu, který znáte z prostředí Windows. Ukážeme si, jak pomocí datových proudů přečíst či uložit textový dokument a jak nastavit font a barvu písma a pozadí textového okna výběrem z přednastavených dialogů. Většinu kódu za nás automaticky vytvoří vývojové prostředí při založení nového projektu a zdrojové kódy včetně přeloženého programu najdete v příloze, dále tedy jen ve zkratce zmíníme ty nejdůležitější části funkčního kódu.

vsee_01.png  vsee_02.png
Projekt poznámkového blogu ve Visual C# 2008 Express Edition: návrh uživatelského rozhraní a zdrojový kód

Okno poznámkového bloku bude obsahovat dvě hlavní komponenty – MenuStrip, která představuje horní nabídku, a RichTextBox představující textové pole do kterého bude uživatel psát. Obě dvě komponenty naleznete v panelu ToolBox programu Visual Studio a přetažením je umístíme na formulář.

Tip: Chcete si své programátorské znalosti ověřit v praxi? Přihlašte se do soutěže .NET Challenge a vyhrajte roční předplatné MSDN Premium a Visual Studio 2008. K výhře vám pomůže i kniha Amadeo Mareše: 1001 tipů a triků pro C#.

Čtení a ukládání textového dokumentu

Pro načtení obsahu textového dokumentu vybraného dialogem OpenFileDialog nám poslouží tato metoda:

OpenFileDialog opf = new OpenFileDialog();
if (opf.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(opf.FileName);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
this.Text = Path.GetFileName(opf.FileName);
}

Nejprve je nutné vytvořit instanci třídy System.Windows.Forms.OpenFileDialog představující klasický dialog systému Windows pro otevírání souborů. Dialog otevřeme metodou ShowDialog, která vrací položku výčtového typu System.Windows.Forms.DialogResult představující tlačítko, kterým uživatel dialog uzavřel. Pokud je vrácena položka “OK” znamená to, že si uživatel vybral soubor, jež má být otevřen. Pro přečtení tohoto souboru je nutné vytvořit instanci třídy System.IO.StreamReader, do jejíž konstruktoru zadáme cestu k souboru, jehož obsah má být přečten (v tomto případě použijeme vlastnost FileName třídy OpenFileDialog představující vybraný soubor). Ke přečtení textového obsahu souboru nám poslouží metoda ReadToEnd, která jej vracíjako datový typ string a pomocí vlastnosti Text komponenty RichTextBox jej zobrazíme. Datový proud k souboru již nepotřebujeme a proto jej můžeme uzavřít metodou Close.

Pro uložení textu, jenž je zobrazen v kompentě RichTextbox, nám poslouží tato metoda:

void Ulož()
{
SaveFileDialog dlg = new SaveFileDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(dlg.FileName);
sw.Write(richTextBox1.Text);
sw.Close();
}
}

Zde budeme postupovat obdobně jako při otevírání souboru. Pro vybrání cesty, kam má být soubor uložen slouží dialog System.Windows.Forms.SaveFileDialog. Práce s ním je v podstatě stejná jako s již dříve zmiňovaným dialogem OpenFileDialog – tedy zobrazíme ho metodou ShowDialog vracející položku výčtového typu DialogResult. Pokud je vrácena položka “OK”, znamená to, že si uživatel vybral místo, kam chce soubor uložit. Pro zapisování textu do souboru slouží třída System.IO.StreamWriter do jejíž kostruktoru dosadíme cestu, kam má být daný text zapsán ( vlastnost FileName dialogu SaveFileDialog) a text umístěný v komponentě RichTextBox zapíšeme metodou Write. Nakonec datový proud k souboru uzavřeme metodou Close.

vsee_04.png  vsee_07.png  vsee_05.png
Hlavní menu s nabídkou pro práci s textovým souborem a nastavení vlastností okna

Nastavení barvy pozadí textového pole a barvy či fontu písma

Pro zobrazení dialogu pro výběr barvy nám poslouží dialog System.Windows.Forms.ColorDialog. Ten jako všechny ostatní dialogy zobrazíme metodou ShowDialog a barvu vybranou uživatelem získáme pomocí vlastnosti Color, která ji vrací jako instanci struktury System.Drawing.Color.

Pro nastavení pozadí komponenty RichTextBox použijeme vlastnost BackColor:

ColorDialog dialogBarvy = new ColorDialog();
dialogBarvy.FullOpen = true;
if (dialogBarvy.ShowDialog() == DialogResult.OK)
richTextBox1.BackColor = dialogBarvy.Color;

Pro nastavení barvy písma RichTextBoxu použijeme vlastnost ForeColor:

richTextBox1.ForeColor = dialogBarvy.Color;

Pro nastavení písma komponenty RichTextBox výběrem z dialogu musíme vytvořit instanci třídy System.Windows.Forms.FontDialog, jehož vlastnost Font vrací vybraný font jako instanci struktury System..Drawing.Font, kterou nastavíme komponentě RichTextBox vlastností Font.

FontDialog dialogFontu = new FontDialog();
if (dialogFontu.ShowDialog() == DialogResult.OK)
richTextBox1.Font = dialogFontu.Font;

Uložení souboru při uzavírání programu

Při uzavírání okna aplikace necháme uživatele rozhodnout, zda chce rozepsaný dokument uložit či nikoli. Uzavírání formuláře detekuje jeho událost FormClosing. Obsluha této události může vypadat například takto:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// Chce uživatel před uzavřením programu text uložit?
if (richTextBox1.Text != "")
if (MessageBox.Show("Přejete si dokument před ukončením aplikace uložit?","Uložení dokumentu", MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.Yes)
Ulož();
}

Hotový jednoduchý poznámkový blok

vsee_03.png

A to je všechno. Samozřejmě můžete namítnout, že toho zatím náš textový editor moc neumí, jako upoutávka pro naše budoucí projekty ale poslouží mnohem praktičtěji než zbytečný Ahoj světe! program, s jehož kódem se setkáte v první kapitole prakticky každé učebnice programování.

Kód si můžete dále dopracovat sami a vylepšit jej třeba o nějaké nové vlastnosti a schopnosti. Nakonec tedy nezbývá, než odkázat na zdroje, se kterými každý z vás může naložit dle svého gusta a hurá do programování. Je to přeci jednoduché.

Ke spuštění programu budete potřebovat prostředí Microsoft .NET Framework

Máte zajímavý tip na drobnou aplikaci, kterou byste zde chtěli vidět? Neváhejte a napište nám váš nápad do diskuze pod článkem. 

Diskuze (70) Další článek: Ke stažení: doplňte svůj software o GPS

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,