Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Доброго времени суток форумчане. Исходя из сабжа меня можно было бы послать меня на три веселых сказав что есть тузла добавляющая и прокручиваемый список и выпадающий список но дело не в этом. Решили с другом мы заделать софтварю в которой собирался бы наш контент, однако столнулся с проблемой его отображения в ней. Вот сама суть: Имеем программу размером окна 800*500 Размер картинки-предпросмотра\презентации 400*100 Картинка должна быть кликабетельна для перехода на подробное описание контента на другой странице. -------- Я представляю что кликабетельная картинка это кнопка с натянутой картинкой на нее (так же можно сделать) но проблема в том что объектов контента несколько, скажем до 50. В этом случае мне нужно добиться некого списка объектов контента как прокручиваемый список. Тоесть к примеру будет заранее проставлено 20-30-50 кнопок с изображениями на них в вертикальном порядке, но все эти кнопки пользователь не увидит вот тут мне надо чтобы эти кнопки были как в контейнере с вертикальной полосой прокрутки. Есть какое нибудь решение?! Прошу прощения если усложнил описание, чуствую мозг кипитъ =Р I will alive before dead
Спасибо, почти то что нужно но дело в том что эти картинки должны... ааай черт с ним я вот что имел ввиду. Я опущу ту деталь с картинками которые натянуты на кнопки, мне нужно чтобы кнопки размером 400*100 пикселей выстроенные в столбик штук эдак 20-30-50 можно было прокручивать потому что в окне 800*500 они не поместятся. Это как простой инструмент в нб с прокручивающимся списком но вместо тектовых элементов кнопки. По нажатию кнопки будет GoToPage "pageXXX" I will alive before dead
Ты создаешь сам себе проблему (на мой взгляд). Прокручивающийся список с кнопками сделать не проблема. Проблема в том, что не знаешь сколько именно будет объектов (кнопок). Так как в скомпилированном приложении создавать кнопки не возможно, то их нужно будет создать заранее. Сегодня нужно 50, а завтра 51. Переделывать весь проект?
Почему именно кнопки? Почему именно переход на страницу? Если уж так нужно перейти на страницу, то никто не мешает в подпрограмме SetMouseMonitor сделать переход на нужную страницу.
Можно еще пойти другим путем. Использовать плагин NeoBookDB или NeoBookDBPro. и в базе содержать и картинки и всю информацию. Так же можно настроить отображение изображений так как будет нужно.
А заморочки с кнопками мне кажется это просто лишняя "головная боль". Не хочешь читать хелп?
Опишу вкратце какую цель я преследую: В программе будет некий каталог нашего "фирменного" контента что мы с другом делаем. Этот контент должен отображаться списком представляющие из себя изображение-логотип которые расположены друг под другом тем списком который я незнаю как реализовать. При щелчке по одному из этих изображений будет переход на другую страницу с подробным описанием контента, скриншотами и прочим и кнопки типа "загрузить" "удалить" и так далее. Изначально контент расположен на серверах и будет грузится в шифрованных пакетах на клиентскую машину. Поэтому мне нужно организовать этот "каталог" для более красивого оформления что человек будет грузить себе на пк. Ну а
Цитатаmishem ()
Почему именно кнопки?
Потому что на них можно натянуть картинку этого логотипа контента.
Цитатаmishem ()
Сегодня нужно 50, а завтра 51. Переделывать весь проект?
Это я знаю и с этим я согласен. Но контента не там у нас и много пока что чтобы понадобилось более 20 объектов. ------------------- Я тут подумал что круче было бы сделать это дело в веб браузере с сайта где каталог обновляться будет. НО большая проблема в том как его запускать тода или давать комманду на загрузку. Я вспомнил как некоторые программы типа steam или origin юзают локалхост для запуска игры с html странички где в url прописано вроде steam:Half-Life 2 после этого стим слушая локалхост ловит комманду для себя и открывает страничку с игрой к примеру, скайп так еще делает там есть url типа skype:call?user_puzzer тогда придумать чтото вроде myprogram:download-2xxab Ну это так... размышления.
Добавлено (08 Декабря 2013, 18:43) --------------------------------------------- Я не дописал почему именно кнопки, для меня это просто самый простой вариант вызвать дальнейшие инструкции на обработку в том числе переход на другую страницу, а при наведении мышки на нее как-то выделить.
Я всегда был сторонником того, что любое решение "через броузер" - костыль, и к такому способу следует прибегать только тогда, когда исчерпаны все другие возможности NB, и по-другому уже никак, а очень надо. Конкретное решение зависит от конкретной задачи, но можно, например, создать фиксированное количество кнопок-картинок, а их внешний вид (рисунок на кнопке), менять программно, и так же программно соответственно менять их команды. Единственный недостаток такого подхода - нет прямого (и привычного) "прокручивания списка", но и тут остаются "варианты". - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
например, создать фиксированное количество кнопок-картинок
Тот же костыль, я считаю
Но я не согласен, что в данной ситуации html - костыль. Это дополнительные средства, которые можно применять. Очень редко бывает такое, что можно обойтись только одной технологией, не используя для помощи другие. Как вот тут, например. А так автор получит нужный список полностью и гибко заточенный под свою задачу.
в NB есть какой-то хитрый синтаксис запуска из HTML nb-команд.
Да, такое имеется, но есть и граничения, в частности, нельзя из броузера запускать команды плагинов.
Добавлено (08 Декабря 2013, 20:36) ---------------------------------------------
ЦитатаYURIY ()
Тот же костыль, я считаю
Вот это-то как-раз НЕ костыль, поскольку используется "чистый" код NB, а не суррогат.
ЦитатаYURIY ()
А так автор получит нужный список полностью и гибко заточенный под свою задачу.
Очень сильно в этом сомневаюсь, и особливо по части "гибкости". Впрочем, никто не мешает пробовать...
Добавлено (08 Декабря 2013, 20:57) ---------------------------------------------
Что касается HTML-костылей и т.п. Программисту, пишущему программу, скажем, на Delphi или С++, даже и в голову не придет использовать в своей программе HTML (т.е. через броузер) при отсутствии нужного ему компонента. Он по-просту напишет свой компонент, да и ещё с такими возможностями, о каких в HTML (через броузер) даже и мечтать-то фантастика. Да, NB далеко не С++ или Delphi, но нужно по-максимуму использовать её возможности, а она не такая уж и беспомощная, и уже бывали случаи, когда казалось бы, что без плагина никак, а отыскивалось решение на самом языке NB.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Можно запускать подпрограммы, из которых можно запустить что угодно.
ЦитатаYURIY ()
Но я не согласен, что в данной ситуации html - костыль.
Я тоже не считаю. В данном случае это если не лучший, то хороший вариант. И его не надо отбрасывать из рассмотрения.
ЦитатаPeter ()
поскольку используется "чистый" код NB,
Чистый код, да, но использование 50 и более объектов....
Лучше уж html .
ЦитатаPeter ()
а отыскивалось решение на самом языке NB.
Решение есть, и не одно. Нужно " видеть " полную задачу, а мы видим только поверхностное, и то не все.
У автора сабжа проблема только в одном, он не знает всех возможностей НБ и отталкивается от первого пришедшего ему в голову решения. Создавать 50 объектов, и 50 страниц.... Это указывает на то что человек не понимает что такое переменные и как ими оперировать.
UserDead, выложи пример с 2-3 кнопками что бы можно было понять что именно требуется. Откуда и как будет браться информация для картинок. Что за информация. Какой объем информации. Если с сайта, ссылку на сайт. Может быть ее действительно проще с сайта загружать, а не городить "огород". Короче чем больше инфы, тем проще найти решение. Я так думаю.
Плагин nbThumbnails не подойдет если требуется обязательный переход на страницу. Есть проблемы с ним при переходе на другую страницу. Но это возможно тоже можно решить. Можно не на страницу к примеру переходить, а открывать просто дополнительное окно. Не хочешь читать хелп?
Спасибо за ответы ребят Я тут поколдовал чуть чуть и... ничего так и не вышло толкового. Попробовал плагин который мне дал michem для показа эскизов. Я думал както по имени файла выковырять условия для назначения нужной функции на конкретную картинку, в итоге я сделал эти прокручиваемые эскизы в полном размере, но при нажатии на эскиз он просто выделяется а получить путь к файлу только по комманде GetSelected и я снова ровно сижу на 5-й точке) ведь по клику по картинке мне нужно открывать окно, а так получается выдели еще и нажми что ты выделил и тебе интересно посмотреть детали... На крайний случай можно сделать 5 заранее проставленных картинок (с кнопками не получиться) там же есть на картинке комманда "при щелчке по ней" но в поле пути к файлу поставить переменную в которой будет путь к картинке который будет меняться от "скролла" на следующий файл в списке + меняться комманда на картинке и вконец втулить RefreshObject чтобы была иллюзия прокрутки но это будет выглядить конечно... как по пяти прямоугольным областям прыгают картинки типа 1 2 3 4 5 и потом 2 3 4 5 6
Добавлено (08 Декабря 2013, 21:26) --------------------------------------------- О, пока писал уже michem появился =) Вот к примеру картинки
Здесь я показываю наглядно что я ожидаю. По клику на Content image открывается сам контент а more там будет открываться окно с подробной информацией по контенту и операции с ним типа загрузить и удалить
Добавлено (08 Декабря 2013, 21:29) --------------------------------------------- Ах да картинки будут грузится по url я предполагаю ну там я смогу чтото придумать. По названию картинки будет определятся скорее всего то что именно открыл пользователь для показа дополнительной подробной информации о контенте I will alive before dead
Сообщение отредактировано YURIY - Вс, 08 Декабря 2013, 21:40
Вот это-то как-раз НЕ костыль, поскольку используется "чистый" код NB, а не суррогат.
Хм, через использование чистого кода разве нельзя сделать костыль? Насоздавать на всякий пожарный море кнопок, так как динамически нельзя - и есть костыль, ТАК КАК ДИНАМИЧЕСКИ НЕЛЬЗЯ, и вы обходите этот момент через костыль, по сути Вот что я имел в виду Не такой прямой костыль, конечно, как это бывает, но всё же...
ЦитатаPeter ()
Очень сильно в этом сомневаюсь, и особливо по части "гибкости".
А вот я не сомневаюсь Но пример делать не буду, так как с NB не работаю, это кому уже нужно
ЦитатаPeter ()
Программисту, пишущему программу, скажем, на Delphi или С++, даже и в голову не придет использовать в своей программе HTML (т.е. через броузер) при отсутствии нужного ему компонента.
Ну ты сравнил, конечно Раз уж пошла такая "кухня", то для БД ты там будешь использовать какую-то готовую технологию, а не средствами Delphi создавать свою СУДБ Вот о чём я писал
Если по url, так может действительно лучше использовать браузер?
ЦитатаUserDead ()
а more там будет открываться окно с подробной информацией
Что за информация? Откуда берется? Где то ж она должна находится? На сайте, на компе, в текстовом файле, в архиве, в html....?
YURIY, по поводу костылей, браузер-костыль одназначно. И даже не столько сам браузер, сколько скрипты js vbs... Кпримеру, у меня сейчас слетела какая то регистрация чего то. Даже сам не знаю чего. Но суть в том, что многие функции написанные на js или vbs перестали работать. Пишет что то там не зарегистрировано. Если эта функция или подобная находится в браузере, программа перестает работать. У меня пару проектов в данный момент прекратили работать. Просто, висят и все. У кого то js отключен вообще, все, программа зависла(это я грубо). Одно дело просматривать сайт, не открылся, пошел на другой. Другое дело когда работает в связке с НБ. Поэтому я тоже противник браузера. И даже если что то пытаюсь с помощью него сделать, то в конечном результате так до конца и не доделываю. Ну кроме того что если что то нужно распарсить с какого нибудь сайта.
Если использовать чистый html код без всяких скриптов, то не вижу проблем. Не хочешь читать хелп?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Так тут уже мои непродуманые косяки. Я планирую две вкладки в программе. В одной уже загруженный контент будет списком, картинки будут браться с папок на диске (будет заранее сканирование) в другой вкладке будет контент который еще не загружен на пк клиента, он будет в формате "пакетов" и предлагаться для загрузки вот тут будет с url но вот помоему объект картинки не поддерживает путь url поэтому надо заранее скачать картинку с интернета а потом показать ее объекту изображения. Информация о деталях грузится будет скорее всего в первой вкладке с диска с файла, а во второй вкладке где пользователю предлагается скачать контент будет такой же файл только грузится с сервера будет. Тоесть файл с описанием контента и там скриншоты всякие. Конкретного примера у меня нет, разве что проект пустышка который я только собираюсь организовать =\ (там толко то что я выкладывал на скрине и меню настройки где можно выбрать язык программы и все) I will alive before dead
Ок к примеру в вкладке с еще не загруженным контентом все будет грузится с сервера, а то что уже загружено будет воспроизводится с уже загруженных данных "пакетов" их как оформить? Локальная html'ка чтоли?!
Добавлено (08 Декабря 2013, 22:54) ---------------------------------------------
Цитатаmishem ()
Что за информация? Откуда берется? Где то ж она должна находится? На сайте, на компе, в текстовом файле, в архиве, в html....?
Будет две вкладки одна для локального кнтента вторая для еще не загруженного (предлагаемое к загрузке) Тоесть одно читается с диска там текстовые файлы и картинки разфасованные по папкам а другое читается с сервера, поэтому я так понял второе можно сделать с помощью браузера и страничкой на сервере, а вот первое... I will alive before dead
Да да да да да! Именно это то что мне нужно! Прям как ясен свет явился, спасибо! Правда постоянное обновление координат немного грузит, чуток помудрю с оптимизацией чтобы в фоне не грузило)
Добавлено (08 Декабря 2013, 23:41) --------------------------------------------- И главое все тут решилось стандартными функциями необука. 2 Компонента это получение координат мыши и передвижение объекта контейнера. Вот думаю скроллбара нет и колесиком не крутится это дело, врочем что мешает попробовать это добавить
Имитацию скроллбара можно произвести за счёт компонента TrackBar (Слайдер/Ползунок). Если не разберётесь, покажу пример.
Вообще можно по всякому организовать сие чудо. Я на это тоже не один день убил, думал как лучше и оптимальнее сделать, в итоге остановился на том, что добавил просто кнопки стрелок вверху и внизу списка кнопок. Либо попробуйте задействовать HotSpot, в нём можно двигать объекты с зажатой мышью (MouseDown), некое подобие как в ios или android.
Сообщение отредактировано Омар - Вс, 08 Декабря 2013, 23:59
И главое все тут решилось стандартными функциями необука
Все хорошо, но от 50 заранее приготовленных объектов в этом варианте никуда не деться. Впрочем, необходимые примеры были дадены, а уж что выбирать... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Очень находчиво) Я примерно так и представлял.. примерно. Я тут мучаю подобную функцию
Код
If "[zmMouseCode]" "=" "zmMWH" If "[zmMWHDelta]" "=" "1" MoveObjectAlongPath "Group1" "0,-80" "10" "Normal+LeftTop" "" else If "[zmMWHDelta]" "=" "-1" MoveObjectAlongPath "Group1" "0,0" "10" "Normal+LeftTop" "" EndIf EndIf EndIf
только почемуто она не двигает А тут по примеру смотрю что мне надо поменять MoveObjectAlongPath "Group1" "0,0" "10" "Normal+LeftTop" "" на чтото вроде MoveObject "Group6" "10" "[TrackBar2]" --------------- з.ы. Чтобы я без вас делал I will alive before dead
Все хорошо, но от 50 заранее приготовленных объектов в этом варианте никуда не деться.
Согласен, но я думаю что подготовленых объектов должно хватить надолго, контента то немного. А если что сама программа будет проверять версии и можно будет и подбавить объектов если понадобиться. I will alive before dead
Ну тут ничего мудреного нет, это всё элементарно. Мишем же писал об этом...
Цитатаmishem ()
Прокручивающийся список с кнопками сделать не проблема
А вот проблема действительно в количестве этих ваших кнопок... просто дело в том, что может получится так что из-за добавления новой кнопки придётся перелопачивать несколько строк кода в разных местах... Всё-таки при таком подходе рекомендую навигацию задействовать в мастер-пейдж, а не дублировать на каждую страницу...
А точно, а то я смотрю знакомые названия команд, а вспомнить не могу
UserDead, впрочем не парьтесь, если навигацию сделать на MP, то последующие добавления кнопок пройдёт без особых усилий. Если конечно Вас не смущает количество объектов на странице. Хотя порой у меня в проектах бывало и под 200 и кстати на скорость работы приложения уже в рантайме особо не влияло. А вот огромное количество страниц в проекте заметно притупляет режим проектирования.
перелопачивать несколько строк кода в разных местах...
Пока я такой "noob" для меня это не особая проблема... пока что... А вот про напоминание про основную страницу вроде хорошо, спасибо. Однако прийдется помудрить с отображающимся контентом ведь у нас его два. Это загруженный и предлагаемый к загрузке. Там помоему прийдется помониторить переменную текущей страницы, гдето она мне попадалась. -------- Сделал скролл-бар для теста простым Трек-Баром, хотел притулить на прокручивание колесиком мыши сделать метематически изменять переменную при прокрутке, но как оказалось что нет контроллируещего монитора который бы обнаруживал что пара переменных говорит про то что крутится колесико и в какую сторону. А вот делать цикл с GoToLine для меня страшный сон с 50% нагрузки на проц. Я конечно же посмотрю плагин что mishem показал. просто подбираю как можно сделать. I will alive before dead
А вот проблема действительно в количестве этих ваших кнопок
Петр хороший пример дал как избавится от количества кнопок (объектов). Там даже по моему и сами кнопки не нужны, достаточно объектов Рисунок. Если есть избавится от большого количества объектов, то этим не надо пренебрегать. И вообще надо стараться делать все универсальным, а не рассчитывать на то что после я еще добавлю кнопок. А когда дойдет эдак до 1000?
ЦитатаYURIY ()
Я и не говорил, что они будут нужны. Они тут и не нужны.
Да нет, я просто хотел объяснить почему костыль.
Тут , да. Все можно сделать элементарно. Мне даже кажется если я сам с пол часа-час посижу, осилю.
ЦитатаUserDead ()
а вот первое...
Первое еще проще. Тебе надо то всего указать путь к картинкам и правильно их расположить на странице, то есть написать html код-шаблон для одной картинки, вместо данных указать переменные, а в цикле добавлять одну и ту же текстовую информацию, не проблема. И в итоге можно загружать как файл, так и просто текст с помощью команды BrowserLoadFromStr Не хочешь читать хелп?