Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Программа предназначена для создания пользовательских баз данных. Единицей хранения является "карточка" состоящая из названия записи (например имени человека), изображения (например, его фото) и текстового описания. Такая структура универсальна и позволяет создавать базы данных контактов, клиентов, ученых в какой-то области (как в прилагаемом примере), просто Ваших коллег, товаров, монет, цветов, насекомых, ... ... в общем всего, к чему требуется название, изображение и описание.
Использованы плагины: zmFunctions - для работы с окнами и создания монитора мыши. EditorsToolbox - для создания объекта "ввод текста", способного работать с RTF. NeoBookDBPro - для работы с базой данных. zmToRTF - для поиска текста в коде RTF. ksFunctions - для создания скриншота объекта. hpwUtility - для конвертации файла рисунка в код RTF и обратно. Огромное спасибо авторам плагинов!
Вадим, огромное спасибо за пример! Нашел ответы на множество вопросов и на то, что не получалось при создании собственного подобного (делал программу-картотеку). Публикация таких примеров и есть мощное средство обучения NB.
Спасибо! Я очень рад, что моя работа приносит пользу! А с такими плагинами работать одно удовольствие - возможностей они предоставляют просто море! Особенно все вместе.
Много описывать. Открыл свою созданнуб базу. Жму опять открыть ее же через кнопку открыть.
и так далее. Там еще начинает выскакивать что такой базы нет, хотя она открыта. Дальше не стал смотреть.
Если бы сразу посмотрел что в реестре записи делает, вообще не стал бы запускать. Чем вас ини файлы не устраивают? Или к тем данным что в реестре еще какая программа обращается? Смысл туда что то писать? Или самоудовлетворение? Типа крутая программа, умеет в реестр что то писать?
Лучше время больше тратьте с просчитыванием всех предвиденных и не предвиденных ситуаций при нажатии на ту или иную кнопку. А вы все в реестр лезете... Круче и работоспособней программа от этого не становится.
Любая программа наоборот будет лучше в том случае, если она после себя оставит как можно меньше следов. Грамотные люди, такие программы которые лезут куда не попадя, стараются сразу же удалить с компа и больше никогда не ставить.
Там еще начинает выскакивать что такой базы нет, хотя она открыта.
В какой именно момент, т.е. при каких действиях?
Quote (mishem)
Чем вас ини файлы не устраивают?
В системах с UAC, при установке программы в Program Files могут быть проблемы с записью в папку с программой, поэтому я выбрал писать в реестр. Впоследствии сделаю нормальный инсталлятор с деинсталлятором, при деинсталляции будет удаляться ключ реестра, созданный программой. Сейчас да, если нужно удалить, то приходится делать это вручную. Ключ программы создается в рекомендованном для этих целей разделе реестра, корректно работающими командами, специально предназначенными для этих целей. Реестр создан для настроек, я использую его по назначению, не засирая тоннами ненужных данных. Ничего с ним не случится, если он будет содержать пару-тройку строковых параметров. Только деинсталлятор нужен, чтобы не оставалось ничего в системе, при деинсталляции. В системе ничего не должно оставаться, с этим я безусловно согласен.
Quote (Friedhelm)
Что-то не могу найти этот плагин. Где взять, подскажите!
Это пробная версия, Пётр выкладывал для проверки работоспособности функции (см. прикрепление).
В системах с UAC, при установке программы в Program Files могут быть проблемы с записью в папку с программой
Это что, в реестр пожалуйста, пиши что хочешь, а в Program Files нельзя?
Что то мне подсказывает что если в Program Files нельзя, то и в реестр не сможешь.
Добавлено (03 Марта 2012, 22:39) ---------------------------------------------
Quote
Также действует «виртуализация каталогов и реестра»: программа, которая пробует записать что-либо в каталог %PROGRAMFILES%\Папка\Пример.ini, записывает этот файл в каталог %USERPROFILE%\AppData\Local\VirtualStore\Program Files\Папка\Пример.ini. Это обеспечивает совместимость старых программ с разграничением доступа.
Это что, в реестр пожалуйста, пиши что хочешь, а в Program Files нельзя?
По-моему именно так и есть. Может быть я конечно уже что-то и путаю, но точно помню про трудности записи в Program Files, поскольку сам столкнулся с этим.
Quote (mishem)
действует «виртуализация каталогов и реестра»
Ну вот. Проще три параметра в реестр записать, чем приседать перед UAC. Одно дело писать что и куда попало, а другое дело - что нужно и в свой ключ. Только надо инсталлятор сделать, чтобы подчищать за собой. Сделаю сейчас.
Кстати, не могу записанную тобой ошибку воспроизвести. Судя по ошибке на твоем компе почему-то не распознается - открыта база данных или нет, т.е. не срабатывает условие If"[CT.$Status]""=""Connected".
В системах с UAC, при установке программы в Program Files могут быть проблемы с записью в папку с программой
Следует предупреждать пользователя примерно так: Обладателям Windows Vista\7\8 для работы программы необходимо отключить контроль учётных записей (UAC), либо запускать программу от имени Администратора!
В этом нет ничего страшного... так даже именитые разработчики делают, кто не хочет проводить сертификацию программы.
Либо в настройках NeoBook выставляй "требовать администратора". Я уже писал от этого UAC больше головной боли чем полезного действия. Я и не только я, после установки винды сразу же отключаем UAC.
Сообщение отредактировано Dordex - Сб, 03 Марта 2012, 23:03
Я тоже у себя отключил. Есть антивирь и файервол, нафиг этот надоедливый UAC. Из-за этих гребанных (простите за точность) вирусописателей и так половина ресурсов системы уходит на работу систем защиты, так еще и окошки бесконечно закрывай, словно больше делать нечего...
Quote (Dordex)
Обладателям Windows Vista\7\8 для работы программы необходимо отключить контроль учётных записей (UAC), либо запускать программу от имени Администратора!
Ну, включить от имени Администратора, я еще понимаю (хотя это и не гарантирует, что прога сможет писать в системную папку), но рекомендовать юзеру отключить UAC - это уже, по-моему, наглость со стороны программы. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Не только там, весь C:\ раздел запрещает копирование, замену, изменение файлов... К примеру с включенным UAC не сработает команда ExtractFile
Добавлено (03 Марта 2012, 23:25) ---------------------------------------------
Quote (Dordex)
хотя это и не гарантирует, что прога сможет писать в системную папку
Для этого и существует данная возможность, я сидел недавно полночи перебирал все эти фишки. Когда выставляешь в нб "требовать администратора" это тоже самое что если пользователь сам выбирет "запуск от имени Администратора".
Quote (Вадим)
но рекомендовать юзеру отключить UAC - это уже, по-моему, наглость со стороны программы.
Это со стороны Билла наглость придумать этот бред с UAC
Сделай, пожалуйста, скрин или ролик, так, чтобы поместилось всё окно программы. Мне кажется она у тебя выглядит не так, как у меня. У меня так, как в ролике и на скрине из первого поста.
Quote (mishem)
зачем панель скрывается?
А чтобы глаза не мозолила, когда база используется просто в режиме просмотра данных. Ведь чаще всего она будет использоваться именно с целью просмотра, а не редактирования. Поэтому сделал панель инструментов и панель поиска автоматически скрываемыми.
А EditorsToolbox в твоем случае разве не может искать?
Может, но только внутри своего объекта (возможно и внутри внешнего файла, но это не проверял), а мне ведь нужно искать по всей базе данных, получается чтобы EditorsToolbox мог искать мне нужно подгружать каждую запись из базы в объект плагина, а это будет очень тормознутый процесс. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Дык кто ж переводит то, что должно быть на инглише?
А кто тебе сказал что это должно быть на инглише? Соединение, или Соединена, или Соединение с базой данных установлено... Это должно быть как раз на русском. Если ты в строку состояния надумаешь вывести, или еще как. И почему при программировании я должен догадываться что мне там в переменную возвращается. Эти моменты я перевожу по мере поступления.
Quote (Dordex)
Я тогда просил перевод НАЗВАНИЯ команд с исп. на англ.
аппетит приходил во время еды. True False и тому подобное тоже захотелось. А на испанском там где должно было быть True False, возврвщается чуть ли не полное описание.
Quote (Dordex)
какой версией все будут пользоваться, а какую в топку!
Так по моему я свое мнение высказал, и публично оставил испанскую.
Quote (Вадим)
Сделай, пожалуйста, скрин или ролик, так, чтобы поместилось всё окно программы.
в ролике с ошибкой все окно программы.
Quote (Вадим)
А чтобы глаза не мозолила, когда база используется просто в режиме просмотра данных.
Мож тогда это сделать настраиваемым? К примеру мне это не нравится, а тебе нравится.
Да, это дельная мысль. Наверное стоит так и сделать. Отмечу себе на перспективу.
Quote (mishem)
в ролике с ошибкой все окно программы.
У тебя ведь ХР? Подозреваю, что на ХР выглядит иначе, чем на семерке. Я проектировал и ролик снимал на семерке. Видимо придется проверять версию системы при запуске и что-то делать с фейсом... По-видимому это от того, что у меня куча контейнеров в интерфейсе и они в разных системах по-разному отображаются. У тебя вот почему-то полоса справа появилась (объект EditorsToolbox не растягивается как надо). Попробуй окно программы порастягивать - будет ли нормально отображаться?
Обновил прогу. Теперь есть инсталлятор и при деинсталляции ключ из реестра корректно удаляется, также как и папка установки (теперь никаких следов проги не остаётся).
Добавлено (04 Марта 2012, 00:23) ---------------------------------------------
Quote (Dordex)
Это со стороны Билла наглость придумать этот бред с UAC
Вот это точно.
Quote (Dordex)
Когда выставляешь в нб "требовать администратора" это тоже самое что если пользователь сам выбирет "запуск от имени Администратора".
Да, у меня тоже не мгновенно. От скорости компа зависит. Подумаю, что можно сделать. Наверное надо использовать монитор мыши, чтобы подпрограмма на изменение размеров срабатывала только после отпускания кнопки мыши. Тогда она будет срабатывать один раз, а не при движении мышки захватившей край окна программы. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
А кто тебе сказал что это должно быть на инглише? Соединение, или Соединена, или Соединение с базой данных установлено... Это должно быть как раз на русском.
На русском должно быть только то, что относиться к интерфейсной части программы но ни как не к тому, что может быть использовано в параметрах команд. т.е. то, что может повлиять на работоспособность программы. Если английский вариант плагина использует Connected, то и русский обязан использовать то же самое. Это необходимо для совместимости проектов, использующих плагин независимо от локализации.
При машинных переводах, однажды локализованное, Connected автоматом переводится и в других частях локализуемого файла, если не отключана опция "автоперевода", по-умолчанию обычно она включена.
Добавлено (04 Марта 2012, 01:35) ---------------------------------------------
Quote (Dordex)
Не только там, весь C:\ раздел запрещает копирование, замену, изменение файлов...
К счастью, я лишен такого "удовольствия", а точнее - геморроя, но ведь как-то другие программы пишут инфу в профильные папки пользователя в этих системах. Попробуйте порыть в этом направлении.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Это и относится к интерфейсу. Строка состояния это часть интерфейса. Особенно это видно в ReportDesigner.
Quote (Peter)
но ни как не к тому, что может быть использовано в параметрах команд
В параметрах команд должно использоваться True False и цифры. Имхо конечно. Лично я стараюсь придерживаться именно этого. Как раз именно
Quote (Peter)
Это необходимо для совместимости проектов, использующих плагин независимо от локализации.
Так как в самих плагинах может быть заложено определение локализации системы и вывода сообщений на том языке, какая установленна система.
А это именно сообщения (оповещения), а не программный язык который следует использовать. Текст допустимо использовать только в том случае, если ты уверен что он может там находится, и то крайне не желательно. Так как в зависимости от установленной системы, он может отображаться не правильно. Что мы и наблюдаем очень часто при переводе плагина. Локализация одна, а отображение символов у каждого по разному.
Quote (Peter)
При машинных переводах,
Я не использовал машинный перевод. Хотя сейчас наоборот хочу начать использовать. Благо в Radialix можно сделать так, что бы перевод происходил только в тех ресурсах, в которых пожелаешь сам.
Добавлено (04 Марта 2012, 01:56) ---------------------------------------------
Quote (Peter)
Если английский вариант плагина использует Connected, то и русский обязан использовать то же самое.
Кстати в моем варианте перевода плагина находится слово Соединение... И если в примере Вадима заменить If "[CT.$Status]" "=" "Connected" на If "[CT.$Status]" "=" "Соединение", то все будет работать. Это проблема только при передаче друг другу проектов. В скомпелированном варианте будут работать оба варианта.
И все же, повторюсь, я не рекомендовал бы использовать оповещения в программном коде. Не хочешь читать хелп?
Так как в самих плагинах может быть заложено определение локализации системы и вывода сообщений на том языке, какая установленна система.
Это с какой такой стати?
Потенциально разработчик плагина (как и любой другой программы) может сделать так, что интерфейс плагина будет автоматом "локализоваться" в зависимости от локализации самой системы. Но, это - никому ненужный геморрой.
Из файла справки к плагину:
Quote
Below is a list of status variables created for automatically by NeoBookDBPro. Replace "ID" with your Database ID and "Table" with the name of your table.
[ID.Table.$RecNum] This is the current active record's position from the beginning of the file based on the current sort/query.
[ID.Table.$RecCount] If a query is active, the result reflects the number of found records. When no query is active, the result reflects the total number of records in the database.
[ID.Table.$State] This is the current state of the table. Possible values include "Browse", "Edit", etc.
[ID.$Status] Contains the connection status of the database. This can be either "Connected" or "Not Connected".
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться