13
Tags:
visual-basic
Skrevet af
Bruger #1330
@ 18.08.2002
Simpel Guide til at lave en Tekst Editor
Guide til en Text Editor:
Man er måske forundret of Microsoft Word. Men hvorfor. Hvad kan Word som du ikke kan lave, ikke meget or det er nemt at lave. Her er en lille guide til at lave en god solid Text Editor som kan en del.
Lav editoren
Det første du skal bruge er selve Text editoren. Her bruges ”Rich Text Box”
fra Microsoft. Dette Komponent indsetter du midt I programmet.
Lav en menu. Som Name skriver du: ”mFil” som caption ”Fil”. Som undermenuer til denne laver du nu 3 knapper. En hvis name bliver ”mFilNy”
of some caption ”Ny”, en hvor name = ”mFilåben” og caption = ”Åben” og
den sidstes name = ”mFilGem” og caption er ”Gem”.
Derefter finder du komponentet Microsoft Common Dialog og indsætter det i programmet.
Nyt Dokument
Koden til at lave et nyt dokument
Private sub mFilNy_click()
’Ser om dokumentet er tomt
if richtextbox.text = ”” then
’Hvis dokumentet er tomt sker der ingeting.
exit sub
else
’Ellers Spørger programmet om brugeren vil gemme dokumentet
’Gemmer resultatet af spøgsmålet som msg
Dim Msg As VbMsgBoxResult, cnt As Long
'sætter et spørgsmålstegn og en ok knap .
Msg = msgbox ”Vil du gemmer dokumentet?”, vbQuestion + vbYesNo, _ App.Title)
‘Hvis ja gå til gemfilen
If Msg = vbYes Then mFilgem_Click
End if
End sub
Tilføjer nu kode til at åbne dokumenter med
Åben Dokumenter
Private sub mFilåben_click()
’Ser om dokumentet er tomt
if richtextbox.text = ”” then
’Hvis dokumentet er tomt sker der ingeting.
exit sub
else
’Ellers Spørger programmet om brugeren vil gemme dokumentet
’Gemmer resultatet af spøgsmålet som msg
Dim Msg As VbMsgBoxResult, cnt As Long
‘sætter et spørgsmålstegn og en ok knap .
Msg = msgbox ”Vil du gemmer dokumentet?”, _
vbQuestion + vbYesNo, App.Title)
‘Hvis ja gå til gemfilen
If Msg = vbYes Then mFilgem_Click
End if
End sub
’Sætter fil filteret for ”åben” Dialog Boxen
commondialog.filter = ”Alle understøttede , _ formater|*.txt;*.rtf;*.INI;*.htm|Almindelige Tekst Filer (txt|*.txt|, _
Rich Text Format (rtf)|*.rtf|Ini Filer|*.ini|Htm/Html filer|*.htm”
’Sætter Titlen på dialogen
commondialog.dialogtitle = ”Åben fil”
’Åbner ”åben dokument” dialog boxen
commondialog.showopen
’Ser om brugeren har åbnet et dokument
if commondialog.filename = ”” then
’Hvis brugeren ikke har valgt noget dokument
else
’Ellers åbner programmet dokumentet.
Richtextbox1.loadfile commondialog.filename
End if
End sub
Gemme Dokumenter
’Koden til at gemme dokumentet
Private sub mFilGem_click()
’Sætter fil filteret for ”åben” Dialog Boxen
commondialog.filter = ”Alle understøttede formater|, _ *.txt;*.rtf;*.INI;*.htm|Almindelige Tekst Filer (txt)|*.txt|, _
Rich Text Format (rtf)|*.rtf|Ini Filer|*.ini|Htm/Html filer|*.htm”
’Sætter Titlen på dialogen
commondialog.dialogtitle = ”Gem filen”
’Åbner ”Gem” dialog boxen
commondialog.showsave
’Hvis dokumentet ikke er et Rich Text Format formateres det rigtigt. (hvis , _
ikke gemmes dokumentet bare some et RTF men hedder eks: TXT)
if commondialog.filterindex = 3 then
richtextbox.savefile commondialog.filename
else
richtextbox.savefile commondialog.filename, rtftext
end if
end sub
PRINT
Nu har du en simpel tekst editor hvori du kan åbne og gemme dokumenter.
Men man skal da også kunne printe dokumenterne ud.
Dette gøres ved at lave endnu en knap i menu ”fil” hvis name bliver ”mFilPrint” of caption bliver ”Print”.
’Kode til at printe Dokumenter.
Private sub mFilPrint_click()
’Sætter dialog titlen.
Commondialog.dialogtitle = ”Print Dokumentet”
’Viser dialogen
commondialog.showprinter
’Printer dokumentet ud
RichTextBox1.SelPrint CommonDialog.PrinterDefault, rtfText
End sub
Luk Programmet
Der mangler lige en knap Programmet skal vel også kunne lukkes (ikke kun
gennem X et.)
Så du laver en knap i ”fil” menuen hvis name er ”mFilAfslut” og
caption = ”Afslut”
Så indsætter du denne kode
Private sub mFilAfslut_click()
’Ser om dokumentet er tomt
if richtextbox.text = ”” then
’Hvis dokumentet er tomt afluttes programmet.
end
else
’Ellers Spørger programmet om brugeren vil gemme dokumentet
’Gemmer resultatet af spøgsmålet som msg
Dim Msg As VbMsgBoxResult, cnt As Long
‘sætter et spørgsmålstegn og en ok knap .
Msg = msgbox ”Vil du gemmer dokumentet?”, vbQuestion + vbYesNo, App.Title)
‘Hvis ja gå til gemfilen
If Msg = vbYes Then mFilgem_Click
end
End if
end sub
Det samme skal vel også ske når brugeren trykker på Xet oppe i hjørnet.
For at gøre dette indsættes denne kode.
Private sub form _Terminate()
‘Går til kommandoen fra mFilAfslut i stedet for at skrive koden igen.
mFilAfslut_Click
end sub
Resize
For at brugeren kan ændre størrelsen på programmet uden at Rich Text Box´en bliver en forkert størelse skal denne kode indsættes
Private Sub Form_Resize()
Dim vbresize As FormWindowStateConstants
‘Hvis programmet gøres en anden størelse (end maksimeret)
If WindowState = vbresize Then
’Sætter breden på Rich Text Box
RichTextBox.Width = Me.Width - 100
‘Sætter højden på Rich Text Box
RichTextBox.Height = Me.Height - 1770
End If
‘Hvis programmet maksimeres
If WindowState = vbMaximized Then
‘Sætter breden
RichTextBox.Width = Me.Width – 100
’Sætter højden
RichTextBox.Height = Me.Height - 1800
End If
End sub
Andre Funktioner
Funktioner som Skrift type. Skrift Farve, Kopier, Flyt, Sæt Ind, Slet osv er også funktioner some ere et must for en editor.
Kopier. Flyt og Sætind
For at lave dette Laver du nu en menu hvis name = ”mEdit” og Caption = ”Edit”.
I denne menu laver du nu 3 knapper. Du kalder dem hendholdsvis ”mEditKopier”, ”mEditFlyt” og ”mEditsætind” som deres Name og som Caption ”Kopier”, ”Flyt” og ”Sæt Ind”.
Koderne for disse er:
Koden for Kopier
Private sub mEditKopier_click()
‘Sender teksten til “Clipboarded”
Clipboard.SetText RichTextBox.SelText
End sub
Koden for at Flytte
Private sub mEditFlyt_click()
‘Sender teksten til “Clipboarded”
Clipboard.settext Richtextbox.seltext
‘Fjerner den valgte tekst fra Rich Text box
richtextbox.seltext = ””
End sub
’Koden for ”Sæt Ind”
Private sub mEditSætind_click()
’Sætter enden den valgte tekst (hvis nogen) eller teksten efter ”cursoren” til hvad end der er kopieret
RichTextBox1.SelText = Clipboard.GetText
End sub
Farver og Skriftyper
For at skifte farve laver du nu en ny menu som du kalder ”mFormat”
og caption = ”Format”. Her i laver du nu 2 knapper. Som navne kalder du dem ”mFormatSkrift” og ”mFormatFarve”. Som captio kalder du dem ”Skrift Type” og ”Skrift Farve”.
Koderne er som følger:
Private sub mFormatSkrift_click()
’Sætter dialog titlen til ”Vælg Skrifttype”
Commondialog.dialogtitle = ”Vælg Skrifttype”
’Viser Dialogen
Commondialog.showfont
’Sætter Rich Text Box´en til at bruge den valgte skrift type
richtextbox.font commondialog.fontname
end sub
Private Sub mFormatfarve_click()
‘Sætter dialog titlen til ”Vælg Farve”
commondialog.dialogtitle = ”Vælg Farve”
’viser dialogen
commondialog.showcolor
’Sætter Rich Text Box´en til at bruge den valgte skrift farve
RichTextBox.SelColor = CommonDialog.Color
End sub
Undo & Redo
Alle Editorer skal da også have en Undo/Redo Feature.
Denne laves ved at lave 2 knapper hvis name = ”mEditUndo” og ”mEditRedo” som Caption = ”Undo” & ”Redo”. Disse to knapper skal i ”Edit” menuen.
For at disse koder virker skal disse linier skrives i ”Option Explicit”
'Disse er variablerne for Undo & Redo
Option Explicit
Dim gblnIgnoreChange As Boolean
Dim gintIndex As Integer
Dim gstrStack(1000) As String
’Selve koderne for undo/redo
Private Sub mEditredo_Click()
gblnIgnoreChange = True
gintIndex = gintIndex + 1
On Error Resume Next
RichTextBox.TextRTF = gstrStack(gintIndex)
gblnIgnoreChange = False
End Sub
Private Sub mEditundo_Click()
‘Hvis index = 0, Så skal den ikke “undoe” mere
If gintIndex = 0 Then Exit Sub
gblnIgnoreChange = True
gintIndex = gintIndex - 1
RichTextBox.TextRTF = gstrStack(gintIndex)
gblnIgnoreChange = False
End Sub
Statusbar
I bunden af editoren skal der vel også være en ”Status Bar” Denne laves ved at vælge den og indsætte den i programmet. Så Trykker du på ”Custom” (I ”properties” menuen)
Vælg Panels for at indsætte ”Punkter”. Du kan lave ”normale” Tekst punkter men du kan også lave ”punkter” der viser specielle ting som Dato, Klokken, om specielle knapper er trykket på.
Når denne menu er lavet skal der ændres lidt på Private sub form_resize()
Private Sub Form_Resize()
Dim vbresize As FormWindowStateConstants
‘Hvis programmet gøres en anden størelse (end maksimeret)
If WindowState = vbresize Then
’Sætter breden på Rich Text Box
RichTextBox.Width = Me.Width - 100
‘Sætter højden på Rich Text Box. Og sørger for at rich text box ikke går ned over
'din Statusbar
RichTextBox.Height = (Me.Height + statusbar.height )- 1770
End If
‘Hvis programmet maksimeres
If WindowState = vbMaximized Then
‘Sætter breden
RichTextBox.Width = Me.Width – 100
’Sætter højden
RichTextBox.Height = Me.Height - 1800
End If
End sub
Afslutning
Dette er så slut på denne Guide. Håber I/du kan bruge den
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (13)
Er der nogle der har fået det her til at virke ? Den ser ellers godt nok ud...
God Artikel. Meen...Det med statusbaren hvor man skal indsætte en anden kode i resize proceduren når man har indsat en statusbar, det kunne jeg gøre med 2 linjers kode. Nemlig:
txtEdit.Width = Me.Width - 100
txtEdit.Height = Me.Height - 1050
Med Venlig Hilsen
Morten Torndahl Pedersen
hmm ... ville lige spørge hvor eller hvad Option Explicit er ... en der kan svare mig ... ? ... gerne lige nu ... vil ikke vente så længe
På forhånd tak...!
hmm ... ville lige spørge hvor eller hvad Option Explicit er ... en der kan svare mig ... ? ... gerne lige nu ... vil ikke vente så længe
På forhånd tak...!
fed artikel men..
der er en fejl i
Msg = msgbox ”Vil du gemmer dokumentet?”, vbQuestion + vbYesNo, _ App.Title)
jeg har prøvet at rette den men det virker ikk!
nogen som ved hvad der er galt??
jeg kan ikke finde Rich Text Box ... hvor er den?
--sorry har fundet den
hvor er rich text box
(Jens.I) og andre
option explicit, for tæller visual basic og desn compiller eller fortolker afhængig hvad man har valgt, at alle variable skal være deklarert før brug.
-Thomas
if richtextbox.text = ”” then
’Hvis dokumentet er tomt sker der ingeting.
exit sub
Den her kode kommer når man skal åbne.
Så hvis man ingenting har skrevet popper den ikke boxen op.
God artikel med mange af grund ting gem, åben osv..
Nu vil jeg ikke klare men lidt for mange fejl
Du skal være
logget ind for at skrive en kommentar.