Справочник от Автор24
Поделись лекцией за скидку на Автор24

Интегрированная среда разработки (ИСП, IDE) BlackBox

  • 👀 274 просмотра
  • 📌 231 загрузка
Выбери формат для чтения
Статья: Интегрированная среда разработки (ИСП, IDE) BlackBox
Найди решение своей задачи среди 1 000 000 ответов
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Интегрированная среда разработки (ИСП, IDE) BlackBox» doc
Интегрированная среда разработки (ИСП, IDE) BlackBox Уникальная современная бесплатная и открытая среда программирования Блэкбокс (BlackBox Component Builder), воплотившая полувековой (считая с Алгола-60) опыт разработки технологий и методов программирования (школа Никлауса Вирта в цюрихском университете ETH, исследовательская лаборатория Xerox Palo Alto Research Center и др.) и обладающая следующей комбинацией свойств: • ·очень простая(описание языка всего около 30 страниц); • ·очень быстрая(быстро компилирует даже на i386); • ·очень компактная(20 MB на диске в максимальной конфигурации) • ·очень мощная(в том числе за счет лучшей в промышленности поддержки технологий компонентно-ориентированного программирования); • ·бесплатная для некоммерческого использования (с конца 2004 г. система доступна с открытыми исходными кодами).. BlackBox Component Builder (в даль­нейшем Блэкбокс) – это интегрированная среда разработки, оптимизированная для разработки ПО с компонентной структурой. В неё входят: • инструменты разработки; • библиотека повторно используемых компонентов; • каркас приложений, упрощающий создание надёжных пользо­вательских компонентов и приложений; • среда поддержки функциони­рования компонентов во время исполнения. Разработчики Блэкбокс системы следовали минималистскому принципу так же, как и при разработке языка системы. Например, в языке отсутствует вложенность модулей и классов и как следствие упрощается архитектурная модель. В отличие от языка Java, один модуль транслируется в один файл. Имеется два вида компонентов - модули и подсистемы. При успешной компиляции модуля образуются символьный и кодовый файлы, которые автоматически размещаются в подкаталогах Sym и Code, соответственно. При этом эти каталоги размещаются в подкаталоге Блэкбокса с названием подсистемы. Имя подсистемы – префикс имени модуля. Сами исходные файлы хранится в подкаталоге Mod. Символьный файл содержит всю информацию о внешних связях модуля по экспорту-импорту. Кодовый файл - это двоичный файл с машинными командами. Он загружается в память для непосредственного выполнения при первом вызове какой-либо процедуры из этого модуля. В системе Блэкбокс приложения и их компоненты пишутся на Компонентном Паскале (в дальнейшем КП). Этот язык программирования предоставляет такие современные возможности, как полная защищенность типов (type safety), компоненты (в виде модулей), динамическое связывание компонентов, а также сборка мусора. Сам Блэкбокс целиком написан на КП, включая все компоненты в библиотеке, весь инструментарий разработчика, компилятор КП, и даже низкоуровневую систему поддержки времени исполнения со сборщиком мусора. Несмотря на всю свою мощь, Компонентный Паскаль – маленький язык, легкий для изучения. Библиотека компонентов, поставляемая с Блэкбоксом, содержит: • компоненты для элементов пользовательского интерфейса (командные кноп­ки, кнопки-флажки и т.п.); средства обработки текстов (подсистема Text); • различные компоненты для управления расположением элементов графического интер­фейса пользователя (подсистема Form); • компоненты доступа к базам данных (подсистема Sql); коммуникационные компоненты (подсистема Comm); • инструменты программирования: компилятор, просмотрщик интерфейсов, отладчик и т. д. (подсистема Dev). Взаимодействие между компонентами осуществляется посредством каркасов (Frameworks) системы Блэкбокс. Они состоят из небольшого числа дополняющих друг друга программных интерфейсов. Эти интерфейсы значительно проще и безопаснее базовых API, таких как Windows API, и, кроме того, платформо-независимы. Для интерактивных прило­­жений эти интерфейсы определяют уникальную архитектуру составных документов. Эта архитектура делает возможной быструю разработку приложений (RAD), в том числе быструю разработку новых компонентов интерфейса пользователя. В кон­струкции каркаса особое внимание уделено безопасному взаимодействию между компонентами. Это условие становится чрезвычайно важным для крупномасштабных программных проектов, характеризующиеся большим временем жизни и содержащие компоненты от различных поставщиков. Сочетание производительности RAD с высоким уровнем надёж­ности архитектуры было одной из главных целей разработки системы Блэкбокс. Была сделана попытка создать гибкую и нетребовательную к ресурсам среду, не жертвуя ни надёжностью, ни удобством долгосрочного сопровождения проектов, созданных в этой среде. Это было достигнуто благодаря архитектуре, в которой система разделяется на компоненты с четко и строго определёнными интерфейсами. Программное обеспечение развивается эволюционно – через добавление, обновление или удаление отдельных компонентов. Поскольку сам Блэкбокс написан на Компонентном Паскале, любой скомпилированный модуль становится частью системы в том смысле, что как файл с машинным кодом, так и соответствующий символьный файл немедленно становятся доступными для импорта из других модулей, вызова процедур из меню Блэкбокса и т.п. Поэтому приложение может иметь такой же интерфейс, как и сама среда. Интерфейс представлен обычным многоуровневым меню и возможностью назначения горячих клавиш. Само меню хранится в файле Menus.odc и доступно для редактирования с помощью функций модуля Text. По команде «обновить меню» меню обновляется. Меню динамически формируется при запуске системы. Каждая подключаемая подсистема может иметь собственное подменю, которое динамически вставляется в основное меню, если в нем есть пункт, отмеченный символом «*». При такой технологии подключение подсистемы заключается в простом копировании файлов, входящим в подсистему. Если пользователь одновременно разрабатывает несколько приложений, каждое из которой располагается в своей папке, среда запускается с параметром, определяющим путь к этой папке. Подсистемы, находящиеся в основном каталоге, используются совместно. Такой подход значительно упрощает развертывание новой подсистемы в уже разработанном приложении. Среда времени выполнения системы Блэкбокс поддерживает динамическое связыва­ние, загрузку и выгрузку компонентов. За счёт этого система может быть расширена прямо во время выполнения без повторной компиляции, сборки или перезапуска полученного кода. Объекты компонентов (т. е. экземпляры классов, содержащихся в компонентах) авто­ма­ти­чески удаляются, когда на них больше нет ссылок. Сборка мусора – ключевой аспект безопасности системы времени выполнения, так как она позволяет предотвратить такие ошибки, как утечки памяти и «висячие» указатели, которых иначе практически невоз­можно избежать в среде, столь сильно ориентиро­ванной на использование компонентов, как Блэкбокс. В системе реализован оригинальный подход к разработке пользовательского интерфейса. Экранная форма представляется собой документ, в которой с помощью специализированного редактора размещаются элементы управления. Но в отличие от других систем это не приводит к генерации кода с описанием класса Form. В самих модулях также отсутствуют ссылки, какая экранная форма будет использована. В документе-форме для элемента можно указать свойство, привязывающее элемент к какой-либо переменной модуля (для текстового поля) или процедуре (для элемента типа кнопки). И этого оказывается достаточно, чтобы при запуске формы значения переменных отображались, а нажатие кнопки приводило к запуску нужной процедуры. Единственно, о чем должен позаботиться программист, это вызвать специальный метод для обновления значений переменных в экранной форме. Такой подход значительно упрощает программирование, избавляя, например, от многочисленных преобразований из текстовых значений в целые и наоборот, которыми изобилует программа в других средах. Экранная форма может быть быстро создана с помощью мастера, который выберет все экспортируемые объекты и построит по ним подходящие элементы управления. Имеется в системе и ряд других технологических приемов, делающих разработку более удобной. Это так называемые командеры, рабочий журнал, оригинальная отметка ошибок, трассировщик и др. Все это делает систему привлекательной как для использования в обучении программированию, так и для промышленного программирования. Интерфейс Блэкбокс «из коробки» (т.е. без доп. Настройки) выглядит вполне традиционно: сверху – полоска меню, ниже – рабочее поле, в котором открыты окошки с документами; Одно из окошек называется Рабочий журнал (или Log) и играет особую роль. Меню устроены как обычно: Файлы ... Справка. Благодаря уникальной современной архитектуре Блэкбокса в нём можно легко (причём на лету, без перезапуска) менять всю структуру меню, добавлять новые пункты, добавлять горячие клавиши и т.п. См. об этом документацию: Настройка меню. Если завершать работу в Блэкбоксе командой меню Exit (в меню File): тогда Блэкбокс автоматически запомнит расположение всех окошек (если мы забудем сохранить какие-то документы, то он нам об этом напомнит). А при новом запуске он их автоматически восстановит в том же расположении (при желании это нетрудно отменить). Попробуйте закрыть и снова запустить весь Блэкбокс; а чтобы увидеть, как он восстанавливает окошки, можно перед его закрытием открыть (например, с помощью ссылок) дополнительные окошки и поменять их размеры и положение. Текстовые документы используются в Блэкбоксе не только для документации , но и для программ, поэтому с текстами нужно немного освоиться. Новый текстовый документ создается как обычно – нажатием Ctrl+N или через меню (File-New). Основные команды редактирования (в т.ч. копирование текста между окнами и т.п.) следуют промышленным стандартам; то есть они такие же, как, например, в Блокноте Windows. Ещё в текст можно вставлять так называемые «вьюшки» (View) – графические объекты, которые могут быть «активными», то есть реагировать на мышку, клавиатуру и т.п. Вьюшки могут даже влиять на форматирование текста, оставаясь при этом невидимыми в обычном режиме просмотра. Полезно иметь в виду, что нажав Ctrl+H, можно увидеть невидимые вьюшки, чтобы, например, их случайно не стереть; чтобы снова их спрятать, нужно нажать Ctrl+H ещё раз. Рабочий журнал – важный вспомогательный документ, обычно всегда открытый (по-английски он называется Log). В журнал Блэкбокс пишет разные сообщения. Туда же идёт стандартный вывод из программ, и там можно что-нибудь допечатать или сформатировать вручную; Блэкбоксу это никак не помешает: он всегда просто дописывает новые сообщения в конец журнала. Если Рабочий журнал случайно закрылся, его можно снова открыть командой меню Info, Open Log. Очистить журнал тоже можно (штатная команда Info, Clear Log), но этого не нужно делать без большой реальной нужды. Если в Рабочий журнал напечаталась какая-то полезная информация , то её нужно оттуда скопировать и сохранить в нормальном документе, так как содержимое Рабочего журнала при выходе из Блэкбокса не сохраняется. Кусок текста из Рабочего журнала, напечатанный туда одной программой, можно сохранить и использовать как входные данные для другой. Это может быть просто очень удобно. Такая возмож­ность является частью способа организации работы человека с компьютером, который можно обозначить как «текст как интерфейс» или «документоориентированный подход». Рассмотрим простейшую программу на Компонентном Паскале (КП). Исходный текст программы должен стоять в начале документа. После текста программы документ может содержать всё, что угодно. Откроем новое текстовое (рабочее) окно и введем текст: MODULE Program0; IMPORT Log; BEGIN Log.String( 'Привет!' ); Log.Ln; END Program0. Первое отличие от старого Паскаля, которое бросается в глаза, это написание ключевых слов заглавными буквами; это соглашение резко облегчает восприятие структуры программы и является обязательным. Комментарии имеют вид (* ... *). Разрешён только этот тип комментариев. Они могут быть вложены, и если они вложены, то должен соблюдаться баланс составных скобок (* и *). Для перевода строчных букв в прописные (заглавные) используется клавиша F5, отмена Ctrl-Z. Остальные имена (Program0, Log, String, ...) – продукт творчества программистов. Компилятор игнорирует форматирование текста программы (отступы в начале строк, выбор шрифта цвет и т.п.). Ему важно только, чтобы можно было различить служебные слова и идентификаторы. Последняя точка в фрагменте – это и есть конец программы, и компилятор дальше этой точки не смотрит. Поэтому после текста программы удобно держать примеры входных данных, фрагменты кода, подсказки, объяснения (как здесь) и т.п. Убедимся, что Рабочий журнал виден (если что, его можно в любой момент открыть командой школьного меню или сдвинуть другие окна). Убедимся, что окошко с программой – переднее (активное). Чтобы проверить корректность программы, скомпилируем её нажатием Ctrl+K. В Рабочем журнале появится соответствующее сообщение. Можно понажимать Ctrl+K несколько раз. Откомпилируем и выполним программу нажатием Ctrl+F9 (Dev-Compile and Reload). В Рабочем журнале появятся три новые строчки: первая – сообщение об успешной компиляции, числа сообщают о размере бинарника и блока глобальных переменных в байтах (чуть позже посмотрим, что происходит, когда в программе обнаруживаются ошибки); вторая – сообщение о выгрузке старой версии модуля с программой (как частный случай в памяти модуль может быть не найден, о чём так и будет сказано); третья – это то, что напечатала вновь скомпилированная программа. Сообщения в рабочем журнале о том, что «старый модуль NNN выгружен» напоминают о том, что за кулисами кнопки Ctrl+F9 скрыт чуть более общий механизм, чем простое выполнение программы. На самом деле только при решении простых задач годится такая схема работы, когда «пишется программа», которая «компилируется и выполняется». При решении более сложных задач обычно пишут не одну «программу», а целую группу процедур (библиотеку, компонентный каркас). И тогда более удобным становится режим работы, при котором модуль с процедурами загружается в память и остаётся там, пока идёт работа с процедурами (например, их совместное тестирование). И лишь когда программист примет решение, модуль удаляется из памяти или заменяется новой версией. Это основной, штатный режим работы в Блэкбоксе. Как компилятор сообщает об ошибках Введем в рабочее окно текст модуля Errors с намеренно сделанными. MODULE Errors; IMPORT Log := StdLog, In := i21sysIn, Math; VAR x: Integer; BEGIN x := O; Log.INT( x ) Log.Ln END Errors. Расположим окна так, чтобы это окно, окно модуля Errors и Рабочий журнал друг друга не загораживали. Сделаем окно с модулем передним (например, кликом по его строке заголовка), и нажатием Ctrl+K (K - латинское) попытаемся его скомпилировать. В журнале появится запись: компилируется "Errors" 3 ошибок найдено «3 ошибок» не вполне по-русски, но зашивать русскую грамматику в Блэкбокс пока не хочется. Одновременно в исходнике появятся три чёрных (тёмно-серых) перечёркнутых квадратика в тех местах, где компилятор увидит ошибки – это маркеры ошибок. По завершении компиляции курсор стоит сразу после первой ошибки. В самом низу окна Блэкбокса слева в строке состояния видно сообщение компилятора о данной ошибке: «необъявленный идентификатор». Действительно, вместо Integer подразумевалось INTEGER (тип целочисленной переменный), а большие и маленькие буквы в Компонентном Паскале различаются, поэтому Integer и INTEGER воспринимаются компилятором как разные слова: INTEGER он знает, а Integer – нет. Можно прочитать это же сообщение и по-другому: двойной клик по квадрату раскроет его и покажет сообщение об ошибке. Ещё один двойной клик закроет ошибку, но беспокоиться ни об этом, ни об удалении маркеров ошибок не надо: компилятор сам уберёт старые маркеры при следующей компиляции. Точно так же можно посмотреть остальные маркеры. Все маркеры показывают одинаковую ошибку: «необъявленный идентификатор». Не следует пытаться сразу устранить все ошибки: компилятор после первой ошибки может сбиться и увидеть ошибки там, где их на самом деле нет, или пропустить настоящие ошибки. Устраняйте самую первую ошибку и сразу компилируйте Ctrl+K снова. Некоторые заповеди грамотного программирования Пункты 2-4 составляют фундаментальный метод разработки программ, известный как пошаговое уточнение – step-wise refinement (см. статью Вирта в Comm. ACM, Vol. 14, No. 4, April 1971; статья доступна здесь: http://www.acm.org/classics/dec95/). Пункт 1 является исходной точкой для пошагового уточнения. Здесь еще говорят о проектировании, управляемом интерфейсами (interface-driven design), а также о проектировании по контрактам (design by contract). Создание программы должно начинаться с задания интерфейсов (=сигнатур) процедур (прежде всего экспортируемых) вместе с пред- и пост-условиями – точно так же как решение любой задачи начинается с ее постановки. Проектирование интерфейсов/сигнатур и задание пред- и пост-условий – ключевой элемент постановки задачи в программировании. Выполнение пунктов 2-4 позволяет сохранять интеллектуальный контроль за правильностью создаваемой программы, помогая устранять ошибки (как синтаксические огрехи вроде опечаток – п.3, так и смысловые – п.4) на возможно более ранней стадии. Рекомендация пункта 5 имеет смысл только в контексте пп.2-4: она бессмыссленна, если процесс разработки не удовлетворяет требованиям пп.2-4 (а также при работе с медленными компиляторами для сложных языков). Здесь – одно из важнейших преимуществ, доставляемое минимализмом языка Оберон/Компонентный Паскаль и четкостью его дизайна, обеспечивающего исключительную быстроту компилятора. Быстрый компилятор подобного типа был впервые построен Виртом в 1984 г. для предшественника Оберона – языка Модула-2, с систематическим применением принципа пошагового уточнения. Правило 5 означает, в частности, что если компилятор обнаружил несколько ошибок, то устранять их нужно, как правило, по одной (обычно начиная с первой), каждый раз повторяя компиляцию. Пошаговое уточнение считается самым полезным приемом систематического создания программ (Э.Дейкстра. Дисциплина программирования. М., Мир, 1978, с. 274). Весьма популярные в последнее время «гибкие» методологии (Extreme Programming и т.п.) во многом являются просто более эффективным организационным воплощением идеи пошагового уточнения на уровне больших программных проектов. Применение методов типа пошагового уточнения требует известной дисциплины со стороны программистов – отсюда необходимость систематического «правильного» обучения. Однако в настоящее время признано, что резкое повышение эффективности программирования при использовании методов этой категории более чем окупает усилия, необходимые для их освоения. Чтобы исправить первую ошибку, нужно превратить Integer в INTEGER. Простейший способ: дважды кликнуть по Integer и нажать Shift+F5. Сразу скомпилируем нажатием Ctrl+K (компилируем после каждого исправления, следя, чтобы окно с программой было передним при выдаче команды компиляции; если нечаянно произошла попытка скомпилировать этот документ, нужно просто нажать Ctrl+Z – отмену). Останется две ошибки, курсор стоит после первой из них. Опять ошибка «необъявленный идентификатор». В данном случае заглавная буква O стоит вместо нуля. Исправим букву О на цифру 0 (чёрный квадратик стирается как обычная буква: достаточно дважды нажать клавишу Backspace и затем цифру 0). И тут же снова нажмём Ctrl+K. Останется ещё одна ошибка «необъявленный идентификатор». В данном случае название процедуры Int (в Блэкбоксе принято соглашение, чтобы названия процедур начинать с заглавной буквы). Исправим INT на Int и снова нажмём Ctrl+K. Появится ещё одна – уже четвертая ошибка, которую компилятор раньше не смог увидеть, сбиваясь из-за остальных: теперь это ошибка «пропущена ";"». Действительно, два вызова процедур должны быть разделены литерой ";". Вставим её и нажмём Ctrl+K. В Рабочем журнале появились два числа – 40 и 4, где 4 – это размер блока глобальных переменных модуля в байтах (наша одинокая 32-битная переменная x), а 40 – размер машинного кода в байтах. Наконец, чтобы выполнить программу, нажмём Ctrl+F9 (передним окном должно быть окно с программой). В журнале появится строчка от компилятора, другая строчка от загрузчика модулей (не обращаем внимания), а также строчка с нашим нулём – последняя. Важно! Никакой классификации ошибок компиляции на «предупреждения», «ошибки», «критические ошибки» и т.п., в Блэкбоксе не делается: безусловная защита от больших и мелких ошибок является высшим приоритетом. Все потенциальные источники ошибок, которые могут быть обнаружены компилятором, должны быть устранены как можно раньше: почистить код, устранив «предупреждения», выходит несравненно дешевле, чем вылавливать в большой программе ошибки, появившиеся как отдалённые последствия «предупреждений» – или проводить расследование, выясняя причины катастрофы стоимостью сотни миллионов долларов (например, катастрофа ракеты-носителя Ариан-5 http://www.inr.ac.ru/~info21/wirth/wirth_avia.htm#ariane). После успешной компиляции программу можно выполнить. Выполнение программы с помощью «командира» Опишем простой и удобный способ выполнить процедуру из скомпилированного модуля (есть и другие способы). Имеем модуль: MODULE Привет; IMPORT StdLog; PROCEDURE Сделать*; BEGIN StdLog.String("Привет!");StdLog.Ln END Сделать; END Привет. Поставим курсор в окошке с нашим модулем в самый конец текста после точки, закрывающей модуль (Ctrl+End). Выполним команду меню Инстр --> Вставить командир (Tools --> Insert Commander; с клавиатуры Ctrl+Q). Появится черный кружок с белым восклицательным знаком — так называемый командир. После командира без пробелов напечатать Привет.Сделать (имя модуля, точка, имя вызываемой процедуры — это "ФИО" нашей процедуры в системе. Роль фамилии играет имя модуля. Важно следить за прописными и строчными буквами, т.к. в Компонентном Паскале они различаются. Теперь кликнем мышкой по командиру. Это вызовет загрузку скомпилированного модуля в память и выполнение процедуры. Можно кликнуть еще пару раз — процедура выполнится еще дважды. • После первой загрузки модуль остается в памяти, причем он уже слинкован с остальными активными модулями (например, StdLog). Поэтому дальнейшие обращения к нашему модулю происходят столь же эффективно, как и при статической компиляции. О перезагрузке модулей см. Загрузка и перезагрузка модулей. Меню File (Файлы) New (Новый) Команда: StdCmds.New Открывает окно с новым документом, фактически содержащее пустую текстовую вьюш­ку (text view). Open... (Открыть...) Команда: HostCmds.Open Вызывает стандартный диалог открытия файла. Open Stationery... (Открыть копию...) Команда: StdCmds.OpenStationery Вызывает стандартный диалог, чтобы открыть копию файла-шаблона. Close (Закрыть) Команда: HostCmds.Close Закрывает переднее окно. Если окно является первичным окном документа и его содержимое было изменено («грязное»), пользователю будет задан вопрос, следует ли сохранить содержание окна в файл. Save (Сохранить) Команда: HostCmds.Save Сохраняет содержимое переднего окна в файл. Если содержимое окна ещё в файл не сохранялось, то будет запрошено имя файла. Save As... (Сохранить как...) Команда: HostCmds.SaveAs Сохраняет содержимое переднего окна в файл. Всегда запрашивается имя файла. После выполнения команды работа продолжается с новым файлом. Save Copy As... (Сохранить копию как...) Команда: HostCmds.SaveCopyAs Сохраняет содержимое переднего окна в файл. Всегда запрашивается имя файла. После выполнения команды работа продолжается со старым файлом. Page Setup... (Разметка страниц...) Команда: HostDialog.InitPageSetup; StdCmds.OpenToolDialog('Host/Rsrc/Cmds', 'Page Setup') Запрашивает информацию о формате страниц документа в переднем окне для после­ду­ющей печати. В дополнение к данным, специфичным для текущего драйвера принтера, здесь можно задать поля (расстояния между краями бумаги и областью печати), а также задать или отменить печать стандартного колонтитула страницы. Стандартный колонтитул состоит из номера страницы и даты. Print... (Печать...) Команда: HostCmds.Print Запрашивает информацию по печати и затем выполняет её соответствующим образом. Send Document... (Отправить документ...) Команда: HostMail.SendDocument Посылает документ в переднем окне по электронной почте. Send Note... (Отправить заметку...) Команда: HostMail.SendNote Отправляет заметку по электронной почте. Заметкой считается выделенный фраг­мент текста, если таковой имеется. Exit (Выход) Команда: HostCmds.Exit Закрывает приложение. Если есть открытые окна с изменённым содержимым, то будут выданы запросы об их сохранении в файлы. Меню Edit (Правка) Undo [...] (Отменить [...]) Команда: StdCmds.Undo Обращает эффект самой последней операции правки (редактирования). Обычно тип операции указывается после слова «Отменить», например, «Отменить Вставка». Отмена может быть выполнена несколько раз – пока не будет восстановлено состояние документа на момент его открытия, создания или последнего сохранения. При нехватке оперативной памяти количество операций, запоминаемых для возможной отмены, может быть сокращено. Redo [...] (Повторить [...]) Команда: StdCmds.Redo Повторяет последнюю из отмененных операций. Обычно тип операции указывается после слова «Повторить». Cut (Вырезать) Команда: HostCmds.CutGuard Удаляет выделенный фрагмент и помещает его в буфер обмена. Сopy (Копировать) Команда: HostCmds.CopyGuard Копирует выделенный фрагмент в буфер обмена. Paste (Вставить) Команда: HostCmds.PasteGuard Вставляет копию содержимого буфера обмена в позиции курсора. Если вьюшка, находящаяся в фокусе, содержит данные того же типа, что и буфер обмена, то данные из буфера вставляются непосредственно в данные вьюшки. В против­ном случае и при условии, что вьюшка в фокусе является контейнером (т.е. имеет тип, наследующий типу Containers.Container –прим. ред.), в данные этой вьюшки вставляется копия всего объекта изображения, содержащего данные из буфера. Delete (Удалить) (Windows) Команда: StdCmds.Clear Удаляет выделенный фрагмент без помещения его в буфер обмена. Copy Properties (Копировать свойства ) Команда: StdCommands.CopyProp Копирует свойства текущего выделенного фрагмента (например, атрибуты текста –прим. ред.). Эта команда не влияет на содержимое буфера обмена (т.е. копирование производится в особый буфер –прим. ред.). Paste Properties (Применить свойства) Команда: StdCommands.PasteProp Применяет (к выделенному фрагменту в окне) свойства, которые были скопированы в последний раз (см. Copy Properties). Paste Object (Вставить объект) (Windows) Команда: HostCmds.PasteObject Вставляет копию содержимого буфера обмена в позиции курсора. Если вьюшка в фокусе является контейнером (т.е. имеет тип, наследующий типу Containers.Container –прим. ред.), то в данные этой вьюшки вставляется копия всего объекта изображения, содержащего данные из буфера. Paste Special... (Вставка специальная ...) (Windows) Команда: HostCmds.PasteSpecial Открывает диалоговое окно, которое позволяет выбрать тип данных объекта изобра­жения в буфере обмена, если этот объект поддерживает несколько возможных типов. Paste to Window (Открыть в новом окне) (Windows) Команда: HostCmds.PasteToWindowGuard Открывает копию содержимого буфера обмена в новом окне документа. Insert Object... (Вставить внешний объект...) (Windows) Команда: OleClient.PasteSpecial Открывает диалоговое окно, в котором показаны все доступные серверы OLE. Когда выбран один из них, создаётся объект соответствующего типа и вставляется в содер­жимое переднего окна. Object Properties... (Свойства объекта...) (Windows) Команда: HostMenus.ObjProperties Открывает список свойств, соответствующий выделенной вьюшке. Object (Объект) (Windows) Команда: HostMenus.ObjectMenu Показывает подменю с командами для выделенной вьюшки. Эти команды задаются самой выделенной вьюшкой и называются «глаголы» (verbs). Обычно первые два глагола - это Edit и Open (Править и Открыть): Edit (Править) Передаёт фокус выделенной вьюшке. Open (Открыть) Открывает новое окно со вторичной вьюшкой для выделенной. + другие глаголы, определённые выделенным объектом изображения. Clear (Очистить) (Mac OS) Команда: StdCmds.Clear Удаляет выделенные фрагмент без помещения его в буфер обмена. Select Document (Выделить документ как целое) Команда: StdCmds.SelectDocument Выделяет корневую вьюшку для документа в переднем окне как единое целое. Это не то же самое, что команда Выделить всё (Select All), которая выделяет всё содержимое документа (точнее, содержимое вьюшки в фокусе). Select All (Выделить всё) Команда: StdCmds.SelectAll Выделяет всё содержимое вьюшки в фокусе. Select Next Object (Выделить следующий объект) (Windows) Команда: StdCmds.SelectNextView Если в контейнере выделена вьюшка: выделяет следующую вьюшку. Если выделена последняя вьюшка или вообще ничего не выделено: выделяет первую вьюшку. Part Info (Информация о части) (Mac OS) Команда: HostCmds.PartInfo Открывает немодальный диалог с некоторой информацией о выделенной вьюшке. Preferences... (Настройки...) (Windows) Команда: HostDialog.InitPrefDialog; StdCmds.OpenToolDialog('HostDialog.prefs', 'Preferences') Позволяет задавать несколько параметров: следует ли использовать метрику TrueType (для повышения качества печати), следует ли обновлять экран во время прокрутки, какой шрифт использовать для текстов по умолчанию, какой шрифт – для элементов управления, и следует ли показывать полоску состояния. Меню Attributes (Шрифт) Меню доступно. если выделенный фрагмент или курсор во вьюшке в фокусе в переднем окне допускают управление стилем/кеглем/цветом. Следующие команды применимы к выделенному фрагменту; если такого нет, они повли­я­ют на текущие атрибуты в позиции курсора. Как вариант доступен системный цвет (цвет по умолчанию), который может настра­и­ваться пользователем. В Windows цвет по умолчанию может быть изменен с помощью средств операционной системы. Все, что отрисовано цветом по умолчанию, будет соответственно обновлено. Regular (Простой) (Windows) Команда: StdCmds.Plain Охрана: StdCmds.PlainGuard Команда отмечена: если текст влево и вправо от курсора простой, или если выделенный текст весь простой (то есть не полужирный, не курсив, не подчеркнут и не вычеркнут). Снимает для выделенного фрагмента все атрибуты стиля (полужирность, курсив, подчеркивание, вычеркивание). Bold (Полужирный) Команда: StdCmds.Bold Команда отмечена: если текст справа и слева от курсора полужирный, или выделенный фрагмент весь полужирный. Если выделенный фрагмент весь полужирный, он теряет этот атрибут, в противном случае – становится полужирным. Italic (Курсив) Команда: StdCmds.Italic Команда отмечена: если текст справа и слева от курсора курсивный, или выделенный фрагмент весь курсивный. Если выделенный фрагмент весь курсивный, он теряет этот атрибут, в противном случае – становится курсивным. Underline (Подчеркнутый) Команда: StdCmds.Underline Команда отмечена: если текст справа и слева от курсора подчеркнут, или выделенный фрагмент весь подчеркнут. Если выделенный фрагмент весь подчеркнут, он теряет этот атрибут, в противном случае текст подчеркивается. Strikeout (Вычеркнутый) (Mac OS) Команда: StdCmds.Strikeout Команда отмечена: если текст справа и слева от курсора вычеркнут, или выделенный фрагмент весь вычеркнут. Если выделенный фрагмент весь вычеркнут, он теряет этот атрибут, в обратном случае текст вычеркивается. (8 point (Windows),) 9 point, 10, 12, 16, 20, 24 (.. пунктов) Команда: StdCmds.Size(size) Команда отмечена: если текст справа и слева от курсора имеет данный кегль, или выделенный фрагмент весь имеет данный кегль. Выделенный фрагмент приобретает данный кегль. Size... (Кегль...) (Windows) Команда: StdCmds.InitSizeDialog; StdCmds.OpenToolDialog('Std/Rsrc/Cmds', 'Size') Команда отмечена: если не применен никакой другой кегль. Открывается инструментальный диалог, который позволяет задать кегль шрифта в типографских пунктах, и затем выделенный фрагмент приобретает этот кегль. Default Color (Цвет по умолчанию) Команда: StdCmds.Color(1000000H) Команда отмечена: --- Black (Черный) Команда: StdCmds.Color(0000000H) Команда отмечена: --- Red (Красный) Команда: StdCmds.Color(00000FFH) Команда отмечена: --- Green (Зеленый) Blue (Синий) Color... (Цвет...) (Windows) Команда: HostDialog.ColorDialog Команда отмечена: если не применен никакой другой цвет. Запрашивает у пользователя цвет и прменяет его к выделенному фрагменту. Default Font (Шрифт по умолчанию) (Windows) Команда: StdCmds.DefaultFont Применяет к выделенному фрагменту шрифт по умолчанию. Font... (Шрифт...) (Windows) Команда: HostDialog.FontDialog Открывает стандартный диалог выбора шрифта и применяет выбранные атрибуты к выделенному фрагменту. Typeface... (Гарнитура...) (Windows) Команда: HostDialog.TypefaceDialog Открывает стандартный диалог выбора шрифта и применяет выбранную гарнитуру к выделенному фрагменту. Отличие от команды Шрифт... в том, что изменяется только гарнитура шрифта (название), а не иные атрибуты, такие как кегль или насыщенность (полужирный/нормальный). Меню Window (Windows) (Окна) New Window (Новое окно) Команда: StdCmds.NewWindow Открывает новое окно для документа в переднем окне. Новое окно имеет тот же тип, что и переднее окно. Заголовок окна заключается в скобки "(" и ")". Cascade (Каскадом) (Windows) Команда: HostMenus.Cascade Располагает окна документов так, что они некоторым образом накладываются друг на друга. Tile Horizontal (Горизонтально) Команда: HostMenus.TileHorizontal Располагает окна сверху вниз без перекрытия. Эта команда не оказывает влияния на окна с неизменяемым размером, а также на некоторые открытые окна, когда их слиш­ком много для разумного размещения. Переднее окно размещается в самом верху. Tile Vertical (Вертикально) Команда: HostMenus.TileVertical Размещает окна слева направо без перекрытия. Эта команда не оказывает влияния на окна с неизменяемым размером, а также на некоторые открытые окна, когда их слиш­ком много для разумного размещения. Переднее окно становится крайним слева. Arrange Icons (Упорядочить значки) (Windows) Команда: HostMenus.ArrangeIcons Упорядочивает значки (свернутые окна) вдоль нижнего края окна приложения. {окно} Команда: HostMenus.WindowList Это список открытых окон, переднее окно в начале списка (помечено). Названия окон документов, содержимое которых было изменено, выделяются жирным шрифтом. Литература 1 Ключарев А.А. и др. Структуры и алгоритмы и обработки данных: Учеб. пособие / СПбГУАП.– СПб., 2003.– 172 с. 2 Белов В. В. Алгоритмы и структуры данных: Учебник / Белов В.В., Чистякова В.И. - М.:КУРС, НИЦ ИНФРА-М, 2016. - 240 с. 3 Колдаев В. Д. Структуры и алгоритмы обработки данных: Учебное пособие / В.Д. Колдаев. - М.: ИЦ РИОР: НИЦ ИНФРА-М, 2014. - 296 с.
«Интегрированная среда разработки (ИСП, IDE) BlackBox» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot