Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Плагин для создания компонента SpinEdit, который представляет собой комбинацию однострочного поля редактирования и двух кнопок для изменения значения. В плагине пока всего одна команда для создания компонента с возможностью указания минимального, максимального и начального значений, а также размера шрифта в поле. Во время работы плагин отлавливает некоторые ошибки и выводит их в переменную faErrors. Демо прилагается. Ссылка на плагин и демку.
Список команд: faSpinEditCreate - Создать объект SpinEdit и указать переменную в которую будет передаваться его значение. faSpinEditRemove - Удалить ранее созданный объект SpinEdit. faSpinEditSettings - Установить минимальное и максимальное значение, шаг изменения, количество символов и начальное значение. faSpinEditFont - Установить шрифт для объекта SpinEdit. faSpinEditColor - Установить цвет фона поля объекта SpinEdit. faSpinEditAlignment - Выровнить текст в поле объекта SpinEdit по левому, или правому краю, или по центру. faSpinEditReadOnly - Установить / снять свойство ReadOnly. Оно определяет, может ли пользователь изменять значение в SpinEdit.
frolandr, Поздравляю с плагином. , но если уж взялся - то дописывай полностью. нет команды удаления созданного объекта. при повторном нажатии на кнопку создания вылетает окно - см.в прикреплении. А вообще - самый лучший тестер - это Вадим. Он иногда такую комбинацию придумывает и вылетают ошибки - сам бы до такого не додумал.
Добавлено (24 Июня 2023, 17:41) ---------------------------------------------
Андрей спасибо за тестирование! В планах добавить несколько команд в этот плагин. В т.ч. удаление и настройки компонента.
ЦитатаAS3856 ()
при повторном нажатии на кнопку создания вылетает окно - см.в прикреплении.
Верно, это тестовая версия плагина, делал в спешке, нужен был такой компонент, при проверке сообщения и ошибки выводятся в переменную LastError
Кроме этой: AnsiString strErr = "Ошилбка! Объект SpinEdit на " + rect + " уже был создан!"; nbSetVar("[LastError]", strErr.c_str());
Могут выскочить еще такие сообщения: nbSetVar("[LastError]", Объект с именем " + str + " не существует.); nbSetVar("[LastError]", "Для этой функции требуется NeoBook 4.0.9 или выше."
ЦитатаAS3856 ()
А вообще - самый лучший тестер - это Вадим. Он иногда такую комбинацию придумывает и вылетают ошибки - сам бы до такого не додумал.
Так и нужно, так и должно быть! Андрей, сам знаешь, программисты часто пропускают ошибки в тех местах, где они уверены, что ошибки просто быть не может.
Добавлено (29 Июня 2023, 15:45) --------------------------------------------- Ссылка на новую версию плагина Сделал отдельные команды по созданию и удалению объекта SpinEdit. Настройки минимума, максимума и других параметров вынес в отдельную команду. Также отдельной командой сделал изменение шрифта(размер, цвет и т.д.) Версия все еще бета, изменение шрифта делал впервые - могут быть ошибки. Планирую сделать еще несколько команд. Демки тоже пока нет.
Сообщение отредактировано frolandr - Чт, 29 Июня 2023, 16:35
Нашел ошибку в изменении шрифта, появляется когда открываешь помощник диалоговое окно, если формат данных не валидный, ну или указана переменная, вместо валидной строки. В описаниях команд, тоже нашел несколько очепяток. Исправлю в ближайшие дни и выложу с дополнительными командами, просто уже начал писать их.
Андрей, который AS3856 :), делает справку к новому плагину в ворде (если я правильно помню). Я думаю, что это отличный вариант! Не надо заморачиваться с chm-справкой для плагинов. Если у кого-то вдруг (!) нет ворда, то сейчас можно всегда в облаке конвертировать файл в любой нужный формат. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Добавил несколько команд в плагин SpinEdit. Думаю достаточно.
Андрей, спасибо!!
Добавлено (01 Июля 2023, 19:30) --------------------------------------------- Андрей, а можно список команд с расшифровкой? Можно добавить в первый пост, я заберу себе в базу.
По плагину SpinEdit несколько мыслей 1. Где взять (в этом плагине ) выбор цвета для SPINa ? - вот захотел юзер свой цвет - тот который можно выбрать по настроению - - а взять? - нЕгде.... 2.- написать диалог выбора цвета именно в том формате -- в котором предлагаешь заполнять параметры плагина. 3 . как применить цвет формата необука в этом плагине ? Имею ввиду цвет в формате RGB (вот выбрал он панел какого то цвета - и такой же захотел Spin - И как быть ?) --- это я мельком глазами пробежал по командам... извини за вопросы... - в целом правильным путём идёшь. Обрати внимание на компоненты TMS (там поле непаханое и ни одной борозды нет)
Сообщение отредактировано AS3856 - Сб, 01 Июля 2023, 21:22
Андрей, а цвет формата Необука какой? - (192, 192, 192) - десятичный RGB? У меня сейчас TColor 0x00FFFF80, у тебя в Grid $00FFFF80. Я не знаю этот формат, но видимо нужно 0x заменить на $ Сейчас в твоем плагине GRID попробовал через переменную передать цвет NeoBook, но он не сработал:
Сейчас в твоем плагине GRID попробовал через переменную передать цвет NeoBook, но он не сработал:
Спасибо за подсказку - я это исправил.(функцию применил стандартную делфийскую - а не свою - самописную)
Добавлено (02 Июля 2023, 01:18) ---------------------------------------------
Цитатаfrolandr ()
Андрей, а цвет формата Необука какой? - (192, 192, 192) - десятичный RGB?
формат цвета необука RGB
Добавлено (02 Июля 2023, 01:25) --------------------------------------------- В Delphi имеется встроенный тип данных для хранения цветов: Graphics.TColor (он же Windows.COLORREF, DWORD и Longint). Это целочисленный тип с диапазоном -$7FFFFFFF-1..$7FFFFFFF (т.е. - 2147483648..2147483647). Достаточно много, учитывая что компьютер поддерживает около 17 миллионов цветов. Почему именно столько? RGB подразумевает представления цвета в виде трёх компонент: Красной (Red), Зелёной (Green) и Синей (Blue). Каждая из них задаётся числом от 0 до 255. Несложно посчитать, что цветов будет 256^3, т.е. 16`777`216. Для того, чтобы "собрать" TColor из трёх компонент есть стандартная функция Windows.RGB:
Добавлено (02 Июля 2023, 01:36) --------------------------------------------- У меня самописная функция конвертирования строки в родной цвет делфи. функция переводит в цвет строку если она записана в формате RGB. а также если цвет записан в строку родного формата делфи, а также если писать цвета делфи типа "clBlack". а также если писать как в необуке просто "Black"/ В общем один большой комбайн. Кстати - если я и ошибаюсь в применении своей функции ( вернее в неприменении) то в плагине есть функция (команда) перевода строки из RGB в цвет делфи TColor/
Добавлено (02 Июля 2023, 01:38) ---------------------------------------------
ЦитатаAS3856 ()
2.Чтобы плагин понимал и $00FFFF80 и 255, 255, 128
написать функцию конвертирования ( или найти готовую)
Добавлено (02 Июля 2023, 02:06) --------------------------------------------- - как вариант - чтобы выйти пока из положения - конвертируй в RGB
Спасибо, понял, попробую сделать на след. неделе. В плагине я "конвертировал" такими функциями: StringToColor и обратной ColorToString. Функция RGB( R, G, B ) применял при отрисовке градиента.
Сообщение отредактировано frolandr - Вс, 02 Июля 2023, 11:42
я использую ColorToString., а вот функцию StringToColor полностью переписал. - она у меня самописная ( кстати её и забыл прописать при конвертации из String в TColor - ты мне напомнил - за что отдельное спасибо) В своих первых плагинах применял просто функцию RGB и особо не парился - её вполне хватает для нужд плагина.
Не проще ли указать основные цвета (5-10-16...) и дать пользователю возможность вводить свой цвет, хотя он это и так может делать с помощью переменных. Главное что бы была в плагине проверка на существование введенного цвета. Изобилие команд или ничего особо не решающих параметров не делает из плагина супер - мега комбаин, а только затрудняет его использование не опытными пользователями. Плюс, большинство параметров так и не будет ни кем использовано, так как они окажутся не востребованы.
"Точите" лучше мастерство, а не добавление всяких не нужных "плюшек".
Перепробовал именованные цвета типа clWhite из того списка, понимает мой билдер седьмой версии только 20 из них. По этому другие цвета или через RGB() или формата $00FFFFFF или 0x00000000 или через выбор цвета.
Добавлено (05 Июля 2023, 17:19) ---------------------------------------------
ЦитатаAS3856 ()
У меня 45 - все цвета которые предлагаются при выборе
Андрей, у меня кроме: (clBlack, clMaroon, clGreen, clOlive, clNavy, clPurple, clTeal, clGray, clSilver, clRed, clLime, clYellow, clBlue, clFuchsia, clAqua, clWhite, clMoneyGreen, clSkyBlue, clCream, clMedGray) не формируются другие именные(константные цвета). Смотрел и в Делфи вроде 20 всего, 16 основных и 4 дополнительные. Если не трудно скинь пару названий, попробую на своем бильдере.
Добавлено (05 Июля 2023, 17:28) --------------------------------------------- По количеству команд считаю, чем больше возможностей, тем лучше. Сейчас какая-то из команд может не нужна, а в дальнейшем пригодится. Для примера, в самой NEO есть на кнопке событие LeftClick, но это ведь составное событие и состоит оно из MouseDown и MouseUp. LeftClick не позволяет проверить отпущена ли кнопка после клика. Были бы эти события, не пришлось бы делать плагин для SpinEdit.
Сообщение отредактировано frolandr - Ср, 05 Июля 2023, 17:31
По мне, так это не нужный плагин. Но в целях изучения как поагиностроителю, и для пользования новичками - пойдет. В чем проблема сделать SpinEdit средствами NEO? Не хочешь читать хелп?
Все плагины, что делал, я делал сначала для себя, без помощников и пр., чтобы "весили" 50-100 кб. С год назад я спрашивал как сделать подобное средствами NБ. Вадим дал несколько рекомендаций, меня для начала устроило, позже написал плагин. mishem, я не нашел выхода средствами Нео, как сделать так, чтобы кликнув на кнопку происходило изменение значения, пробовал с помощью таймера, тоже не вышло. Впрочем я и первый плагин напсал, что не мог получить кол.секунд, а ты мне подсказал, что даже есть штатная команда в Нео