Пролог XPCE, как получить несколько значений из текстового элемента?

У меня есть диалог, который содержит несколько элементов текстового элемента и кнопку. Как я могу получить значения и использовать их?

new(D, dialog('Add a recipe')),
send(D, append(new(NameItem,   text_item('Name')))),
send(D, append(new(InstItem,   text_item('Instruction')))),
send(D, append(new(IngrItem,   text_item('Ingredients')))),
send(D, append(new(TimeItem,   text_item('Time')))),
send(D, append(button('Store', message(D, return, '1')))),
get(D, confirm, Rvalue),
write(NameItem), nl,
write(InstItem), nl,
write(IngrItem), nl,
write(TimeItem), nl,
free(D),

2 ответа

Решение
test :-
    new(D, dialog('Add a recipe')),
    send(D, append(new(NameItem,   text_item('Name')))),
    send(D, append(new(InstItem,   text_item('Instruction')))),
    send(D, append(new(IngrItem,   text_item('Ingredients')))),
    send(D, append(new(TimeItem,   text_item('Time')))),
    send(D, append(button('Store', message(D, return, '1')))),
    send(D, show(true)),
    get(D, confirm, _Rvalue),
    maplist(getv, [NameItem, InstItem, IngrItem, TimeItem]),
    free(D).

getv(T) :- get(T, selection, V), writeln(V).

вы можете полностью обработать список, применив к каждому элементу (объекту textitem) операцию "получить текст"

Вы должны запросить выбор text_item по

get(NameItem, selection, SelNameItem),

Если вы используете предикаты XPCE, вы можете использовать NameItem? Selection.

Другие вопросы по тегам