Автор вопроса: kaant | Web-сайт:www.treeartic.info
Здравствуйте!
Помогите пожалуйста! Я пишу курсову работу по информатике. Мне нужно сделать простейший
текстовый редактор. Нужно, чтобы в нем были меню и панелька инструментов. В меню входят:
ФАЙЛ (Создать, Сохранить, Открыть и Выход), Правка (Вырезать, Копировать и Вставить),
Формат (Выравнивание: По левому краю, По центру, По правому краю и По ширине; Шрифт:
Размер, Начертание, Полужирный, Курсив, Подчеркнутый), Справка (Справка, О программе).
Я написал код (точнее скопировал некоторые куски кода из VB Application Wizard). Кончно там
код немного усовершенствованный, но это неважно, оно даже интереснее. :)
При написании кода у меня возникли некоторые трудности и вопросы:
В коде Создания нового документа нужно, чтобы при его создании выдавалось сообщение о сохранении файла
(т.е., сохранить файл? ДА? Нет? отмена). Если "Да", то должно появляться окно сохранения файла, если "Нет", то
текстовое поле должно очищаться.
Form1 - это имя главной формы
rtbox - имя текстового пля (это библиотека MS Rich Textbox Control 6.0)
Вот кусок кода:
Private Sub newdocument_Click()
If Form1.rtbox.DataChanged = True Then
a = MsgBox("Документ был изменен! Вы хотите его сохранить?", vbYesNoCancel, "Сохранить изменения?")
Select Case a
Case vbYes
save_Click
Case vbNo
End
Case vbCancel
cancel = True
End Select
End If
Form1.rtbox.Text = ""
End Sub
Здесь вся фигня в том, что при выполнении программы пропускается конструкция IF...End If и сразу выполняется
команда Form1.rtbox.Text = "". Никак не могу понять в чем дело! :(
Также привожу код команды Сохранить документ:
В General Declaration прописываю массив Dim filename As String.
Private Sub save_Click()
Dim sFile As String
If left$(Form1.Caption, 7) = "Блокнот" Then
With opendialog
.DialogTitle = "Сохранить"
.CancelError = False
.Filter = "Text Files (*.txt)|*.txt"
.ShowSave
If Len(.filename) = 0 Then
Exit Sub
End If
sFile = .filename
End With
Form1.rtbox sFile
lse
sFile = Form1.Caption
Form1.rtbox sFile
End If
End Sub
Также привожу полный код программы, чтобы вы смогли сориентироваться в программе:
opendialog - имя элемента CommonDialog
Dim filename As String
Public DataChanged As Boolean
--------------------------------------
Private Sub about_Click()
Form2.Show vbModal
End Sub
----------------------------------------
Private Sub center_Click()
Form1.rtbox.SelAlignment = rtfCenter
End Sub
----------------------------------------------
Private Sub copy_Click()
Clipboard.SetText Form1.rtbox.SelRTF
End Sub
-----------------------------------------------
Private Sub cut_Click()
Clipboard.SetText Form1.rtbox
Form1.rtbox.SelRTF = vbNullString
End Sub
------------------------------------------------
Private Sub fonttype_Click()
opendialog.Flags = cdlCFBoth
opendialog.ShowFont
Form1.rtbox.SelFontName = opendialog.FontName
End Sub
-----------------------------------------------------
Private Sub helpprog_Click()
MsgBox "Вместо этого сообщения должна, по идее, появляться справка к программе, но, т.к. делать ее было лень, то ограничился сообщением :)", vbOKOnly + vbInformation, "Справка"
End Sub
---------------------------------------------------------------------------------
Private Sub italic_Click()
Form1.rtbox.SelItalic = Not Form1.rtbox.SelItalic
Button.Value = IIf(Form1.rtbox.SelItalic, tbrPressed, tbrUnpressed)
End Sub
------------------------------------------------------------------------------
Private Sub left_Click()
Form1.rtbox.SelAlignment = rtfLeft
End Sub
------------------------------------------------------------------------
Private Sub newdocument_Click()
If Form1.rtbox.DataChanged = True Then
a = MsgBox("Документ был изменен! Вы хотите его сохранить?", vbYesNoCancel, "Сохранить изменения?")
Select Case a
Case vbYes
save_Click
Case vbNo
End
Case vbCancel
cancel = True
End Select
End If
Form1.rtbox.Text = ""
End Sub
----------------------------------------------------------------
Private Sub paste_Click()
Form1.rtbox.SelRTF = Clipboard.GetText
End Sub
----------------------------------------------------------------
Private Sub exit_Click()
End
End Sub
----------------------------------------------------------------
Private Sub polubold_Click()
Form1.rtbox.SelBold = Not Form1.rtbox.SelBold
Button.Value = IIf(Form1.rtbox.SelBold, tbrPressed, tbrUnpressed)
End Sub
----------------------------------------------------------------
Private Sub right_Click()
Form1.rtbox.SelAlignment = rtfRight
End Sub
----------------------------------------------------------------
Private Sub size_Click()
opendialog.Flags = cdlCFBoth
opendialog.ShowFont
Form1.rtbox.SelFontSize = opendialog.FontSize
End Sub
----------------------------------------------------------------
Private Sub underline_Click()
Form1.rtbox.SelUnderline = Not Form1.rtbox.SelUnderline
Button.Value = IIf(Form1.rtbox.SelUnderline, tbrPressed, tbrUnpressed)
End Sub
----------------------------------------------------------------
Private Sub open_Click()
Dim sFile As String
If Form1 Is Nothing Then newdocument_Click
With opendialog
.DialogTitle = "Открыть"
.CancelError = False
.Filter = "Text Files (*.txt)|*.txt"
.ShowOpen
If Len(.filename) = 0 Then
Exit Sub
End If
sFile = .filename
End With
Form1.rtbox.LoadFile sFile
Form1.Caption = sFile
End Sub
----------------------------------------------------------------
Private Sub save_Click()
Dim sFile As String
If left$(Form1.Caption, 7) = "Блокнот" Then
With opendialog
.DialogTitle = "Сохранить"
.CancelError = False
.Filter = "Text Files (*.txt)|*.txt"
.ShowSave
If Len(.filename) = 0 Then
Exit Sub
End If
sFile = .filename
End With
Form1.rtbox sFile
Else
sFile = Form1.Caption
Form1.rtbox sFile
End If
End Sub
----------------------------------------------------------------
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "new"
newdocument_Click
Case "open"
open_Click
Case "save"
save_Click
Case "cut"
cut_Click
Case "copy"
copy_Click
Case "paste"
paste_Click
Case "left"
left_Click
Case "center"
center_Click
Case "right"
right_Click
Case "polubold"
polubold_Click
Case "italic"
italic_Click
Case "underline"
underline_Click
Case "size"
size_Click
Case "fontstyle"
fonttype_Click
End Select
End Sub
----------------------------------------------------------------
ВОПРОСЫ:
1. Нигде не могу найти, что обозначает оператор WITH?
2. Как сделать так, чтобы при закрытии программы, точнее, при нажатии на кнопку закрытия ОКНА (крести
в правом верхнем углу), выводилось сообщение о предложении сохранить изменения в документе?
Буду очень всем благодарен, если вы мне поможете написать курсовик!!!! :))) Заранее ВСЕМ ОГРОМНОЕ СПАСИБО!!! :)))
Нигде не могу найти, что обозначает оператор WITH?
А что, сразу не ясно? Это чтобы каждый раз имя объекта не писать. По сути код
With opendialog
.DialogTitle = "Сохранить"
.CancelError = False
.Filter = "Text Files (*.txt)|*.txt"
.ShowSave
If Len(.filename) = 0 Then
Exit Sub
End If
sFile = .filename
End With
Можно записать так:
opendialog.DialogTitle = "Сохранить"
opendialog.CancelError = False
opendialog.Filter = "Text Files (*.txt)|*.txt"
opendialog.ShowSave
If Len(opendialog.filename) = 0 Then
Exit Sub
End If
sFile = opendialog.filename
выводилось сообщение о предложении сохранить изменения в документе?
Здесь вся фигня в том, что при выполнении программы пропускается конструкция IF...End If и сразу выполняется
команда Form1.rtbox.Text = "". Никак не могу понять в чем дело!
не используй DataChanged. Сделай свою булеву переменную и устанавливай ее в True в событии Richtext'а - TextChanged. Сбрасывай в Сохранить, Сохранить как, естественно. И проверяй ее тоже
Попоробовал не использовать DataChange, создал булеву переменную, но все равно не получается! И не совсем понял, что значит Richtext'а - TextChanged. Т.е. код сохранения нужно записать на событите Private Sub rtbox_change()? Или что-то другое?