Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Может, кто-нибудь поможет решить проблемку? Задача на первый взгляд простая. 1. Создается пустой ListBox. 2. Кнопкой вызывается InputBox, где вводится информация. OK. 3. Эта информация добавляется в ListBox - без проблем. Но вот как сделать, чтобы она сохранилась там? Вот вопрос. Крутил и так и этак... Никак. После нового запуска - ListBox снова чист. И еще, если удастся решить эту проблему. Возможно ли с этой информацией проводить уже манипуляции? То есть назначать действия и т.д.? Как программа будет эту строку идентифицировать для дальнейшей работы? Поясню общий замысел: сделать картотеку. Создал список заголовков - прикрепил к каждому информацию (текст, картинки в окнах...) и листаешь. То есть сделать такую программу, чтобы пользователь сам мог формировать записи.
Но вот как сделать, чтобы она сохранилась там? Вот вопрос. Крутил и так и этак... Никак. После нового запуска - ListBox снова чист. И еще, если удастся решить эту проблему.
Разьве это - проблема? На самом деле всё очень просто - см. маленький пример в прикреплении.
Quote (Friedhelm)
Возможно ли с этой информацией проводить уже манипуляции?
Разумеется! А зачем тогда она (информация) нужна?
Quote (Friedhelm)
То есть назначать действия и т.д.? Как программа будет эту строку идентифицировать для дальнейшей работы? Поясню общий замысел: сделать картотеку. Создал список заголовков - прикрепил к каждому информацию (текст, картинки в окнах...) и листаешь. То есть сделать такую программу, чтобы пользователь сам мог формировать записи.
Естесственно все это МОЖНО сделать! А вот КАК, это уже зависит целиком только от вас! Вам надо будет (для начала) изучить приемы работы со строками и с текстовыми файлами: чтение-запись, и т.п. Но конкретнее, пожалуйста, т.к. тут может быть не одно решение...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Спасибо, Peter, огромное! Я лишь недавно начал осваивать NB. Параллельно попробовал MMB, и HA. Но Neo Book мне пришелся как-то ближе. Сохранять данные, введенные в ListBox в стороннем файле .txt - первое, что пришло мне в голову и это нормальное решение задачи. Но я пытался сделать так, чтобы при открытии приложения - ListBox уже показывал введеные ранее данные, без кликанья на кнопку "Загрузить из файла". Ваш пример натолкнул меня на мысль - присвоить командный код этой кнопки объекту ListBox. Сегодня, к сожалению, не смогу уже это испробовать, но в ближайшие дни - обязательно. Теоретически, должно сработать. Еще раз спасибо! P.S. Как жаль, что нет приличного обучающего материала, а одного Хелпа, прилагающегося к программе явно не хватает. Про то убожество, которое втюхивает Геннадий Ка, я вообще говорить не хочу. Приходится доходить до достижения нужной задачи методом проб и ошибок. И хорошо, что есть этот сайт, где можно расчитывать на помощь.
P.S. Как жаль, что нет приличного обучающего материала, а одного Хелпа, прилагающегося к программе явно не хватает.
Да, понимаю... Необушная справка хиловата, даже несмотря на то, что формально в ней все есть, чтобы начать освоение NB! Замечательняа программа, и... паршивая справка! Парадокс... Для программиста, на самом деле, написАть грамотную справку к программе намного труднее чем саму программу! И это - не шутка.
Quote (Friedhelm)
втюхивает Геннадий Ка
Неужели вы заплатили?...
Quote (Friedhelm)
И хорошо, что есть этот сайт, где можно расчитывать на помощь
А для чего мы здесь тусуемся тогда? Заглядывайте к нам если что... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter! Так и не могу, видимо, поймать какой-то сути. Пробовал по всякому. Не получается сделать так, чтобы при загрузке приложения ListBox был уже загружен строками, внесенными пользователем ранее. Ну да ладно, есть кнопка "Загрузить из файла" и хоть это разнится с замыслом, можно пользоваться ей. Другая головоломка, как присвоить этим строкам (отображаемым при загрузке из файла, но невидимым при проектировании) нужные операции? Когда сам проектируешь ListBox - здесь все ясно: if "[ListBox]" "=" "Нужная строка" "Нужное действие" EndIf. А когда не знаешь, какие данные введет пользователь? Переменная-то, в которой сохраняются данные из файла - одна, а строк может быть десяток. Как их идентифицировать? Перелопатил весь Хелп, но намека не увидел. Пытался методом логического тыка - безрезультатно. Может, я себе непосильную задачу замутил? Немного модифицировал тот файл, что Вы показали выше. Но дальше дело не идет. Может, присоветуете что?
Не получается сделать так, чтобы при загрузке приложения ListBox был уже загружен строками, внесенными пользователем ранее.
Проект > Свойства проекта > Команды Закладка запуск. Туда вписываете команды которые находяться на кнопке Загрузить из файла.. Закладка Выход команды из Кнопки Сохранить в файл. Больше Вам эти кнопки не нужны Приложение при запуске будет автоматически добавлять записи, при закрытии приложения сохранять все что вы добавили. Не хочешь читать хелп?
Другая головоломка, как присвоить этим строкам (отображаемым при загрузке из файла, но невидимым при проектировании) нужные операции?
Ответ на этот вопрос вы найдете в этом топике. Если будет что-то непонятно, спрашивайте....
Quote (Friedhelm)
А когда не знаешь, какие данные введет пользователь?
А вот это НИКТО и НИКОГДА предугадать не сможет! Мало ли что взбредёт в голову пользователю! Человеческой глупости нет предела! Но, направить поведение программы в нужное русло всегда возможно.
Quote (Friedhelm)
Может, я себе непосильную задачу замутил?
Отчего же непосильную? Если голова "на месте", то ничего непосильного нет! Все осваивается "от простого к сложному"...
Quote (Friedhelm)
Может, присоветуете что?
Для этого надо подробнее узнать все-таки: ЧТО вы хотите получить? А начальную подсказку вам уже чуть ранее дал mishem... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Спасибо, Mishem и Peter! Я как раз это проделывал, но ошибка моя заключалась в том, что команды вставлял не в свойства проекта, а в свойства страницы. Теперь все получилось.
Quote (Peter)
Для этого надо подробнее узнать все-таки: ЧТО вы хотите получить?
А замысел прост - сделать программку-картотеку, где пользователь вносит в ListBox заголовки записей. Затем вписывает в многострочные TextBox'ы сами записи, связанные с заголовками. В итоге, выбирая пункты в ListBox'e имеет быстрый доступ к введеной информации. Я сделал подобное с помощью базы данных (это оказалось проще), но более громоздко, тем более, что найти нужную информацию можно только через команду "Find", а просмотр в режиме сетки не очень удобен - присутствует масса лишней информации. А тут - другое дело! Минимум средств и максимум функциональности. Кстати, мысль пришла (пока еще не пробовал, но и команд таких не припомню кроме ImageWindow) - возможно ли в NB сделать так, чтобы пользователь не только свой текст вставлял, но и картинки? Надо поискать. Еще раз спасибо за помощь.
Получилось-то, получилось, но возник побочный эффект - теперь при каждом запуске ListBox добавляет к уже имеющимся записям снова их же... Список растет и множится.
Я сделал подобное с помощью базы данных (это оказалось проще),
Если вы использовали пример фото-альбома, прилагающийся к плагину NeoBookDB, то СОВЕРШЕННО ПРАВИЛЬНО СДЕЛАЛИ!!! Насколько я сумел понять идею вашей картотеки решение через базы данных - просто ИДЕАЛЬНЫЙ вариант!
Quote (Friedhelm)
но более громоздко,
Отчего же? Ничего подобного!...
Quote (Friedhelm)
нужную информацию можно только через команду "Find", а просмотр в режиме сетки не очень удобен - присутствует масса лишней информации.
Всё это зависит от того как вы САМИ организуете поиск и вывод на экран нужных данных. Команда плагина dbfFieldToVar - всего одна строчка кода, и ваш список (именно СПИСОК, а не таблица, но можно и таблицу, без разницы)... заполнен! Причем. заполнен только нужной вам информацией!
Quote (Friedhelm)
А тут - другое дело! Минимум средств и максимум функциональности
Всё - прямо НАОБОРОТ!!! Управление информацией при помощи баз данных в сотни (тысячи) раз эффективнее текстовых файлов. Пока у вас один-два десятка записей это практически незаметно, но по мере роста количества информации разрыв в скорости её обработки будет все увеличеваться и увеличеваться.
Quote (Friedhelm)
возможно ли в NB сделать так, чтобы пользователь не только свой текст вставлял, но и картинки?
Конечно возможно! Посмотрите тот пример фото-альбома. Но можно сделать и совсем по-другому, т.е не грузить картинки в базы данных - все зависит от того ГДЕ и в каком виде должны находиться картинки.
Quote (Friedhelm)
при каждом запуске ListBox добавляет к уже имеющимся записям снова их же... Список растет и множится.
Сейчас посмотрел ВАШ же пример! НИЧЕГО НЕ МНОЖИТСЯ! Все работает совершенно исправно! Галочку "Стирать старые данные" убирать НЕ НАДО, и.. всё ОК! Или "модернизировать" нужным образом команды на выходе приложения.
Мне кажется, что основная ваша ошибка состоит в том, что приведенные примеры кодов, вы рассматриваете как некую догму, что ли. На самом деле, их надо воспринимать именно, как своего рода, тезисы, подсказки... И все эти дэмо-примеры нужно переделывать под СВОИ собственные нужды, а не просто слепо применять один-в-один!
Quote (mishem)
FileRead "[PubDir]Список.txt" "All" "
"
Совершенно верно, если нужно загрузить файл в список целиком. Кстати, в данном случае аналог FileToVar. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Ломился в открытую дверь. Пример фото-альбома я как раз и не посмотрел. А там - ответы на многие мои вопросы. Команду dbpFieldToVar обязательно попробую. Судя по тому, что Вы, Peter, сказали это действительно - то, что нужно. Спасибо Вам и Mishem'у. Ну а если еще подскажете, как одной кнопке назначить разные действия - будет мне счастье. Бьюсь над этим долго. Чувствую теоретически, что нужно создать шаблоны сценариев, а в самом коде кнопки указать условие при котором один сценарий заканчивает работу, а другой продолжает. Но как ни пробовал, при клике идет только одно действие. Конкретнее: первое нажатие на кнопку - показывает скрытый объект, второе нажатие снова его прячет. Можно, конечно, закрытие объекта присвоить правой клавише или MouseExit, но это неинтересно.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter! Надо же! Действительно просто. А главное - этот маленький пример дает еще один штрих к пониманию сути NeoBook. Спасибо. Попробовал использовать (по Вашему совету) команду dbpFieldToVar (работаю с плагином NeoBookDBPro) для получения списка записей из базы данных, все получилось. Но опять уперся в старую проблему. Список получил, но как в режиме запуска приложения заставить его пункты работать? Прочитал тот топик, где Lego разбирался с созданием Autorun-меню, но решения так и не "выудил". Там рассматривается работа с названиями нескольких файлов - у меня же данные внутри одного файла... Вобщем, история вопроса такова. Моя жена - издатель. Я сделал ей в NeoBook'е программку, где она вносит данные по всем изданным книгам - название, формат, тираж, стоимость и т.д. В программе две страницы. В одной - форма для внесения записей, которая служит и для показа данных после применения команды Find. На второй странице вся база данных предстает в виде сетки. Все работает, жена довольна и можно было бы на этом успокоиться. Но было бы еще удобнее, если б появилась третья страница (она же начальная), где находился бы список всех внесенных книг, и после выбора названия, в другом окне возникали все сведения о книге, а в третьем показывалась обложка. С остальным я более или менее разобрался. Но вот как заставить список работать?... Прикрепляю пример. Буду очень признателен, если поможете разобраться с приведенной аналогией. Там знакомый нам ListBox и два скрытых прямоугольника - красный и синий. Как сделать, чтобы в режиме запуска при выборе названия цвета возникал соответсвующий прямоугольник? По этому примеру я уже, надеюсь, соображу, как организовать показ данных в своей программе. Кстати, а может стоит выкладывать такие примеры, как этот или с многоразовой кнопкой где-нибудь? Это ведь определенный вклад в дело обучения премудростям NeoBook. Классная программа!
как в режиме запуска приложения заставить его пункты работать?
Не понятно: что означает в данном случае "работать"? ЧТО должно происходить на запуске? ЧТО при выборе пункта? Традиционно пункты в списке выбирает сам пользователь вручную (для этого, собственно, список и нужен), но можно и программно работать со списком.
Quote (Friedhelm)
Как сделать, чтобы в режиме запуска при выборе названия
Вам нужно в режиме запуска или при выборе названия? Это - два разных события!
Quote (Friedhelm)
возникал соответсвующий прямоугольник
См.прикрепления. Там два примера для случая выбора вручную. Два варианта и два совершенно разных подхода. Могут быть и ДРУГИЕ варианты. Их можно (и нужно) КОМБИНИРОВАТЬ как угодно.
Quote (Friedhelm)
может стоит выкладывать такие примеры
Я уже думаю над этим.. Одних примеров мало, да и потом на все случаи жизни примеров не нашлепать... Тут иначе надо.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
На самом деле все достаточно просто. Итак, у Вас есть ListBox куда, используя команду dbfFieldToVar, вы загружаете данные базы данных (например названия книг). Далее, чтобы список заработал, а именно, чтобы при выборе в списке названия какой-либо книги на второй странице загружались остальные ее данные, а на третьей - обложка - во вкладке "Команды" свойств ListBox'a достаточно прописать:
Code
.Вывод данных, соответствующих выделенному пункту dbfFind "SelBase" "NAME" "[List]" GotoPage "2"
SelBase - это переменная содержащая путь к файлу базы данных объявленная командой dbfDefineAlias (для удобства и не только)... После выбора пункта списка команда dbfFind найдет соответствующую запись в базе данных и загрузит остальные данные этой записи...
Также, прилагаю в качестве примера проект авторана, где Вы можете посмотреть некоторые решения по этому вопросу.
Ну наконец-то спец по базам появился! Ура! А то я тут в одиночку, понимаешь, сражаюсь... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Привет! Давно пора! Кстати, тут вопрос про печать возник. Может есть соображения... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Спасибо всем, кто терпеливо вразумлял меня в сложном (надеюсь - пока) деле постижения СУТИ классной программы NeoBook!
Quote (Peter)
Я уже думаю над этим.. Одних примеров мало, да и потом на все случаи жизни примеров не нашлепать...
На все случаи, разумеется, не получится, а такие-вот заготовки, которые вы мне показывали вполне могут пригодиться новичкам на фоне дефицита с обучающим материалом. Вдумчивый пользователь всегда найдет в них рациональное зерно и даже просто вникнув в коммандную строку и посмотрев, как это работает - сделает зарубку у себя в извилинах и когда-нибудь это применит. Польза налицо. Такая база может быть прекрасным противовесом бурной деятельности некоторых товарищей, оккупировавшим Инет с иезуитскими подходцами: "Вот тебе "А", когда заплатишь, тогда "Б" скажу. А без этого "Б" дело у новичка дальше с большим трудом движется... Но прекрасно, что есть этот ресурс и люди, которые дадут утопающему дилетанту спасательный круг в виде дельного совета. Спасибо.
Добавлено (21 Март 2009, 17:42) --------------------------------------------- За патетикой забыл о главном. Peter! Во втором варианте "Spisok1a" реализовано именно то, что я и пытался добиться - заставить ListBox выполнять действие, все равно какое... Lector! Классный пример вы мне показали, где как раз реализован механизм вставки в базу и текста, и картинок. Теперь могу двигаться дальше. Багодарю всех.
Во втором варианте "Spisok1a" реализовано именно то, что я и пытался добиться - заставить ListBox выполнять действие, все равно какое...
Гм... Вообще-то и в первом примере ListBox тоже выполняет действие, в принципе, все-равно какое. В обоих примерах все действия - события объекта ListBox, только действия немного разные. Впрочем, вам виднее...
Quote (Friedhelm)
Спасибо.
Не за что. Если что, адрес наш знаете. Успехов! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться