Информационно-образовательный сайт учителя информатики и ИКТ     вход :: регистрация
   

Информатика и информационно-коммуникационные технологии в школе

 
   

   19.04.2024г.

Доброй ночи!  

Разделы сайта
 
  Материалы к урокам информатики в 7-9 по ФГОС. Новые презентации. Тесты.
 
  Знакомство с программирование, визуальное программирование.
 
  Планы, конспекты, презентации, методические находки, дидактический материал к уроку
 
  Настройка и использование школьной компьютерной сети
 
  Краткий теоретический материал, который можно применять на уроке...
 
  Разные полезности, программы, инструкции, советы...
 
  Как сохранить здоровье на уроках информатики
 
  Примерные экзаменационные билеты и ответы
 
  Программы для скачивания...
 
  Правила для пользователей портала
 
  Компьютерное тестирование знаний. Наш проект. Cправочное online руководство по программе
 
 
Сервисы сайта
все новости...
поиск по статьям сайта...
вопросы, обсуждения, решаем проблемы вместе ...
отзывы, замечания, предложения...
проверить свои знания, пройдя тесты в режиме online...
образовательные сайты, друзья портала...
для связи с администратором портала
 
Внимание! Опрос!

Есть ли в Вашей школе новые учебники информатики?

Да
Нет
Частично


результаты

____________________

  Полная или частичная перепечатка каким бы то ни было способом материалов данного сайта допускается только с письменного согласия автора.
  При цитировании или ином использовании материалов ссылка на сайт www.klyaksa.net обязательна.

____________________
 
Наши проекты:

MyTestX - лего и удобно

 
 
Афоризм дня
... Лучше знать лишнее, чем ничего не знать.

СЕНЕКА


Реклама:


 

Rambler's Top100

Рейтинг@Mail.ru
Яндекс цитирования
 
 

Начало » Конспекты школьника » Часть 2 » [Учимся программировать!][НЕПростой текстовый редактор]

Учимся программировать!
Конспекты школьника.
www.klyaksa.net

Текстовый редактор с возможностью форматирования текста.

На этом занятии мы продолжим работать над проектом текстового редактора. Сделаем его более продвинутым: научим форматировать текст и добавим панель инструментов.

Добавим в меню новый пункт, позволяющий пользователю вызвать окно выбора шрифта.

редактор меню VisualBasic

 

Имя Название (Caption) Быстрая клавиша
mnuFile &Файл  
mnuFNew Созд&ать Ctrl+N
mnuFOpen &Открыть... Ctrl+O
mnuFSave  &Сохранить Ctrl+S
mnuFSaveAs  Сохранить &как...   
mnuEdit  &Правка   
mnuECut &Вырезать Ctrl+X
mnuECopy &Копировать Ctrl+C
mnuEPaste Вст&авить Ctrl+V
mnuEDel  &Удалить   
mnuFormat Фор&мат  
mnuFFont &Шрифт  

Для выбора шрифта воспользуемся компонентом CommonDialоg (тот который на прошлом занятии использовали для выбора файла при сохранении или открытии), содержит стандартные диалоговые окна Windows: открыть/сохранить файл, цвет, шрифт, печать, помощь.

Присвойте объекту имя (name): dlgMyDialоg.  Затем вызовете страницы свойств (щелчок правой кнопкой → Propirties) и установите нужные свойства на закладке "Font" (Шрифт).

страницы свойств диалгового окна

У CommonDialog есть свойство Flags которое управляет многими параметрами диалога. Полный список всех констант можно получить с помощью проводника объектов (Object browser) Вид → Проводник объектов или F2.

В нашем примере свойство Flags мы установили = 258. Откуда взялось это значение? Это сумма двух констант cdlCFPrinterFonts = 2 (использовать только те шрифты, которые поддерживают принтеры) и cdlCFEffects = 256 (разрешить эффекты форматирования: подчеркивание, зачеркивание и выбор цвета на панели выбора шрифта).

Это свойство можно было бы задать и программно. Например, так:
dlgMyDialоg.Flags =  cdlCFPrinterFonts  + cdlCFEffects 
или так:
dlgMyDialоg.Flags = 256 + 2
или так:
dlgMyDialоg.Flags = 258

Работаем дальше.

Не забудьте заменить во всем коде программы dlgFile на dlgMyDialоg (т.к. мы изменили имя объекта: был dlgFile, а стал - dlgMyDialоg). Для этого удобно воспользоваться командой Правка → Заменить...

окно заменить в VisualBasic

Теперь можно уже, наверное, писать обработчик события для нового пункта меню... 

Прежде чем писать обработчик события для нового пункта меню, необходимо произвести еще одну замену: необходимо обычное текстовое поле заменить компонентом RichTextBox. Все дело в том, что обычное текстовое поле не позволяет изменять параметры шрифта для части текста, позволяет изменить только то как будет отображаться текст в текстовом поле. Для примера сравните стандартные программы Windows Блокнот и WordPad.

включение компонента Microsoft Rich Textbox 6.0Это дополнительный элемент управления. Для того чтобы он появился на панели компонентов необходимо выполнить следующие действия:

Выбрать в VisualBasic Проект → Компоненты (или [Cntr+T] )и установить флажок у компонента Microsoft Rich Textbox 6.0.

Замените текстовое поле усовершенствованным текстовым полем.

Объект Свойство Значение

RichTextbox 

имя txtNotepad
text "" (пустая строка)
MiltiLine True

Вот теперь создадим обработчик меню Формат → Шрифт...

Для вызова окна выбора шрифта используется метод ShowFont. Перед выводом окна зададим первоначальные значения в соответствии с выделенным текстом (название шрифта, размер, начертание: жирный, начертание: курсив).

Private Sub mnuFFont_Click()

dlgMyDialоg.FontName = txtNotepad.SelFontName
dlgMyDialоg.FontSize = txtNotepad.SelFontSize
dlgMyDialоg.FontBold = txtNotepad.SelBold
dlgMyDialоg.FontItalic = txtNotepad.SelItalic
dlgMyDialоg.Color = txtNotepad.SelColor
dlgMyDialоg.FontStrikethru = txtNotepad.SelStrikeThru
dlgMyDialоg.FontUnderline = txtNotepad.SelUnderline

dlgMyDialоg.ShowFont

End Sub

После того как пользователь выбран нужные параметры присвоим их выделенному тексту.

Private Sub mnuFFont_Click()
dlgMyDialоg.FontName = txtNotepad.SelFontName
dlgMyDialоg.FontSize = txtNotepad.SelFontSize
dlgMyDialоg.FontBold = txtNotepad.SelBold
dlgMyDialоg.FontItalic = txtNotepad.SelItalic
dlgMyDialоg.Color = txtNotepad.SelColor
dlgMyDialоg.FontStrikethru = txtNotepad.SelStrikeThru
dlgMyDialоg.FontUnderline = txtNotepad.SelUnderline

dlgMyDialоg.ShowFont

txtNotepad.SelFontName = dlgMyDialоg.FontName
txtNotepad.SelFontSize = dlgMyDialоg.FontSize
txtNotepad.SelBold = dlgMyDialоg.FontBold
txtNotepad.SelItalic = dlgMyDialоg.FontItalic
txtNotepad.SelColor = dlgMyDialоg.Color
txtNotepad.SelStrikeThru = dlgMyDialоg.FontStrikethru
txtNotepad.SelUnderline = dlgMyDialоg.FontUnderline

End Sub

Теперь мы можем форматировать текст.

окно форматирования

форматируем текст

форматируем текст

Если вы желаете, чтобы текст сохранялся как обычно, без форматирования, то можете оставить все как есть.

dlgMyDialоg: фильтр открытия и сохранения файловДля того чтобы сохранить (а также открыть) форматированный текст необходимо изменить свойства dlgMyDialоg: фильтр - Текстовые файлы(*.txt)|*.txt|Файлы RTF(*.rtf)|*.rtf, ФильтрИндекс - 2 (По-умолчанию показывать 2-й фильтр);


и функции mnuFSave_Click(), mnuFSaveAs_Click(), mnuFSave_Click().

Private Sub mnuFSave_Click()
If dlgMyDialоg.FileName <> "" Then
txtNotepad.SaveFile dlgMyDialоg.FileName
Else
mnuFSaveAs_Click
End If
End Sub

Private Sub mnuFSaveAs_Click()
dlgMyDialоg.ShowSave
If dlgMyDialоg.FileName <> "" Then
txtNotepad.SaveFile dlgMyDialоg.FileName
End If
End Sub

Private Sub mnuFOpen_Click()
dlgMyDialоg.ShowOpen
If dlgMyDialоg.FileName <> "" Then
txtNotepad.LoadFile dlgMyDialоg.FileName
End If
End Sub

Готово!

Теперь для удобства работы пользователя давайте добавим стандартную панель инструментов.

Панель инструментов служит для быстрого ввода команд.  Этот элемент управления не входит в стандартный набор управляющих элементов. Для работы с ним необходимо воспользоваться дополнительным набором управляющих элементов Microsoft Windows Common Control 6.0.

элемент ToolBarВыберите в VisualBasic Проект → Компоненты (или [Cntr+T] )и установить флажок у компонента Microsoft Windows Common Control 6.0. Панель компонетнов дополнится новыми элементами. Поместите на форму элемент ToolBar.

Далее для создания панели инструментов можно воспользоваться мастером (а можно и не воспользоваться).

шаг 1 испльзование мастера

Выберем в левой  части те кнопки которые потребуются в нашем приложении.

шаг 2 выбор кнопок панели инструментов

шаг 3 финиш работы мастера

Жмем [готово] и панель инструментов появится на форме.

Следует обратить внимание на то, что панель инструментов в любой момент можно отредактировать. Для этого щелкните по панели правой кнопкой мыши и выберите пункт "свойства". 

свойства панели инструментов

Есть еще один важный момент - обычно, панель инструментов связана с компонентом ImagesList (список изображений). При использовании ранних версий управляющих элементов Microsoft Windows Common Control, например, 5.0, приходилось ImagesList добавлять самостоятельно. В нашем случае компонент ImagesList добавляется и настраивается автоматически.

Найдете этот компонент на форме (для этого лучше воспользоваться  Окном свойств) и посмотрите его свойства.

свойства ImageList

Панель инструментов добавлена на форму, теперь создадим событийную процедуру обработки щелка по кнопкам этой панели. Сделайте двойной щелчок по панели в окне формы. Откроется окно кода, содержащая следующий текст:

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComCtlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "New"
'ToDo: Add 'New' button code.
MsgBox "Add 'New' button code."
Case "Open"
'ToDo: Add 'Open' button code.
MsgBox "Add 'Open' button code."
Case "Save"
'ToDo: Add 'Save' button code.
MsgBox "Add 'Save' button code."
Case "Copy"
'ToDo: Add 'Copy' button code.
MsgBox "Add 'Copy' button code."
Case "Cut"
'ToDo: Add 'Cut' button code.
MsgBox "Add 'Cut' button code."
Case "Paste"
'ToDo: Add 'Paste' button code.
MsgBox "Add 'Paste' button code."
Case "Delete"
'ToDo: Add 'Delete' button code.
MsgBox "Add 'Delete' button code."
End Select
End Sub

Для каждой кнопки назначим соответствующую процедуру уже созданную для пунктов меню.

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComCtlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "New"
mnuFNew_Click
Case "Open"
mnuFOpen_Click
Case "Save"
mnuFSave_Click
Case "Copy"
mnuECopy_Click
Case "Cut"
mnuECut_Click
Case "Paste"
mnuEPaste_Click
Case "Delete"
mnuEDel_Click
End Select
End Sub

Теперь исправим процедуры обработки изменения размера формы (Resize) так как панель инструментов теперь закрывает часть текстового поля.

Private Sub Form_Resize()
txtNotepad.Top = Toolbar1.Height
txtNotepad.Left = 0
txtNotepad.Width = frmNotepad.Width - 100
txtNotepad.Height = frmNotepad.Height - 800
End Sub

Программа почти готова. Почти? "Проиграйтесь" с программой и вы обнаружите ошибку: если выделить текст разного формата, то при выборе пункта Формат → Шрифт возникает ошибка при установки параметров окна выбора формата шрифта.

Для борьбы с этой неприятностью воспользуемся оператором перехвата ошибок On Error.

Оператор On Error не выполняет непосредственно никакой обработки ошибок, а лишь передает управление ответственному за обработку ошибок фрагменту программы.

Для определения типа ошибки можно использовать объект Err, свойство которого Number содержит код последней возникшей ошибки.

Итак, в начале процедуры помещается оператор On Error для перехвата возникающих ошибок. В нем указывается метка, к которой происходит переход при возникновении ошибки. Обычно эта метка находится в конце процедуры и перед ней помещается оператор Exit. Благодаря этому оператору, при безошибочном выполнении процедура в этом месте завершает свою работу, и
фрагмент процедуры после метки выполняется только после возникновения ошибки.

При обработке ошибок возникшая ошибка анализируется и выполняются соответствующие действия. Например, при делении на нуль это может быть прекращение текущих вычислений; при ошибках обращения к диску может отображаться диалоговое окно для принятия
пользователем решения о прекращении операции или повторном выполнении.

После корректной обработки ошибки программа должна продолжить свое выполнение. Чтобы программа продолжала выполняться в строке, в которой возникла, а затем была устранена ошибка, в обработчике указывается оператор Resume.

Завершив обработку ошибки, следует продолжить нормальное выполнение программы. Ключевое слово Resume позволяет вернуться в строку, вызвавшую ошибку, для ее повторного выполнения, а оператор Resume Next возвращает в следующую за строкой с ошибкой строку.

Private Sub mnuFFont_Click()
On Error GoTo ErrLabel 'Включает обработку ошибок
dlgMyDialоg.FontName = txtNotepad.SelFontName
dlgMyDialоg.FontSize = txtNotepad.SelFontSize
dlgMyDialоg.FontBold = txtNotepad.SelBold
dlgMyDialоg.FontItalic = txtNotepad.SelItalic
dlgMyDialоg.ShowFont
txtNotepad.SelFontName = dlgMyDialоg.FontName
txtNotepad.SelFontSize = dlgMyDialоg.FontSize
txtNotepad.SelBold = dlgMyDialоg.FontBold
txtNotepad.SelItalic = dlgMyDialоg.FontItalic
Exit Sub
ErrLabel: 'обработка ошибки
'тут можно что-то сделать для обработки ошибки
Resume Next

End Sub

Теперь готово! Программа работает.

текстовый редактор с возможностью форматирования текста

 

 предыдущий урок :: содержание :: следующий урок

 

 

 

 

 

 

 

 

 

 

[Добавить в избранное]

 
Рекомендуем:

MyTest

Компьютерное тестирование знаний учащихся, сертификация и аттестация сотрудников.
Деcять типов заданий, локальное и сетевое тестирование...
 
Узнать больше и скачать программу MyTestXPro...
 
Обсудить на форуме и принять участие в создании банка тестов...
 
Группа ВКонтакте:
vk.com/MyTestXPro


 
Реклама:
 
 

 
Реклама:
 
 


↑    

Дизайн, программирование и идея сайта Клякс@.net -bas- © 2004-2024г.

    ↑