Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB.NET: Tekstieditori

Juice [04.09.2004 19:53:27]

#

Simppeli tekstieditori. Jätin tarkoituksella hieman yksinkertaiseksi ettei tule turhaa purkkakoodia ja että aloittelijatkin varmasti tajuaa. Bonuksena läpinäkyvyystila sekä yhteensopivuus myös SharpDevelopin RC3-version kanssa. Koodin vaatimat komponentit ja niiden oletuksista poikkeavat ominaisuudet ovat selkeyden vuoksi listauksessa 2.

Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.IO
Imports Microsoft.VisualBasic
'Viimeinen on SharpDevelop-yhteensopivuuden vuoksi. Ota pois jos herjaa jotakin.

'Määritellään muutama muuttuja. Suosittelen laittamaan
'Windows Forms Designer Generated Coden alle varmuuden
'vuoksi.
Dim Naytettava As StreamReader
Dim polku As String

'Lopetettaessa.
Private Sub mnuLopeta_Click(sender As System.Object, e As System.EventArgs)
    End
End Sub

'Täytyyhän sitä kopiraitit pistää jotta hakkerit
'voivat heksaeditorilla leikkiä, jos löytävät :D
Private Sub mnuInfo_Click(sender As System.Object, e As System.EventArgs)
    MessageBox.Show("Tekstieditori (c) Jussi Kilpeläinen 2004","Info")
End Sub

'Jos halutaan vaihtaa fonttia. Käyttää FontDialogia. Kätevää.
Private Sub mnuFont_Click(sender As System.Object, e As System.EventArgs)
    If FontDialog1.ShowDialog = DialogResult.OK Then
        rtbMain.Font = FontDialog1.Font
    End If
End Sub

Private Sub mnuAvaa_Click(sender As System.Object, e As System.EventArgs)
    'Onko kenttä tyhjä. Jos ei, niin kysytään haluatko
    'tallentaa ennen avaamista.
    If rtbMain.Text <> "" Then
        'Selvitä mitä näytetään tallennuskehotuksessa,
        'kun tiedostossa kerran on jotakin. Tämä saattaa
        'jäädä joillekuille hieman hämäräksi.
        If OpenFileDialog1.FileName="" And SaveFileDialog1.FileName<>"" Then
            'Näytetään jo tallennetun tiedoston nimi
            polku = SaveFileDialog1.FileName
        ElseIf OpenFileDialog1.Filename<>"" Then
            'Tai sitten jo avatun tiedoston nimi
            polku=OpenFileDialog1.Filename
        End If

        'Näytä tallennuskehotus
        Dim tulos As DialogResult = MessageBox.Show("Haluatko tallentaa tiedoston " & polku & "?", "Haluatko tallentaa?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
        Select tulos
            Case DialogResult.Yes
                Tallenna()
            Case DialogResult.Cancel
                Exit Sub
        End Select
    End If

    'Jos avauksessa painettiin OK
    If OpenFileDialog1.ShowDialog = DialogResult.OK Then
        'Käytetään System.IOssa olevaa StreamReader-luokkaa
        Naytettava = New StreamReader(OpenFileDialog1.FileName,System.Text.Encoding.Default)
        rtbMain.Text=Naytettava.ReadToEnd
        Naytettava.Close()
        rtbMain.Select(0,0)
        mnuTallenna.Enabled=True
    End If

End Sub

'Jos tallennetaan jo kerran nimellä tallennettu tiedosto
Private Sub mnuTallenna_Click(sender As System.Object, e As System.EventArgs)
    FileOpen(1, SaveFileDialog1.FileName, Microsoft.VisualBasic.OpenMode.Output)
    PrintLine(1,rtbMain.Text)
    FileClose(1)
End Sub

'Subi tallentamiseen, kuten nimi kertoo.
Private Sub Tallenna()
    SaveFileDialog1.Filter= "Tekstitiedostot (*.txt)|*.txt|Kaikki tiedostot (*.*)|*.*|"
    If SaveFileDialog1.ShowDialog() = ShowDialog.OK Then
        FileOpen(1, SaveFileDialog1.FileName, Microsoft.VisualBasic.OpenMode.Output)
        PrintLine(1,rtbMain.Text)
        FileClose(1)
    End If
    'Jottei sitten jos tämän jälkeen avattaessa
    'tiedostoa näy avatun tiedoston nimi, niin tyhjennetään
    OpenFileDialog1.FileName=""
End Sub


Private Sub mnuBackColor_Click(sender As System.Object, e As System.EventArgs)
    'Avataan ColorDialog1 ja asetetaan väri kentän taustaväriksi
    If ColorDialog1.ShowDialog=ShowDialog.OK Then
    rtbMain.BackColor=ColorDialog1.Color
    End If
End Sub

'Vaihdetaan formin läpinäkyvyyttä Opacity-ominaisuuden avulla.
Private Sub mnuOpacity_Click(sender As System.Object, e As System.EventArgs)
    'Jos ei läpinäkyvä(käytännössä tarkistetaan ettei check-merkkiä valikossa)
    If mnuOpacity.Checked=False Then
        Me.Opacity=0.6
        mnuOpacity.Checked=True
    'Jos on läpinäkyvä jo ennestään
    Else
        Me.Opacity=1
        mnuOpacity.Checked=False
    End If
End Sub


Private Sub Timer1Tick(sender As System.Object, e As System.EventArgs)
    'Laitetaan palkkiin kellonaika ajastimen Interval-arvon välein
    StatusBar1.Text = System.DateTime.Now
End Sub

'Automaattinen rivitys RichTextBoxin WordWrap-ominaisuutta
'hyväksikäyttäen
Private Sub mnuWrap_Click(sender As System.Object, e As System.EventArgs)
    If mnuWrap.Checked=True Then
        rtbMain.WordWrap=False
        mnuWrap.Checked=False
    Else
        rtbMain.WordWrap=True
        mnuWrap.Checked=True
    End If
End Sub

'Vaihdetaan tekstin väri.
Private Sub mnuTextColor_Click(sender As System.Object, e As System.EventArgs)
    If ColorDialog1.ShowDialog=ShowDialog.OK Then
        rtbMain.ForeColor=ColorDialog1.Color
    End If
End Sub

Private Sub mnuTallennaNimella_Click(sender As System.Object, e As System.EventArgs)
    mnuTallenna.Enabled=True
    Tallenna()
End Sub
'Menu
MainMenu1
   >mnuTiedosto
     >mnuAvaa
     >mnuTallenna
     >mnuTallennaNimella
     >mnuLopeta
   >mnuAsetukset
     >mnuFont
     >mnuTeema -> mnuBackColor
                  mnuTextColor
     >mnuOpacity
     >mnuWrap
   >mnuNfo
     >mnuInfo

rtbMain (RichTextBox)
    WordWrap False
    ScrollBars ForcedBoth
    Size 560; 400
    DetectUrls False

colorDialog1

timer1
    Interval 1000

openFileDialog1

saveFileDialog1

fontDialog1

statusBar1



'Ja itse lomakkeen(formin) ominaisuudet:
'Nämä sen takia että suurennettaessa ei mene rumaksi.
MaximizeBox False
FormBorderStyle Fixed3D
Size 570;458

Juice [06.09.2004 18:26:58]

#

Hmh. Miksi minun vinkit aina hylätään (nähtävästi tämäkin) kommentoimatta... :P

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta