C++ & C# Programming page
 

 

# Úvod
# Tvůrci
# C++
# C#
# Linky





Textový editor

Dnes si ukážeme, jak tím nejjednodušším způsobem lze napsat textový editor. Budu popisovat jak ho udělat ve Visual Studiu .NET 2003 (tzn. s grafickým vytvářením UI a s automatickým generováním inicializace. Návod je dosti podrobný.

Takže, začneme tím že si vytvoříme nový projekt Windows Application. V designer modu se nám zobrazí hlavní okno (základ UI aplikace). V nastavení okna můžeme nastavovat různé věci. Od průsvitnosti okna, až po zobrazení nebo nezobrazení na liště. Nás ale bude zajímat hlavně jméno prvku se kterým pracujeme v programu a Text, který se zobrazuje na horní liště okna. Potom si z Toolboxu přidáme potřebné dialogové prvky.

Začneme RichTextBoxem. Je to hlavní dialogový prvek který potřebujeme pro zobrazení a editaci textu. Podporuje i formátování, ale my ho v tomto programu budeme využítat pouze ke zobrazení a editaci PlainTextu (prostého textu). RichTextBox umístíme přes celé okno a v nastavení -> Layout -> Anchor nastavíme všechny 4 strany (Top, Bottom, Left, Right) (znamená to, že pokud budeme okno zvětšovat nebo zmenšovat bude se RichTextBox zvětšovat a zmenšovat s ním, protože jsme ho přichytili ke všem stranám. Také je praktické si v nastavení nastavit jméno prvku, aby se s ním pak v programu lépe pracovalo (standartně tam býva richTextBox1 a když máte v programu takových prvků víc, nevíte který je který. Já jsem si ho v tomhle příkladu pojmenoval "Poznamky". Prvek v aplikaci inicializujeme tím, že na něj v Designer modu 2x klikneme.

Druhá důležitá věc je MainMenu (prostě ta lišta nahoře). Po tom co ji přidáme musíme v nastavení celého okna definovat u položky MainMenu právě toto menu. Potom můžeme do menu přidávat další záložky a jejich položky. Standartně vytrváříme záložky Soubor, Úpravy, Formát, Možnosti a Help. Do záložky soubor přidáme položky Nový (v nastavení mu dáme zkratku Ctrl + N), Otevřít (Ctrl + O), Uložit (Ctrl + S) a Konec. Mezi položky můžeme taky vkládat separátory (ty malé tenké proužky). Ty jsou tam jen z důvodu přehlednosti. Do záložky Úpravy přidáme položky Zpět a Vpřed (Ctrl + Z, Ctrl + Y). Ve "Formátu" bude položka písmo a zalamování textu (WordWrap). V menu Možnosti si ukážeme jednu funkci navíc. A sice funkci opacity (průhlednost), ale o tom si napíšeme až úplně nakonec. A v menu Help si přidáme položku O Programu (kdy nám vyběhne dialogové okno), ale o tom si taky řekneme později. Nakonec u všech položek nastavíme nějaká slušná jména, kterým budeme rozumět a všechny je inicializujeme dvojklikem.

Teď ještě přidáme dialogové okna na otevření souboru, uložení souboru, a dialog pro nastavení textu (všechny je inicializujeme).

Můžeme přepnout do code zobrazení a začít psát.

Nejprve se podíváme na otevření souboru:
private void OpenMenu_Click(object sender, System.EventArgs e)

     //zobrazí dialog na otevření souboru s filtrem na *.txt nebo na všechno
     LoadFile.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
     LoadFile.ShowDialog();
}
Pokud je kliknuto na položku Otevřít (OpenMenu je jen jméno, které jsem si zvolil), potom v LoadFile (jméno dialogu na otevření souboru) nastav filtr na txt soubory nebo na všechny soubory a zobraz samotný dialog.

Teď se podíváme jak to funguje po tom co se otevře dialog:
private void LoadFile_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
      //otevře soubor vybraný v LoadFile dialogu, zobrazí ho jako prostý text 
     Poznamky.LoadFile(LoadFile.OpenFile(), RichTextBoxStreamType.PlainText);
}
V RichTextBoxu se otevře soubor vybravý v LoadFile dialogu a otevře se jako typ PlainText.

Podobně to je i s uložením souboru. Nebudu to tu popisovat. Pokud to chcete vidět, můžete si stáhnout zdrojáky.

Klik na tlačítko Nový bude obsahovat jedinou metodu - vymaže všechen text z TextBoxu
private void NewMenu_Click(object sender, System.EventArgs e)
{
      //vymaže všechen text
     Poznamky.Text = null;
}

A tlačítko Konec bude obsahovat také jedinou metodu - Close(); Její význam si určitě domyslíte sami.
Můsíme však myslet na to, že každý slušný program se zeptá předtím než se opravdu ukončí, proto musíme napsat novou metodu, která bude reagovat na ukončování programu:
private void Okno_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
     //reaguje na vypínání Okna
     //vyhodí MsgBox s dotazem na potvrzení 
     //pokud kliknete na No metoda se stornuje a program se neukončí
     //v opačném případě se nic nestane a program úspěšné dokončí své ukončování

     if(MessageBox.Show("Opravdu chceš skončit?", "Potvrzení",
     MessageBoxButtons.YesNo,
     MessageBoxIcon.Question)== DialogResult.No)
     e.Cancel = true;
}

V menu úpravy jsou položky Zpět a Vpřed. Obě jsou skoro stejné:
private void UndoMenu_Click(object sender, System.EventArgs e)
{
     //vrátí poslední změnu v okně s textem
     Poznamky.Undo();
}
Fukce vpřed je skoro stejná. viz. zdroják

V menu Formát jsou položky Zalamování textu a Písmo
Zalamování textu:
private void WordsWrap_Click(object sender, System.EventArgs e)
{
     //neguje (obrátí) funkci WordWrap(zalamování textu) (zapne nebo vypne)    
     Poznamky.WordWrap = !Poznamky.WordWrap;
     //neguje symbol fajfky (zapne nebo vypne)
     WordsWrap.Checked = !WordsWrap.Checked;
}

Písmo:
private void TextMenu_Click(object sender, System.EventArgs e)
{
     //zobrazí dialog o nastavení písma
     FontDialog.ShowDialog();
     //označí všechen text  
     Poznamky.SelectAll();
     //u označeného textu změní nastavení z Font dialogu
     Poznamky.SelectionFont = FontDialog.Font;
     //odznačí všechno písmo a kurzor zůstane na konci 
     Poznamky.Select(Poznamky.TextLength, Poznamky.TextLength); 
}

Teď se podíváme na dialogové okno O Programu.
K projektu musíme přidat new item - Windows Form (Obyč. okno). Okno nazveme třeba Dialog. Pak do něj z ToolBoxu naházíme nějaké texty,  obrázky atd (v příkladu si ukážeme jak přidat i odkaz na stránku. A přidáme také jedno tlačítko na uzavření okna. U tlačítka zase použijeme metodu Close(); - tentokrát již nebudeme potřebovat MsgBox jako potvrzení... Na zmíněný odkaz na web stránku může odkazovat většina dialogových prvků, nejčastěj se však používa prvek LinkLabel. Vytvoříme ho tedy, a inicializujeme.
Pro vytvoření linku použijeme tyto funkce:
private void HomepageLink_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.EnableRaisingEvents=false; 
     proc.StartInfo.FileName="iexplore";
     proc.StartInfo.Arguments="http://c-programming.wz.cz";   
     proc.Start();
}
Ještě aby se okno zobrazilo, musíme v hlavním okně v položce O Programu, nastavit:
private void AboutMenu_Click(object sender, System.EventArgs e)

     //zobrazí dialogové okno o programu 
     Dialog x = new Dialog();
     x.Visible = true;
}
A je hotovo

No a teď se konečně můžeme podívat na takový malý bonus - Opacity (průhlednost). V hlavním okně přidáme dialogový prvek panel a do něj prvek TrackBar. V nastavení panelu nastavíme u Visibility false (aby standartně nebyl vidět). V nastavení trackbaru nastavíme aby měl 10 poloh a aby začínal na poloze 10 (začíná se se 100% viditelností programu. Také můžeme nastavit aby byl panel a trackbar přichycený k Top, Left, Right. Nyní nastavíme co se má dít po kliknutí na položku Průhlednost:
private void OpacityMenu_Click(object sender, System.EventArgs e)
{
     //neguje (obrátí) se hodnota viditelnosti panelu s nastavením Průhlednosti
     //zobrazí panel s TrackBarem, na změnu průhlednosti
     Panel.Visible = !Panel.Visible; 
     //po dokončení nastavování musíme znova kliknout na položku Průhlednost, aby se znovu negovala viditelnost panelu
}

A teď samotné nastavení:
private void OpacityBar_Scroll(object sender, System.EventArgs e)
{
     int o = OpacityBar.Value; //pomocná proměnná s uloženou pozicí TrackBaru
     switch(o)
     {
          case 0: //pokud je rovna 0 
               Okno.ActiveForm.Opacity = 0.05; //nastaví průhlednost na 5%
               break;
          case 1: //pokud je rovna 1
               Okno.ActiveForm.Opacity = 0.145; //nastaví průhlednost na 14,5%
               break;

             ...(sem patří case s čísly 2-9)...


          case 10: //pokud je rovna 10
               Okno.ActiveForm.Opacity = 1; //nastaví průhlednost na 100%
               break;
     }
}

Tak, a náš textový editor je hotov.


[ EXEcko ] [ zdrojáky ]



Správce sekce: Lahvy



14.2 2005

C++: pridano par odkazu na clanky o OpenGL, IRC, POP3 a BMP
14.8 2004

C++: přidán klient pro Internet Relay Chat (IRC)
11.7 2004

C++: opravil jsem zdrojak WebServeru, byla tam navic jedna funkce kterou jsem nepridal a mnoho zacatecniku by si s tim nemuselo vedet rady...
27.6 2004

Vytvořen IRC kanál #c-prog na serveru Quakenet
10.6 2004

C++: přidán program WebServer, stojí za prohlédnutí!
5.6 2004

C++: přidán článek o CheckBoxu
29.5 2004

C++: přidán program WinSock Mail
28.5 2004

C#: přidán program DNStoIP
Vaše IP je 54.92.170.142
Stránka byla načtena za 0.0136 sekund.