Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Цель настоящей курсовой работы: разработать синтаксический анализатор, который позволит:
¨ Подсвечивать ключевые слова определенным цветом,
¨ Выводить контекстно-зависимый список с подмножеством ключевых слов (подсказок).
¨ Автоматически завершать начатое слово (AutoComplete), если пользователь осуществил выбор в этом списке.
Вы должны обеспечить возможность пользователю выбирать одно из нескольких множеств ключевых слов. Например, множество ключевых слов языка C# , или множество слов и выражений, которые часто используются в деловой переписке (см. выбор меню — Letters).
В качестве элемента управления, который будет выполнять роль редактора текста выберем RichTextBox. Вам придется создать новый элемент управления, основанный на нем. Поэтому:
¨ Создайте проект типа Windows Control Library с именем SyntaxBox. Результатом его компиляции будет динамическая библиотека (DLL).
¨ Переименуйте файл UserControl1.cs в SyntaxBox.cs и cогласитесь с предложением переименовать класс и файл с ресурсами. Измените тип базового класса, вместо UserControl задайте RichTextBox.
¨ Обратите внимание на то, что при этом меняется значок (иконка) файла. Теперь SyntaxBox — это компонент, то есть класс, который обладает специфическим поведением в режиме дизайна (таким же как и его родитель).
¨ Откройте файл SyntaxBox.Designer.cs и удалите из класса SyntaxBox все его содержимое (будьте осторожны, не из файла, а из класса), так как нам не понадобится контейнер компонентов и методы работы с ним: InitializeComponent и Dispose.
¨ В файле SyntaxBox.cs удалите вызов метода InitializeComponent.
Компонент SyntaxBox (DLL) предоставит возможность клиентам (EXE-приложениям) пользоваться своими услугами. Для этого они должны разместить SyntaxBox на поверхности формы и управлять свойствами компонента в окне свойств, отображаемого в режиме дизайна. Покажем, как это работает.
¨ Введите в класс SyntaxBox скрытую булевскую переменную caseSensitive и открытое свойство (get; set) с именем CaseSensitive. Для того, чтобы это свойство попало в определенную секцию окна свойств на этапе дизайна, пометьте его атрибутом [Category ("Syntax")].
Если вы, кроме того, добавите специальный комментарий (называемый IntelliSense-comment), то его текст будет помогать клентам в различных ситуациях на этапе разработки кода и дизайна формы. Комментарий должен иметь такой вид. Более сложные варианты IntelliSense-comment смотрите в MSDN.
/// <summary>
/// Get or Set the flag of case sensitivity. It is used in token recognition procedure
/// </summary>
¨ Постройте проект с компонентом SyntaxBox. Для этого выберите команду Build в его контекстном меню.
¨ Добавьте к решению еще один проект (команда Add►NewProjectв контекстном меню Solution)
¨ Новый проект должен иметь тип Windows Application. Присвойте ему имя — TestSyntaxBox.
¨ Сделайте новый проект стартовым (команда Set as StartUp Project в контекстном меню проекта).
Внимание. Порядок вставки элементов управления в форму главного окна важен. Если его нарушить, то могут быть проблемы с установкой свойства Dock (способа причаливания элементов к границам контейнеров). Заметьте, что сама форма является контейнером. Другими контейнерами являются: Panel, GroupBox, TabControl, и др.
¨ Переименуйте файл Form1 в MainForm. Согласитесь с предложением переименовать класс.
¨ Измените размеры формы, как показано на рисунке выше и положите на форму элемент типа ToolStrip.
¨ Вызовите для него мастер ToolStrip Tasks (с помощью специальной кнопки справа-вверху) и выберите команду Insert Standard Items.
¨ Добавьте в ToolStrip кнопку (с именем tbTopic) типа DropDownButton для выбора одного из множеств ключевых слов нашего редактора. Задайте свойства кнопки с выпадающим меню, а именно: коллекцию команд (DropDownItems) этого меню. На рисунке выше показано, как она может выглядеть.
¨ Создайте обработчики выбора команд выпадающего меню. Используйте технику двойного щелчка.
¨ Положите на форму наш компонент SyntaxBox. Установите его свойство Dock в положение Fill.
¨ В категории свойств (или группе) Syntax найдите свойство CaseSensitive. Установите его значение в True. Заметьте, что ни категории Syntax, ни свойства CaseSensitive в компоненте RichTextBox не было. Они появились в классе SyntaxBox в результате наших усилий.
Класс RichTextBox имеет свойство Text. Оно имеет тип string и дает доступ к массиву символов неразмеченного текста RTF-документа. Другое свойство класса RichTextBox — Rtf также имеет тип string и дает доступ к тексту разметки RTF-документа. Эти два текста (размеченный и неразмеченный) существуют параллельно. Анализируя один из них, можно изменять другой.
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.