UserControl и макросы
-
Max Rusov
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
UserControl и макросы
Во многих плагинах используется элемент диалога типа UserControl, который представляет собой суть список или таблицу разной степени навороченности. Делается это, отчасти, по причине бедности возможностей стандартного LISTBOX, но сейчас - не о том. Такой элемент, внешне выглядя как обычный список, никак не поддается автоматизации с помощью макросов, потому что в нем не работают макрофункции ItemCount/CurPos. Предлагаю устранить этот недостаток. Для этого можно добавить коды нотификации, например DN_GETITEMCOUNT/DN_GETCURPOS, которые будут посылаться UserControl'у при вызове соответствующих макрофункций. Если контрол их не обрабатывает, то функции вернут 0, если разработчик позаботился об их обработке, то контрол будет работать как полноценный ListBox.
- zg
- zero-gravity
- Posts: 6207
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 206 times
- Contact:
Re: UserControl и макросы
ну список или таблица, это узко 
а вообще, я когда-то предлагал валентину добавить в макроязык функцию, которая посылала бы строку и если в диалоге есть обработчик, он мог вернуть строку. но как-то не прижилось.
а вообще, я когда-то предлагал валентину добавить в макроязык функцию, которая посылала бы строку и если в диалоге есть обработчик, он мог вернуть строку. но как-то не прижилось.
-
Max Rusov
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: UserControl и макросы
Листбокс, конечно, можно улучшать, но это не отменяет UserControl. Мы никогда не предусмотрим в ListBox всех возможностей, которые могут понадобиться в тех или иных случаях. И я, например, по любому не стану переводить все свои плагины на ListBox, даже улучшенный, потому что это очень большой труд, а UserControl меня на 99% удовлетворяет - вот за исключением несовместимости с макросами.DrKnS wrote:А давайте лучше листбокс допилим, чем вот такие костыли?
Согласен, что Список/Таблица это частные случаи, но они покрывают довольно большое количество ситуаций, возникающих в макросах, например:
http://forum.farmanager.com/viewtopic.p ... 396#p84396
http://forum.farmanager.com/viewtopic.p ... 041#p85041
И да, желательно чтобы еще поддерживалось dlg.getvalue
Re: UserControl и макросы
видимо потерялось.zg wrote:а вообще, я когда-то предлагал валентину добавить в макроязык функцию, которая посылала бы строку и если в диалоге есть обработчик, он мог вернуть строку. но как-то не прижилось.
напомни
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: UserControl и макросы
и че юзерконтрол будет тебе возвращать в dlg.getvalue ?Max Rusov wrote:И да, желательно чтобы еще поддерживалось dlg.getvalue
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
-
Max Rusov
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: UserControl и макросы
Например: плагин нолучает нотификацию DN_GETVALUE и значение Type в Param2. При:Skirda wrote:и че юзерконтрол будет тебе возвращать в dlg.getvalue ?
Type = 0 - плагин должен вернуть указатель на строку, которая обычно интерпретируется как "Значение текущего элемента списка", но для разных usercontrol интерпретация может меняться.
Type = 7 - плагин должен вернуть число, которая обычно интерпретируется как "Текущая позиция в списке", но... см 1.
ну и все остальные значения Type ( >= 10) можно отдать на усмотрения разработчику, чтобы вытащить в макрос любые другие внутренние состояния контрола, например - текущую колонку в гриде.
Возможо, правильнее Param2 использовать как указатель на структуру, типа:
Кстати не нашел - а макрос как то может узнать количество элементов в списке, если список не текущий элемент?...
Вероятно, предлагаемые в первом посте DN_GETITEMCOUNT/DN_GETCURPOS можно свести к одному DN_GETVALUE, если потребовать, что при таком-то Type нужно возвращать число, интерпретируемое, как количество элементов списка
Re: UserControl и макросы
Бред. У одного плагина это будет "какого цвета итем", у друго тоже значение "колонка в гриде"... - "как будем делиться?"Max Rusov wrote:Type = 7 - плагин должен вернуть число, которая обычно интерпретируется как "Текущая позиция в списке", но... см 1.
ну и все остальные значения Type ( >= 10) можно отдать на усмотрения разработчику, чтобы вытащить в макрос любые другие внутренние состояния контрола, например - текущую колонку в гриде.
Добавить для Dlg.GetValue тип 11?Max Rusov wrote:Кстати не нашел - а макрос как то может узнать количество элементов в списке, если список не текущий элемент?...
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
-
Max Rusov
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: UserControl и макросы
Никак, а зачем? Макросы работают с конкретным контролом, они будут знать какой код что обозначает (из документации). В том что в разных контролах одинаковые коды возвратят разные по смыслу данные - нет никакой проблемы. Аналог: WM_USER+N. Когда ты используешь пользовательское сообщение в Windows тебя же не заботит что другой программист в своих окнах этот же код поиспользовал в других целях - они просто не пересекаются...Skirda wrote:Бред. У одного плагина это будет "какого цвета итем", у друго тоже значение "колонка в гриде"... - "как будем делиться?"
-
Kildor
- Posts: 1515
- Joined: Wed 16 Mar, 2005 06:26
- Location: Новосибирск
- Been thanked: 1 time
- Contact:
Re: UserControl и макросы
Поддерживаю идею Макса.
Универсальных макросов не существует всё-равно, каждый макрос идёт для конкретного диалога/меню/сущности. И если я буду знать, что сущность выдаёт, то я подстрою свой макрос.
Макрос запрашивает какой-то dlg.getValue, фар обращается к плагину, и передаёт сообщение. Плагин выдаёт нужное значение. Фар передаёт значение в макрос, все рады и щастливы.
Универсальных макросов не существует всё-равно, каждый макрос идёт для конкретного диалога/меню/сущности. И если я буду знать, что сущность выдаёт, то я подстрою свой макрос.
Макрос запрашивает какой-то dlg.getValue, фар обращается к плагину, и передаёт сообщение. Плагин выдаёт нужное значение. Фар передаёт значение в макрос, все рады и щастливы.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.
xmpp:kildor@jabber.ru
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.
xmpp:kildor@jabber.ru
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
Re: UserControl и макросы
вставлю своих 5 коп., я использую стандартные листбоксы, возможностей хватает... кроме одной... пользовательской раскраски элементов списка, этого да, оччень нехватает.Max Rusov wrote: по причине бедности возможностей стандартного LISTBOX
-
Max Rusov
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: UserControl и макросы
Ну мне лично необходимы минимум 2 вещи:
1. Owner Draw
2. Virtual data - чтобы не запихивать данные в ListBox, а он сам их у меня запрашивал, через Callback.
Но, повторюсь, всего не предусмотришь - так что развитие ListBox и данный топик - не связанные темы.
1. Owner Draw
2. Virtual data - чтобы не запихивать данные в ListBox, а он сам их у меня запрашивал, через Callback.
Но, повторюсь, всего не предусмотришь - так что развитие ListBox и данный топик - не связанные темы.
Re: UserControl и макросы
Так кто мешает продумать протоколы (и грамотно описать ТЗ на Землю) на раскраску, овнердрав и чего-то там?
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: UserControl и макросы
На мантис, но с нормальным описанием. (ну или с патчем, если есть
)
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!