Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
dmListView Компонент визуального оформления типа ListView для NeoBook
ОС: Windows XP/7/8 Требуется .NET Framework версии 3.5 Client Profile (входит в Windows 7) или выше
Код
.Cоздать контрол в обьекте Прямоугольник .С этой команды должна начинаться работа с контролом dmLvCreate "[Rectangle]" [Rectangle] - имя обьекта Прямоугольник
.Задает режим отображения содержимого контрола dmLvSetView "[Rectangle]" "[View]" [View] - режим отображения, имеет следующие значения: LARGEICONS - крупные значки SMALLICONS - мелкие значки TILE - плитка DETAILS - таблица LIST - список (по умолчанию)
.Загружает (обновляет) параметры контрола из переменных dmLvSetVarParams "[Rectangle]" "[Scope]" [Scope] - область действия (переменные имеют соотв. префикс): ITEMS - параметры элементов HEADERS - параметры заголовков столбцов (вид таблицы) GROUPS - параметры заголовков для групп COMMON - общие параметры контрола ALL - все параметры Значения по-умолчанию нет, необходимо явно указать [Scope]
.Сохранить все содержимое контрола в строку XML dmLvSave "[Rectangle]" "[Xml]" Сохраняются все данные текущего визуального состояния, включая картинки.
.Загрузить содержимое в контрол из ранее сохраненных XML данных .По идее, редактируя XML данные, вы можете сразу в строке .создать (изменить) весь контрол и разом его отобразить dmLvLoad "[Rectangle]" "[Xml]"
Код
.Добавить элемент в контрол dmLvItem "[Rectangle]" "[Address]" "[Text]" "[Image]" [Address] - позиция элемента вида X:Y, где Х - индекс группы, Y - индекс элемента [Text] - собственно текст элемента [Image] - путь к картинке (показывается слева от элемента) .Добавление (вставка) элемента в группу 0 на позицию 2 dmLvItem "[Rectangle]" "0:2" "Доделать плагин" "[PubDir]bullet.png" .Добавление элемента в группу 1 dmLvItem "[Rectangle]" "1" "Новый элемент" "" .Добавление элемента без группировки dmLvItem "[Rectangle]" "" "Новый элемент" "" Если индекса группы не существует (-1), то элемент добавляется в несгруппированную часть. Если индекса элемента не существует (он больше или меньше чем кол-во элементов группы), то элемент просто добавляется на следующую позицию (в конец группы). Если вообще не указывать адрес при добавлении, то соответственно элементы будут помещаться в несгруппированную часть контрола один за другим.
.Добавить субэлемент к элементу dmLvSubItem "[Rectangle]" "[Index]" "[Text]" "[Image]" [Index] - индекс элемента, к которому добавить субэлемент (должен существовать) [Text] - собственно текст субэлемента [Image] - путь к картинке (показывается слева от субэлемента) Субэлементы это дополнительные поля свойств элемента, например как тип, описание и размер файла (элемента) в Проводнике.
.Добавить множество элементов из строки dmLvListItem "[Rectangle]" "[Index]" "[List]" [Index] - индекс группы куда поместить элементы (-1 без группировки) [List] - строка данных об элементах с разделителями, вида "Элемент1#Субэлемент|Субэлемент#Картинка[#13][#10]Элемент2#Субэлемент... и т.д. Строку данных удобно редактировать в SetVar используя многострочный режим, а в кач-ве перевода строк указать CR+LF, так как символ | занят для разделителя: Value1#Subitem1|Subitem2#[PubDir]row.png Value2#Subitem1|Subitem2 Value3##[PubDir]row.png ...
.Получить в массив текущие выделенные элементы контрола dmLvSelected "[Rectangle]" "[Array]" В массив [Array] будут записаны строки с разделителями, вида "Элемент|Субэлемент1|Субэлемент2 ..."
.Изменить параметры указанного существующего элемента dmLvSetItem "[Rectangle]" "[Index]" "[Text]" "[Font]" "[Color]" [Index] - индекс элемента [Text] - новый текст элемента [Font] - новый шрифт элемента (Имя,Размер,Стиль) [Color] - новый цвет элемента в формате RGB Стили шрифта: Regular (обычный), Bold, Italic, Bold+Italic .Выделить элемент 0 красным и жирным dmLvSetItem "[Rectangle]" "0" "" "Tahoma,12,Bold" "255,0,0"
Код
.Добавить группу в контрол dmLvGroup "[Rectangle]" "[Text]" "[Image]" [Text] - текст заголовка группы [Image] - путь к картинке (показывается слева от заголовка)
.Изменить параметры указанной существующей группы dmLvSetGroup "[Rectangle]" "[Index]" "[Text]" "[Color]" "[Image]" [Index] - индекс группы [Text] - новый текст заголовка [Color] - новый цвет заголовка в формате RGB [Image] - путь к новой картинке заголовка .Сменить картинку группы 0 dmLvSetGroup "[Rectangle]" "0" "" "" "[PubDir]Images\toggle.png"
Код
.Добавить столбец в табличный вид контрола dmLvColumn "[Rectangle]" "[Text]" "[Width]" "[Image]" [Text] - текст заголовка столбца [Width] - ширина столбца (px) [Image] - путь к картинке заголовка столбца
.Изменить параметры указанного существующего заголовка столбца dmLvSetColumn "[Rectangle]" "[Index]" "[Text]" "[Color]" "[Style]" "[Image]" [Index] - индекс столбца [Text] - новый текст заголовка столбца [Color] - новый цвет заголовка столбца в формате RGB [Image] - путь к новой картинке заголовка столбца [Style] - новый стиль заголовка столбца, имеет следующие значения: NONE - пустой заголовок NONCLICKABLE - некликабельный (не реагирует на щелчки мыши) SORTABLE - может сортировать столбец при клике DEFAULT - обычный стиль (по умолчанию)
Компонент имеет множество различных параметров, такое количество реализовать через команды плагина невозможно да и неудобно, плюс сценарий становится плохо читаем. Поэтому многие параметры задаются через обычные переменные. Эти переменные имеют определенную структуру имен и диапазон влияния. Чтобы загрузить в плагин текущие значения переменных существует команда dmLvSetVarParams.
Результат действия одних переменных можно увидеть сразу после их загрузки в плагин (помечены * в первой колонке), это те переменные которые устанавливают параметры отображения контрола в целом. А результат действия других направлен на отдельные элементы контрола и проявляется только при добавлении нового элемента в контрол. Эти переменные нужны чтобы заранее хранить все параметры отображения элемента, чтобы сразу создать его в нужном виде.
Повторюсь, команда плагина может иметь ограниченное кол-во параметров - 10, а нужно будет больше. И сценарий в таком виде более читаем, чем непонятно названные команды с кучей неименованных параметров. Кроме того, в таком подходе есть возможность масштабирования, легко ввести поддержку новых переменных. Ну раз разобрались зачем это нужно, ниже приведен список переменных, значения по-умолчанию помечены (*).
Переменная
Описание
Значения
Параметры группы
dmLvSetVarParams "[Name]" "Groups"
*
[[Name].Groups.Show]
Управляет видимостью заголовков групп
TRUE - группы видны (*) FALSE - группы не видны
*
[[Name].Groups.HeaderAction]
Задает поведение заголовка групп при наступлении событий мыши / клавиатуры
NONE - заголовок не реагирует на события MOUSEHLT - заголовок можно выбрать мышью ALL - заголовок можно выбрать мышью и клавиатурой, при этом выбираются и все элементы группы (*)
[[Name].Groups.ExpandButton]
Отображение кнопки свертывания (развертывания) добавляемой группы
TRUE - отображать (*) FALSE - не отображать
[[Name].Groups.Font]
Стиль шрифта для заголовка добавляемой группы
[Имя,Размер,Стиль] (напр. "Tahoma,8,Regular") Имя - название шрифта (напр. Segoe UI) Размер - размер шрифта в точках (pt) Стиль - обычный (REGULAR), жирный (BOLD), курсив (ITALIC), жирный курсив (BOLD+ITALIC)
[[Name].Groups.Color]
Цвет шрифта для заголовка добавляемой группы в формате RGB
[R,G,B] (напр. "40,120,200")
[[Name].Groups.IsExpanded]
Задает начальное состояние добавляемой группы
TRUE - группа развернута (*) FALSE - группа свернута
[[Name].Groups.TextAlign]
-
-
[[Name].Groups.ImageAlign]
-
-
Параметры элемента
dmLvSetVarParams "[Name]" "Items"
[[Name].Items.Font]
Стиль шрифта для добавляемого элемента
[Имя,Размер,Стиль] (напр. "Tahoma,8,Regular") Имя - название шрифта (напр. Segoe UI) Размер - размер шрифта в точках (pt) Стиль - обычный (REGULAR), жирный (BOLD), курсив (ITALIC), жирный курсив (BOLD+ITALIC)
[[Name].Items.Color]
Цвет шрифта для добавляемого элемента в формате RGB
[R,G,B] (напр. "40,120,200")
Параметры заголовка столбца (режим Details)
dmLvSetVarParams "[Name]" "Headers"
*
[[Name].Headers.Show]
Управляет видимостью заголовков столбцов
TRUE - отображать (*) FALSE - не отображать
[[Name].Headers.Style]
Задает поведение для добавляемого заголовка столбца
[Имя,Размер,Стиль] (напр. "Tahoma,8,Regular") Имя - название шрифта (напр. Segoe UI) Размер - размер шрифта в точках (pt) Стиль - обычный (REGULAR), жирный (BOLD), курсив (ITALIC), жирный курсив (BOLD+ITALIC)
[[Name].Headers.Color]
Цвет шрифта для добавляемого заголовка группы в формате RGB
[R,G,B] (напр. "40,120,200")
[[Name].Headers.Resize]
Определяет можно ли изменять ширину добавляемого заголовков
Задает минимальную ширину для добавляемого заголовка столбца
Целочисленное значение (пикселы, px)
[[Name].Headers.Max]
Задает максимальную ширину для добавляемого заголовка столбца
Целочисленное значение (пикселы, px)
[[Name].Headers.TextAlign]
-
-
[[Name].Headers.ImageAlign]
-
-
Общие параметры контрола
dmLvSetVarParams "[Name]" "Common"
*
[[Name].Colors.Back]
Цвет фона контрола в формате RGB
[R,G,B] (напр. "40,120,200")
*
[[Name].Colors.Grid]
Цвет табличной сетки контрола в формате RGB
[R,G,B] (напр. "40,120,200")
*
[[Name].Colors.Alter]
Цвет альтернативной раскраски элементов контрола (четных) в формате ARGB
[A,R,G,B] (напр. "255,40,120,200")
*
[[Name].Colors.SelectBack]
Цвет фона рамки выделения элементов контрола в формате ARGB
[A,R,G,B] (напр. "100,40,120,200")
*
[[Name].Colors.SelectRect]
Цвет границ рамки выделения элементов контрола в формате ARGB
[A,R,G,B] (напр. "255,40,120,200")
*
[[Name].Image.Back]
Фоновая картинка контрола
Путь к изображению (BMP/JPG/PNG/GIF)
*
[[Name].Image.Opacity]
Степень прозрачности фоновой картинки контрола
Целочисленное значение от 0 до 255 (*)
*
[[Name].Image.Layout]
Способ отображения фоновой картинки внутри контрола
CENTER - поместить по центру STRETCH - растянуть по размеру контрола TILE - уложить плиткой ZOOM - увеличить по размеру контрола NONE - стандартный стиль (поместить в левом верхнем углу) (*)
*
[[Name].Image.Align]
Способ выравнивания фоновой картинки внутри контрола (если не задан способ отображения, либо если он задан как стандартный - NONE)
TOPLEFT - поместить в левом верхнем углу (*) TOPCENTER - поместить сверху по центру TOPRIGHT - поместить в правом верхнем углу MIDDLELEFT - поместить слева по центру MIDDLECENTER - поместить точно по центру MIDDLERIGHT - поместить справа по центру BOTTOMLEFT - поместить в левом нижнем углу BOTTOMCENTER - поместить снизу по центру BOTTOMRIGHT - поместить в правом нижнем углу
*
[[Name].Details.GridStyle]
Задает вид табличной сетки (в режиме Details)
NONE - скрыть сетку GRID - полная сетка HORIZONTAL - только горизонтальные линии VERTICAL - только вертикальные линии (*)
*
[[Name].HideSelectionMode]
Задает вид рамки выделения когда контрол теряет фокус
HIDE - убирать рамку выделения с элементов контрола (*) KEEPSELECTION - сохранять рамку выделения на элементах контрола DISABLE - рамка выделения сохраняется, но отображается как неактивная (серым цветом, стиль не поддерживается на XP)
*
[[Name].Mouse.Group]
Двойной щелчок мыши по заголовку сворачивает (разворачивает) группу
Создайте подпрограммы с соответствующими именами чтобы реагировать на события плагина.
dmLv_OnItemActivate Срабатывает при изменении активного элемента контрола. В подпрограмму передаются следующие данные: [dmLV.OnItemActivate.Rect] - имя контрола (прямоугольника) который сгенерировал событие [dmLV.OnItemActivate.GroupIndex] - индекс группы элемента [dmLV.OnItemActivate.ItemIndex] - индекс элемента [dmLV.OnItemActivate.Text] - текст элемента [dmLV.OnItemActivate.SubItems] - субэлементы
dmLv_OnGroupCollapse Срабатывает при сворачивании группы контрола [dmLV.OnGroupCollapse.Rect] - имя контрола (прямоугольника) который сгенерировал событие [dmLV.OnGroupCollapse.GroupIndex] - индекс группы контрола [dmLV.OnGroupCollapse.Text] - текст заголовка группы
dmLv_OnGroupExpand Срабатывает при разворачивании группы контрола [dmLV.OnGroupExpand.Rect] - имя контрола (прямоугольника) который сгенерировал событие [dmLV.OnGroupExpand.GroupIndex] - индекс группы контрола [dmLV.OnGroupExpand.Text] - текст заголовка группы
1.0.340 (12.08.15) Публичный релиз
- Нумерация индексов элементов и групп начинается с 0, нумерация элементов сквозная - Негруппированные элементы на самом деле тоже принадлежат специальной скрытой группе, не входящей в коллекцию групп контрола. Для ее обозначения здесь принят индекс -1 - Плагин поддерживает анимацию прямоугольника контрола - Демка не доделана, устал я от нее. Всем понятно не сделаешь, лучше отвечу на вопросы если таковые будут - По парсеру в XML... не совсем закончен, некоторые параметры еще не сохраняются (например субэлементы) - В принципе, функционал в основном останется как есть, дальнейшая разработка только в случае реальной заинтересованности, т.к. другие плагины не ждут
Повторюсь, команда плагина может иметь ограниченное кол-во параметров - 10, а нужно будет больше.
А нужен только один. Не, мож там и больше понадобится. Возьми как пример плагин NeoBookDBPro. Команда dbpSetGridProperties. Там идет таблица Ключ=Значение. По этому ее и переводить нельзя. После в плагине просто парсишь строку которая выглядит к примеру: Ключ=Значение,Ключ=Значение,Ключ=Значение,Ключ=Значение.... и получаешь массив всех нужных параметров. Каких нет (как в NeoBookDBPro) устанавливаются значения по умолчанию. В итоге для плагина получается всего один параметр, а передать из НБ можешь хоть сотню. Я как то пытался это Гарику объяснить, но с тем то ладно, все понятно. Ты то думаю поймешь о чем речь. Кстати такая таблица очень многое может решить. Ты да я да мы с тобой поймем все что ты выше написал, но новеньким... Вспомни плагины hpw, именно из за этого с ними так мало работают.
По плагину, круто, давно ждал. Но посмотреть и потестить смогу чуть позже. А пока класс, все это выглядит здорово. А то приходилось костыли создавать. Не хочешь читать хелп?
Вспомни плагины hpw, именно из за этого с ними так мало работают.
Я тоже не сторонник мудреных вариантов с предварительным заполнением кучи переменных. Разобрать в плагине параметр по косточкам при работе команды совсем не сложно, но аот сделать реально удобные редакторы команд для проектирования реально непросто. И вообще, на мой взгляд, плагины для NB (да и для любой другой программы) должны быть максимально приближены в работа к главной программе, тогда пользователю будет намного проще.
Цитатаmishem ()
плагин NeoBookDBPro. Команда dbpSetGridProperties. Там идет таблица Ключ=Значение.
Подобная схема, если кто успел заметить (видимо просто никому не надо было, вот так и выкеладывай что-то на тестирование ), уже давно имеется в zmVLC в нескольких местах. На первый взгляд все достаточно просто, но это в теории, а в реализации такого визуального редактора работы будет много, поскольку тут не отделаться одной функцией. Для этого разумно сделать специально компонент-редактор с нужными свойствами - достаточно один раз "попотеть" зато потом будет намного проще. А локализовать эти вещи, кстати, можно (в zmVLC это и сделано), видимо разрабы NB не захотели заморачиваться и пошли по простому пути. Мне пока удалось только бегло посмотреть плагин, выглядит многообещающе, но надо разбираться что-к-чему, с наскоку все это не осилить. Может на выходных... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
DBPro у всех на слуху, да и вообще его можно брать как эталон по созданию плагинов. Про твой я тоже сказал что тестироваться будет ближе к зиме, да и хороший тест, только тогда когда начинаешь создавать что то с этим плагином, а не просто пощелкать по кнопкам. все это вы уже сами проделали.
ЦитатаPeter ()
а в реализации такого визуального редактора работы будет много, поскольку тут не отделаться одной функцией.
Я согласен, но меня еще Гарик удивлял подобной фразой "команда плагина может иметь ограниченное кол-во параметров - 10", а ему неоднократно указывали на то что это не проблема, но он постоянно не понимал и снова делал ударение на том что только 10 и все.
ЦитатаPeter ()
видимо разрабы NB не захотели заморачиваться и пошли по простому пути.
Совершенно верно, им просто это не надо было. Они их использовали сразу как константы или переменные. Не хочешь читать хелп?
вообще его можно брать как эталон по созданию плагинов
Согласен! Вот я кое-что из его идей и подхватил.
Это все к тому, что подобная схема вполне реализуема.
Цитатаmishem ()
что тестироваться будет ближе к зиме
А у тебя "сезонность" тестирования отчего зависит?
Цитатаmishem ()
команда плагина может иметь ограниченное кол-во параметров - 10
Правильно - количество параметров не может превышать 10 (это - ограничение NeoBook), но... Параметры-то могут быть не только простыми, но и составными, и этот принцип применен не только в неософтовских плагинах, но и в самой NB (если быть чуток внимательнее). Только к вопросу, все же, следует подходить разумно, и не превращать команду плагина в "Войну и мир".
Цитатаmishem ()
хороший тест, только тогда когда начинаешь создавать что то с этим плагином
Я придумал: плагины нужно делать на английском, ты, по традиции, начнешь их переводить на русский, вот и протестишь заодно.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Мне показалось что длинная строка параметров это мало читабельно, нежели setvar с структурированным понятным именем. Параметров может быть очень много, и запутаться в длинной строке ключ-значение проще простого, да и как вы ее редактировать будете? Помощник можно сделать, но опять же, почти в каждой команде будет длинный список параметров, это нечитаемый код. Потом, исходя из логики работы плагина, где при построении контента нужно много раз повторять одну команду, эту строку пришлось бы писать постоянно в каждой команде. Потом, визуальный помощник в данном случае будет довольно сложный, т.к. если его и делать, то с примером получающегося контрола, чтобы видеть к чему приводят изменения, а не тупо таблицу с селекторами ключ-значение, это уже чтото геморно слишком. Не проще один раз задать параметры в setvar и не париться?
Добавлено (14 Августа 2015, 03:33) ---------------------------------------------
не, я прикинул тут, помощников к командам точно лепить не буду, там будет ад, плюс это поддерживать все надо будет при добавлении / изменении параметров... тем более что делать при массовом добавлении элементов? По одному и так медленно, а тут еще парсить. Не, отпадает. Только предварительная установка, по типу глобальных переменных. Я думал об этом сразу, видимо были еще причины отказаться, я просто не помню уже.
Мне показалось что длинная строка параметров это мало читабельно, нежели setvar с структурированным понятным именем.
Верно. Если читать код...
Когда мы задаем свойства необушных объектов при проектировании, то мы вообще не видим никакого кода (он скрыт в файле проекта), и нам в голову не придет лезть в проект и читать (что, в принципе, возможно). Ну, в общем, надеюсь понятна мысль. Зачем в команде плагина (в коде NB) читать код, когда достаточно щелкнуть по команде и откроется окошко помощника, который и заполнит все параметры, т.е. точно так же, как делает сама NB. Это все конечно если в плагине есть редакторы-помощники. Подобная схема значительно упрощает использование плагина и позволяет сделать работу с ним "прозрачной", словно работаешь с NeoBook. На мой взгляд, эту фичу в NB грех не использовать. Понятно, что для этого придеться попотеть, но...
ЦитатаDEMBEL ()
Потом, визуальный помощник в данном случае будет довольно сложный, т.к. если его и делать, то с примером получающегося контрола, чтобы видеть к чему приводят изменения, а не тупо таблицу с селекторами ключ-значение, это уже чтото геморно слишком.
Кстати, "тупо таблицу" (т.е. редактор свойств) сделать сложнее, чем показать рядом с ней к чему приведет то или иное изменение, причем не все изменения нужно отображать.
Но, в общем, все это вопросы "комфорта работы", и каждый плагинотворитель сам решает как лучше и удобнее. Я лишь высказал некоторые соображения. В конечном итоге, главное чтобы работало, и работало без глюков
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А многострочный режим поддерживается? Я имею в виду, внутри выделяемого пункта списка.
можно сделать. Еще можно - редактирование элемента - свои контролы при редактировании (напр. выбор даты календарем или выпадающий список) - drag'n'drop - перетаскивание элементов - чекбоксы и радиокнопки у элементов - поиск и визуальное выделение найденного текста - контекстные меню - собственная отрисовка всего (планирую добавить отрисовку заголовков таблицы, а то стандартные уродские см скриншоты, и разные на разных ос) Как задавать вопросы
Это все, конечно, хорошо, но только работы тут... Хромиум, в сравнение с этим, просто покажется небольшим упражнением. DEMBEL, напрасно ты проговорился.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Тогда делай максимально подробные хэлп и дэмку. Сейчас разбираться в настройках объекта слишком путанно (напоминает плагины HPW), а вот такие строчки просто хулиганство какое-то:
Код
setvar "[[LV].Headers.Font]" "Segoe UI,9,Bold"
Нужно быть милосерднее к пользователю!
Пришлось править на: Tahoma,8
Хлопотно - по существу все надо вписывать вручную (на память, подсказок нет), если где-то ошибся на одну запятую, то работать не будет, и т.п. Для взрослого языка программирования ручная работа - норма (по-другому там никак), но для необукеров (которые привыкли пользоваться помощниками и подсказками), думаю, совсем не годится, разве только если для очень продвинутых.
ЦитатаDEMBEL ()
лишь бы не впустую
Согласен - если работать впустую, то энтузиазм очень быстро угасает. Я тоже пока "молочу" впустую, но мне хоть самому интересно, а без личного интереса вообще ничего не сделаешь. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Добавлено (15 Августа 2015, 01:15) --------------------------------------------- ну и что мне, на каждый пук делать отдельную команду чтоли? типа скрыть-показать заголовки или поменять шрифт группы, элемента? будет 100500 команд станет не более понятно
ну и что мне, на каждый пук делать отдельную команду чтоли?
Зачем на каждый пук отдельную команду? Просто "Get" - получить, "Set" - установить. Примерная схема: ObjectGet "Свойство" "Переменная для результата" ObjectSet "Свойство" "Значение"
Свойства можно группировать (в зависимости от типа/назначения свойств и т.п.) и для каждой группы сделать свои Get и Set. Ну, скажем для шрифтов (как и в самой NeoBook): SetObjectFont "ObjectName" "И давлее - необходимые атрибуты с их значениями"
А скрыть/показать заголовки ещё проще: ShowObjectCaption "ObjectName" "True/False"
А если не распылять команды, то можно, скажем, так: ObjectSet "ObjectName" "ShowCaption" "True или False" ObjectSet "ObjectName" "Font" "Атрибуты шрифта со значениями (атрибут=значение)"
т.е - .объект -> свойство -> значение. Ничего сложного, и ещё неизвестно что окажется в итоге сложнее в реализации. Правда для моего предложения уже, возможно, потребуются окошки-помошники, но красота требует жертв. В этих делах ведь как получается: разработчику проще, пользователю - сложнее, и наоборот.
Хотя, как говорится, мое дело предложить, ваше дело - отказаться.
Париться за бесплатно никто не захочет (и это логично), а рассчитывать в нашей действительности даже на "Donate", мне кажется, излишне оптимистичным.. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
было бы реальное использование, то сделаю, лишь бы не впустую
Будет, если будут окна помощников. А так только продвинутые будут пользоваться. От остальных будет что то типа: Там ничего не понятно.
ЦитатаDEMBEL ()
будет 100500 команд станет не более понятно
Я ж не просто так в пример DBPro привел. Команд много, и все понятно. Сделай там как сейчас у тебя, и никто этим плагином не пользовался бы.
Должно быть все доходчиво понятно любому. Петр правильно написал:
ЦитатаPeter ()
но для необукеров (которые привыкли пользоваться помощниками и подсказками), думаю, совсем не годится
и я поддерживаю. Плагин должен быть доступен в работе для всех. Тогда он будет пользоваться спросом. И на "Donate" можно будет рассчитывать. Не все такие скупердяи как я. Не хочешь читать хелп?
Окна помощников, это, конечно, здорово, тяжело без них. Но, мне кажется, что главное, все же - это работоспособность плагина, реальный функционал и отсутствие ошибок. Если на создание окошек помощника времени и желания не достаточно, то лучше даже пока не браться. Обидно будет, если такой шикарный функционал будет похоронен под грудой работы по созданию интерфейса. Вместо окошек можно сделать видео-демонстрацию работы с плагином. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
в итоге. будет штук 50 отдельных параметров, мне на каждый морочиться с помощником
Все зависит от характера и назначения параметров (свойств объекта), можно сделать одну команду с 50 вариантами параметра, можно две и каждая с 25 вариантами параметра, можно пять, и каждая с 10 вариантами, т.е. все ограничено фантазией. Примеры я уже упоминал.
Кстати, на скрине - семерка, а не хрюша.
А окошки помощников не такая уж и сложная работа, даже гарик их делает (правда реализация у него - жесть, хотя внешне выглядит нормально и работает). Можно обойтись даже без окон помощников, просто команды сделать более "компактными" (комплексными), что ли, а не вызывать SetVar по 50 раз.
Цитатаmishem ()
Плагин должен быть доступен в работе для всех
Согласен!
DEMBEL, мы тебе просто подсказываем как сделать плагин реально удобным, а в противном случае толку от него будет очень мало, увы... Жаль, если хорошее начинание заглохнет на корню...
ЦитатаВадим ()
Обидно будет, если такой шикарный функционал будет похоронен под грудой работы по созданию интерфейса.
Интерфейс и придуман для того, чтобы с программами можно было общаться, и недаром он называется - пользовательский интерфейс, от интерфейса зависит очень много. Впрочем, если для кого-то размытые и радужные шрифты в системе - норма, то значит и интерфейс ему не важен (не нужен).
ЦитатаPeter ()
Хотя, как говорится, мое дело предложить, ваше дело - отказаться.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
DEMBEL, умеешь ты испортить настроение. Открыл, думаю ну сейчас, посмотрим что там... А там все на инглишь, и все вручную писать. И фсе. Все настроение пропало.
Я в серьезные языки не лезу, потому что именно этих окон помощников и не хватает. Я прям расстроился. Таких плагинов без окон у меня штук 50 лежит в которые я даже не заглядываю. Это я, а что о не опытных говорить?
Не, плагин судя по демке, замечательный. А лень которая не дает делать окна, это та самая ложка дегтя.
А я сразу и не понял к чему это Петр сказал:
ЦитатаPeter ()
Я придумал: плагины нужно делать на английском, ты, по традиции, начнешь их переводить на русский, вот и протестишь заодно.
Не, такие плагины у меня нет желания переводить. Проблема в том что долго во всем разбираться надо. Проходит время, все забыл и по новой сидишь время тратишь на изучение. НБ чем хороша? Простотой. Программа для ленивых. Сидишь только мышкой по кнопкам тыкаешь, ну мозг местами еще включаешь.
Правильно ты сказал:
ЦитатаPeter ()
Хлопотно - по существу все надо вписывать вручную (на память, подсказок нет), если где-то ошибся на одну запятую, то работать не будет, и т.п.
Именно хлопотно...
По этой причине и консольными утилитами мало кто пользуется.
DEMBEL, не хочу тебя огорчать, не пойдет он в таком виде. Ты можешь конечно сказать типа Ваше дело, но факт есть факт. Жалко конечно.
ЦитатаВадим ()
УРА, новым возможностям в NeoBook!!!
ЦитатаВадим ()
О, класс!!! Голосую за весь список!!!
Вадим, я поражаюсь порой твоему оптимизму. Ты хотя бы что то пробовал с ним сделать? Дифирамбы вводят людей в заблуждение и направляют в не правильном направлении. Уж тебе то как психологу стыдно это не понимать.
По мне, так лучше горькая правда, чем сладкая лесть. Льстить, это на оффорум. Гарик как раз туда подался. Там о том что у него дерьмо, говорят ласково, мягко и с уважением. :D
Таких плагинов без окон у меня штук 50 лежит в которые я даже не заглядываю.
Так а чего они тогда лежат-то? В помойку их, и всех делов! Или ты ждешь, что в них окна-помощников вырастут в новых суперсистемах?
Цитатаmishem ()
НБ чем хороша? Простотой.
А вот это - архиверно! На первый взгляд, NeoBook кажется какой-то неуклюжей и неумелой программой, но как только начинаешь с ней работать, понимаешь всю гениальность ее устройства, в отличие, например, от конкурента AMS. Это аккурат яркий пример, когда интерфейс и удобство общения с программой оказываются решающими. Я NeoBook просек буквально за один вечер, и после этого даже моя любимая (в то время) ММВ пошла на пыльную полку, несмотря на то, что она, как и NB, была сделана с любовью. Конечно, NB не без недостатков, но...
Цитатаmishem ()
ну мозг местами еще включаешь.
Да, такое тоже иногда случается
Цитатаmishem ()
не пойдет он в таком виде.
Для неопытных необукеров - однозначно. Но, в общем-то, можно обойтись и без окошек, если будет толковая автономная(!) справка, а лазать на форум в инет даже опытные не станут.
Ну да ладно, не надо хоронить плагин раньше времени, работа над ним, по сути, еще только начата, и пусть автор в этом не сумневается, даже если думает сейчас иначе!
Может он еще раскочегарится так, что и не удержать будет. Требуется время для осознания и вынашивания концепции, первые плагины никогда не бывают идеальными, а сделать реально хороший плагин (а не халтуру) намного сложнее, чем по-началу кажется, тут нужны время, опыт и немалое усердие.
Тот же NeoBookDBPro разрабы NB целый год делали! И это при их-то опыте и знаниях...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
В помойку никогда не поздно, только вот найти если вдруг понадобятся, не возможно. Да и сделать базу плагинов меня идея еще не покидает, только вот твой плагин zmPluginInfo на 10 не хочет работать, а пока обсуждение ее горячо, я к тебе не пристаю.
ЦитатаPeter ()
ММВ пошла на пыльную полку,
А че на полку, а не в помойку?
ЦитатаPeter ()
Но, в общем-то, можно обойтись и без окошек, если будет толковая автономная(!) справка
Да, и без списка команд. Нужно проще сделать, навел мышь на плагин в окне команд, а там просто описание: См. справку. Так как какой смысл от того что по команде щелкнул, все равно в справку лезть смотреть описание. Так оттуда можно просто скопировать и делов то.
Придумали какую то ерунду, окошки. В справке и так все доходчиво описано.
ЦитатаPeter ()
Ну да ладно, не будем хоронить плагин раньше времени
Да не, плагин хороший и востребованный. Его до ума только довести. Я ни в коем случае не хочу Дембеля обидеть, и не хочу что бы он бросил разработку. Но в том виде какой он сейчас, не пойдет однозначно. Я, ты , дембель сможем с ним работать, но даже нам не удобно не говоря о других. Плагин хороший, но лодка тоже хорошая, только вот без весел все же как то медленно плывет. Я буду и таким пользоваться, но не удобно. Не удобно. Не удобно мать ее так.... :D
только вот найти если вдруг понадобятся, не возможно.
А вы, батенька, барахольщик, однако.
Цитатаmishem ()
только вот твой плагин zmPluginInfo на 10 не хочет работать
Есть, все-таки, справедливость на свете!
Цитатаmishem ()
а пока обсуждение ее горячо, я к тебе не пристаю.
А ко мне приставать без толку, или ты еще не познал это?
Кстати, один мой друг обновил несколько дней назад на своем ноуте восьмерку на десятку... Так сейчас матерится на чем белый свет стоит! И это человек, который никогда "в теме" не был и не собирался в нее. Говорит, что десятку могли написать (и могут полюбить) только люди, горячо почитающие... Борю Моисеева...
Вот сейчас надо восстанавливать ему систему (если это вообще теперь получится - лицензию оригинальную восстановить), благо еще один ноут у него есть.
Цитатаmishem ()
А че на полку, а не в помойку?
Недостойна она помойки! Да и я человек сентиментальный.
Цитатаmishem ()
Придумали какую то ерунду, окошки
Эта, как ты говоришь, "ерунда" очень облегчает работу с NB, и ты прекрасно это знаешь.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Отец сыну: -Ну что сынок, поработали, пойдем выпьем? -Эт ты батя дело говоришь. Выпили. Отец: -Ну что сынок, выпили, пойдем теперь поработаем? Что ты бать выпил вроде немного, а забуробил, забуробил...
DEMBEL, выручай.. Не могу разобраться, сделал простую демку, все работает, но! При клике по любому элементу - ошибка
Подробная информация об использовании оперативной (JIT) отладки вместо данного диалогового окна содержится в конце этого сообщения.
************** Текст исключения ************** System.NullReferenceException: В экземпляре объекта не задана ссылка на объект. в CListView.CustomListView.OnGroupCollapse(BetterListViewGroupCollapseEventArgs eventArgs) в ComponentOwl.BetterListView.BetterListView.OnElementPropertyChanged(BetterListViewElementCollectionBase collection, o elementPropertyType, BetterListViewElementBase element, Object oldValue, EventArgs eventArgs) в ComponentOwl.BetterListView.BetterListViewGroup.OnElementPropertyChanged(o elementPropertyType, Object oldValue, EventArgs eventArgs) в ComponentOwl.BetterListView.BetterListViewGroup.set_IsExpanded(Boolean value) в ComponentOwl.BetterListView.BetterListView.OnMouseUp(MouseEventArgs e) в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) в System.Windows.Forms.Control.WndProc(Message& m) в CListView.CustomListView.WndProc(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
О чем я и говорил выше. Такие плагины не для слабонервных. (Серег, не тебя имею ввиду, просто фраза)
ЦитатаСергей ()
При клике по любому элементу - ошибка
Если это не ошибка плагина, то скорее всего где то не указал глобальный параметр. В плагинах hpw это сплошь и рядом. Не указал название шрифта, ошибка. Не указал размер шрифта. ошибка... И т.д. Почему то мне думается что и здесь тоже. Хотя могу и ошибаться. Не хочешь читать хелп?
Есть еще пожелание по плагину - сделать вот эти "выделения":
одного размера (высоты), независимо от длины текста. Чисто эстетически это будет выглядеть приятнее. Вроде бы, мелочь, но похожая мелочь просто до ужаса раздражает в семерке, превращая вид папок в какую-то безобразную разнобойную гребенку из экскизов или значков (но, как бороться с этим я уже, соава Богу!, знаю).
Кстати...
Цитатаmishem ()
то скорее всего где то не указал глобальный параметр.
В любой программе (а в необушных плагинах особенно) должна присутствовать т.н. "защита от дурака", т.е. обработка потенциальных ошибок. Плагин, прежде, чем выполнить какую-то команду, просто обязан проверить ее параметры на "валидность". Иными словами, проверять тотально все, что в плагин "прилетело" (или должно было прилететь) из проекта, а дальше действовать "по ситуации".
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Плагин, прежде, чем выполнить какую-то команду, просто обязан проверить ее параметры на "валидность".
И если такого нет или ошибочный, установить значение по умолчанию. К сожалению не все это хотят делать. Ленятся писать лишний код. Не только в плагинах, но и в самой NeoBook. Не хочешь читать хелп?
Дело в том, что порой код обработки ошибок получается "длиннее" непосредственно рабочего кода функции.
Цитатаmishem ()
Не только в плагинах, но и в самой NeoBook
Осознание того, что ошибки всегда МОГУТ быть и их надо отлавливать, приходит со временем. Или после того, как пользователи обматерят программу или плагин.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться