Подменю можно создать, просто указав меню вместо одного из элементов меню верхнего уровня.
(make-instance ‘menu :title «Bar» :items ‘(«One» «Two» «Three» «Four») :callback ‘test-callback) (make-instance ‘menu :title «Baz» :items (list 1 2 * 4 5) :callback ‘test-callback) (contain *)
Здесь создается интерфейс, в котором есть меню с названием Baz, которое само состоит из пяти элементов. Третий элемент сам является еще одним меню Bar, которое состоит из четырех элементов. Еще раз, при выборе любого элемента меню возвращаются аргументы этого элемента. Подобный подход позволяет создавать вложенную структуру меню настолько глубоко, насколько это необходимо.
Класс menu-component позволяет сгруппировать связанные друг с другом элементы в меню вместе. В результате похожие элементы меню могут совместно пользоваться одними и теми же свойствами, например, обратными вызовами, но в меню они могут быть визуально отделены друг от друга. На самом деле, среди различных компонентов меню есть что выбрать.
Язык LISP для студентов и инженеров. Первая программа
Ниже приведен простой пример использования компонента меню. Здесь создается меню с названием Items, в котором есть четыре элемента. Menu 1 и Menu 2 являются обычными элементами меню, а элементы Item 1 и Item 2 созданы из компонента меню, и, следовательно, сгруппированы в меню так, как это показано на рис.1:
(setq component (make-instance ‘menu-component :items ‘(«item 1» «item2») :print-function ‘string-capitalize :callback ‘test-callback)) (contain (make-instance ‘menu :title «Items» :items (list «menu 1» component «menu 2») :print-function ‘string-capitalize :callback ‘hello) :width 150 :height 0)
Рис.1: Меню с компонентами меню
Радио-кнопки
Компоненты меню позволяют вам с помощью ключевого слова :interaction указать, как можно переключать меню — делать выбор сразу нескольких элементов или выбирать только один элемент. Это напоминает использование в меню в качестве элементов меню радио-кнопок или чек-боксов, которые популярны во многих приложениях, использующих графический пользовательский интерфейс. В следующем примере показано, как можно добавить в меню панель с радио-кнопками (см. рис.2):
(setq radio (make-instance ‘menu-component :interaction :single-selection :items ‘(«This» «That») :callback ‘hello)) (setq commands (make-instance ‘menu :title «Commands» :items (list «Command 1» radio «Command 2») :callback ‘test-callback)) (contain commands)
Рис.2: Радио-кнопки в меню
Элементы меню This и That являются радио-кнопками, причем в каждый конкретный момент можно выбрать только один из них. Остальные элементы обычные, как и в предыдущем примере. Обратите внимание, что CAPI автоматически группирует элементы, которые являются частью компонента меню, так что в меню они отделены от других элементов.
Меню с пометками — чек-боксы
Приведенный выше пример также иллюстрирует использование в меню более чем одного обратного вызова, что, конечно, является обычным делом при разработке реальных приложений. При выборе одной из радио-кнопок на экране отображается одно сообщение и в качестве аргументов обратного вызова возвращается либо Command1, либо Command2.
Как скачать OsEngine с ГитХаб. Как запустить программу?
Выбираемые элементы меню можно создавать с указанием :multiple-selection для ключевого слова :interaction так, как это показано на рисунке ниже (см. рис.3):
(setq letters (make-instance ‘menu-component :interaction :multiple-selection :items (list «Alpha» «Beta»))) (contain (make-instance ‘menu :title «Greek» :items (list letters) :callback ‘test-callback))
Рис.3: Меню с несколькими помечаемыми элементами
Обратите внимание, что элементы компонента меню наследуют обратный вызов родительского элемента, что избавляет от необходимости указывать отдельный обратный вызов для каждого элемента или компонента в меню. В меню или в компоненте меню вы можете указать альтернативные варианты, которые будут вызваны для элемента основного меню с помощью горячих клавиш.
Класс menu-item позволяет вам создавать отдельные пункты меню, которые можно передать в компоненты меню или в меню с указанием ключевого слова :items . С помощью этого класса вы можете различным элементам меню назначать различные функции обратного вызова. Помните, что каждый экземпляр этого класса не должен использоваться одновременно белее, чем в одном месте.
(setq test (make-instance ‘menu-item :title «Test» :callback ‘test-callback)) (setq hello (make-instance ‘menu-item :title «Hello» :callback ‘hello)) (setq group (make-instance ‘menu-component :items (list test hello))) (contain group)
Рис.4: Отдельное меню
С помощью комбинирования элементов меню, компонентов меню и меню нижнего уровня можно создать иерархическую структуру. Меню в коде, приведенном ниже, состоит из пяти элементов, одним из которых является само меню (с тремя элементами меню), а остальные являются компонентами меню и элементами меню. Элементы в меню наследуют значения своих родительских элементов, что позволяет похожим элементам при любой возможности пользоваться похожими свойствами.
(defun menu-item-name (data) (format nil «Menu Item ~D» data)) (defun submenu-item-name (data) (format nil «Submenu Item ~D» data)) (contain (make-instance ‘menu :items (list (make-instance ‘menu-component :items ‘(1 2) :print-function ‘menu-item-name ) (make-instance ‘menu-component :items (list 3 (make-instance ‘menu :title «Submenu» :items ‘(1 2 3) :print-function ‘submenu-item-name)) :print-function ‘menu-item-name) (make-instance ‘menu-item :data 42)) :print-function ‘menu-item-name))
Рис.5: Иерархия меню
В LispWorks вместо того, чтобы создавать элементы пользовательского интерфейса непосредственно в программе, также предлагается инструмент Interface Builder, который позволяет строить графический пользовательский интерфейс в приложениях на Lisp-е. Вы можете в вашем приложении создать и протестировать каждое окно или диалог — Interface Builder создаст необходимый исходный код для окон, которые у вас есть; все, что вам нужно сделать для того, чтобы можно было использовать ваш собственный исходный код, это добавить обратные вызовы в сгенерированный код.
Источник: rus-linux.net
Lispworks – вопросы и ответы
Привет, кто-нибудь может мне помочь? (defun f(x) (LIST ((* 2 x) (* 3 x))) ) (f 1) Я получаю это, Illegal argument in functor position: (* 2 X) in ((* 2 X) (* 3 X)) .
5 месяцев, 1 неделя назад Retard
Я должен написать простую программу в Lisp, которая умножает многочлен на некоторый фактор. В этом примере я хочу умножить (x + 5) * 5x. Ответ должен быть 5x ^ 2 + 25x. Когда я положил ((1 1) (5 0).
5 месяцев, 1 неделя назад Naman Rawal
Я пытаюсь решить Проблема 14 в Project Euler (найдите самую длинную последовательность Collatz от 1 до 1000000). Мой код состоит из рекурсивной, memoized функции для вычисления длины последовательн.
5 месяцев, 2 недели назад Paulo Mendes
Я новичок в общем lisp, я хочу сделать некоторые (возможно, расширенные чтения файлов) поэтому давайте скажем, что у меня есть example1.txt, example2.txt и example3.txt. example1.txt имеет следующе.
5 месяцев, 2 недели назад
Я использую LispWorks Personal Edition и загружал только Quicklisp, загружая файл, а не через файл инициализации .lispworks , который LispWorks должен найти в моем домашнем каталоге, C:UsersMe .
5 месяцев, 2 недели назад
Я работаю над игрой Connect Four, используя общие lisp и LispWorks CAPI . Я закончил с интерфейсом, за исключением одного: я использую кнопки (в кнопочной панели), чтобы капли штук в столбцы, и я х.
5 месяцев, 2 недели назад
У меня проблема с выражением LISP ниже. Существует ошибка плавающей точности при выполнении суммы для чисел с плавающей запятой. CL-USER> (+ -380 -158.27 -35.52) Actual: -573.79004 Expected: -57.
5 месяцев, 4 недели назад
Я хочу вызвать класс Java в Lisp с помощью этой команды: (sys:call-system-showing-output «cd C:/Users/iliass/Downloads/SBC-Projet/stanford-postagger java -mx300m -classpath stanford-postagger.jar e.
6 месяцев назад kahli iliass
Я очень новичок в Lisp и пытаюсь написать программу, которая просто просит пользователя ввести 3 числа, а затем суммирует их и выводит результат. Я читал, что вы можете использовать такую функцию.
1 год, 5 месяцев назад chope_chope
Это моя вторая правильная попытка программы Lisp, как кубик-ролик для Mythender (свободно распространяемая настольная RPG). У этого есть несколько проблем, хотя: Когда он загружается, я получаю при.
1 год, 5 месяцев назад
У меня есть список ниль (NIL NIL NIL NIL), и мне нужно добавить два X вместо двух первых NIL, поэтому он становится (XX NIL NIL) . У меня есть следующий код: (cons x (cons x (cons (cdr ‘(NIL NIL NI.
1 год, 5 месяцев назад
Я имею в виду, что с SBCL я могу запускать скрипт так же просто, как sbcl —script piece-of-code.lisp . Но я не могу найти очевидный способ сделать это с помощью LispWorks. Конечно, всегда есть опц.
1 год, 5 месяцев назад
Мне нужно определить функцию в lisp , которая, учитывая регулярное выражение и e-NFA в качестве входных данных, возвращает true, если выражение принимается автоматами. Для начала я определил функци.
2 года, 5 месяцев назад DouglasP
Я хотел бы добавить список, основанный на примере A ниже. Общая книга по Lisp — Использование Win32 API Я добавил функцию sendmessage, которая сопоставляется с частью его счетчика окон и вызывает е.
2 года, 5 месяцев назад user1461328
Прежде всего, я вынужден использовать LispWorks, и я хотел бы знать, что именно использует этот компилятор, и могу ли я использовать его в CLI. Также в LispWorks есть такие методы, как defsystem и .
3 года, 3 месяца назад sukovanej
Когда я запускаю эту функцию из прослушивателя в LispWorks, это либо приводит к сбою слушателя, либо дает данные языка исключения и ассемблера. Может ли кто-нибудь сказать мне, что с ним не так? (d.
9 лет, 5 месяцев назад
Я новичок в LISP, в настоящее время использую LispWorks и IDE ListBox на сервере Windows 2008. Я хочу знать, что, как мы можем скомпилировать и запустить проект LISP, содержат 350 исходных файлов L.
11 лет, 4 месяца назад
Я хочу использовать Hunchentoot easy-ssl-acceptor acceptor в LispWorks. Однако я вижу, что этот класс акцепторов имеет следующий синтаксис функции #-:hunchentoot-no-ssl . Эта функция действительно .
4 года, 9 месяцев назад
Я использую Lispworks для школьного проекта, и у меня небольшие проблемы; слушатель дает мне хэштег в выводе со списками, которые имеют более четырех глубин. Вот пример: CL-USER 21 : 5 > ‘(1(2(3.
10 лет, 4 месяца назад
Так что я недавно научил себя lisp и был возиться с некоторыми программами. Я пытаюсь написать небольшую программу, которая сравнивает список введенных пользователем классов и находит, какие из них.
8 лет, 6 месяцев назад
Значок приложения просто продолжает прыгать в течение нескольких минут после того, как я нажму на него, а затем остановится, и ничего не показывают. Затем приложение становится «Не реагирует». Согл.
7 лет, 4 месяца назад
Я могу поклясться, что раньше это работало. CL-USER 7 > (ql:quickload ‘rutils) To load «rutils»: Load 1 ASDF system: rutils ; Loading «rutils» [package editor-hints.named-readtables].. .
5 лет, 2 месяца назад
Я хочу знать, как создать и записать текстовый файл в lisp. Я просто хочу написать простую строку, например: «break 1» «break 2» Я использую LispWorks IDE в окне 7
11 лет, 4 месяца назад
У меня проблема с функцией перемещения в моем коде. Мне нужно, чтобы это было: одна функция, которая может перемещать все фигуры или, несколько функций с тем же именем. Пока у меня есть функции пер.
4 года, 8 месяцев назад Alexandra Štósová
Я объявил следующий список в lisp: (defvar car-owners-2 (list (list ‘yaakov (list ‘volvo 100000.0)) (list ‘moshe (list ‘vw 75000.0)) (list ‘rachel (list ‘mazda 60000.0)) (list ‘sarah (list ‘volvo 1.
11 лет назад זאבי כהן
Я нахожусь в LispWorks, я вижу другой вопрос с этим названием, но ни один из них не помог мне. Это код, который я пишу: (defun get-param (param) (lambda (state) (getf (cdr state) param))) (defconst.
4 года, 6 месяцев назад Luca Gorzog
У меня есть класс, подобный этому (defclass shape () ((color :initform :black) (thickness :initform 1) (filledp :initform nil) (window :initform nil))) Есть ли общая функция lisp, как получить спис.
6 лет, 7 месяцев назад Micky
Я хочу определить макрос, который инкапсулирует частый шаблон ниже. Код для FLI lispworks. (fli:with-foreign-string ;; class name pointer (cn-p ec bc :external-format (external-format)) «BUTTON» (f.
6 лет, 6 месяцев назад user1461328
Кто-нибудь знает, как поддерживать цветовое кодирование в редакторе Lispworks? (LispWorks Personal Edition v6.1) Он отлично работает при вводе нового кода. Но после сохранения и загрузки снова все .
5 лет, 4 месяца назад
Сейчас я работаю над программой, которая должна быть в состоянии выбрать 3 человека из списка из 7 (abcdefg) и назначить их преступниками. Эта «игра» затем выбирает 3 случайных пика из 7, рассказыв.
9 лет, 7 месяцев назад
Я хочу создать массив в функции и передать его в качестве параметра другой функции, которая вызывается из этой функции. Как я могу это сделать? Здесь псевдокод: define FuncA (Array Q)<
8 лет, 8 месяцев назад
Я хочу создать функцию lisp, которая соответствует макрокоманде C. например, существует один HIWORD в API win32, который определяется как макрос в файле заголовка. Я попытался определить его, как п.
6 лет, 8 месяцев назад user1461328
У меня есть меню, которое создается в функции параметров, и функциональность заключается в том, чтобы пользователь вводил число (1, 2 или 3), чтобы решить проблему с выбранным методом (DFS, BFS, BE.
4 года, 6 месяцев назад
Ищете еще? Найдите вопросы с помощью поисковой формы вверху страницы или с помощью рубрикатора, помогите ответить на вопросы без ответа.
Рубрики
progi.pro – один из крупнейших сервисов вопросов и ответов по программированию. У нас вы можете найти вопросы по языкам программирования Javascript, PHP, Java, C#, Python и многим другим.
А так же делитесь знаниями, знакомьтесь с новыми утилитами и приложениями, учитесь у всегда готовых помочь ответить на самые сложные вопросы во всех сферах IT и программирования. Станьте гуру и экспертом разработки ПО, получите признание коллег, заработайте репутацию, создайте стартап или приложение которое будет работать на вас!
Источник: progi.pro
Скачать LispWorks Personal Edition 6.0.1
Простой и надёжный инструмент, необходимый каждому веб-мастеру, включающий набор.
Adobe AIR — среда для выполнения, благодаря которой появляется возможность преобразовать.
Resource Hacker — бесплатная утилита, предназначенная для просмотра, изменения, добавления.
Android SDK — универсальная оболочка для моделирования и разработки различных программных продуктов под операционную систему Android.
Unity Web Player — расширение для браузеров, которое позволяет запускать игры на движке Unity.
Кроссплатформенная сборка веб-сервера, которую можно использовать для тестирования и.
Источник: www.softportal.com