Добавление своих классов в Tool Palete

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Программирование на CAVO / / Добавление своих классов в Tool Palete

Страницы: 1  новая тема

Автор Сообщение

Группа: Участники
Сообщений: 4
Добавлено: 17-09-2008 14:16
Не знаю кто сталкивался с этим или нет, но мне загорелось вставить свои классы в Tool Palete ведь гораздо удобнее на визуальной форме поставить свой контроль и прописать все необходимые св-ва не правя PostInit, именно этим я и занимался некоторое время.

хочу показать то что я нашел (все выяснял анализируя файл от bBrowse)
Итак, самое простое это контроли, для их добавления нужны:
а) картинка курсора (для курсора когда будем тащить контроль на тул палете)
б) картинка bmp (для тул палете)
в) непосредственно файл с обисание нашего контроля

приведу пример на базе моего класса ExtRightSLE - небольшое расширение класса rightSLE
для рисования используем CaVO имена файлов задаем одинаковые! в моем случае это ExtRightSLE.cur и ExtRightSLE.bmp
а) формат курсора: 16х16 2цвета
б) формат 16х16 16 цветов
м.б. можно и больше цветов и большие размеры...не пробовал.
да и не к чему это...хотя кому нужна красота то вперед!
в) создаем файл-описание контроля имя любое, расширение WED (у меня это ExtRightSLE.WED
итак смотрим что мы можем описать?
в начале описываем контент
[CONTENTS]
ExtRightSLE=CONTROL:TEXTCONTROL:EDIT:SINGLELINEEDIT:EXTRIGHTSLE
имя вашего класса=все классы, ч/з которые происходит наследование вашего класса ч/з двоеточие.
кстати следует заметить что в данном случае показано что ExtRightSLE наследник сразу SingleLineEdit а не rightSLE это связано с тем то в CAVO нет описания контроля rightSLE, если его описать то можно было бы и его добавить..
далее описываем сами св-ва: пояснения как мне кажется не требуются для чего и что присваивается..
[CONTROL:TEXTCONTROL:EDIT:SINGLELINEEDIT:EXTRIGHTSLE]
ContTitle=Extension right Single-Line Edit
ClassName=edit
Name=ExtRightSLE
Size=100,20
; далее опишем закладки
;HyperLabel - это описание св-в данной закладки
;основные - это то что будет отображаться в окне св-в
;если написать PropTabs=HyperLabel,GenSingleEdit
; то название закладки будет взято из описания данного св-ва
PropTabs=HyperLabel:Основные,GenSingleEdit:Главные,ExtRightSLE:Параметры колонки,SingleLinestylеs:Стиль,Exstylеs:Дополнительный стиль
stylе=WS_CHILD|WS_TABSTOP|WS_BORDER|ES_AUTOHSCROLL
Exstylе=WS_EX_CLIENTEDGE
InitMethod=ExtSearchSle(PARENT,ID,POSITION,SIZE)
InheritClassName=Inherit from Class,InheritClassName(CLASS:ExtRightSLE)
;далее как раз и есть имя файлов изображений: курсора и иконки
FloatBar=c:\CAVO27\Bin\ExtRightSLE
; далее перечислим те св-ва которые есть в нашем контроле
Assign330=Порядковый номер колонки,ColumnNumber(numeric)
Assign331=Заголовок колонки,ColumnTitle(string)
Assign332=Ширина колонки,ColumnWidth(numeric)
Assign333=Строка получения значения,ColumnVar(string)
Assign334=Тип строки значения,ColumnVarType(ExtRightSLEVarType)
Assign335=Имя в RecordSet,ColumnSort(string)
Assign336=Номер bBrowse,Group(numeric)

;если у контроля есть методы, то их тоже можно здесь описать,
;в этом случае нужно вместо Assign написать Method
:еще есть Windowstylе - про него ничего пока сказать не могу

----------
итак мы описали св-ва контроля но не совсем, в данном случае CAVO всего лишь будет подменять "Порядковый номер колонки" на ColumnNumber(значение которое укажем в св-вах), но этого мало, CaVO должен еще знать как вызывать данные св-ва и методы! для этого существует карта свойств!
[AssignMap]
ColumnNumber=
ColumnTitle=
ColumnWidth=
ColumnVar=
ColumnVarType=
ColumnSort=
Group=
в данном примере показано что все св-ва являются присваиванием
если этого не описать то будет записано вместо
ColumnWidth=70 -> ColumnWidth{70}
посмотрите внимательно на св-во Assign334 в нем вместо типа переменной указано некое слово, данной слово является всего лишь списком опишем его в следующей секции
[StdProperties]
ExtRightSLEVarType=#FIELD,#EXPRESSION,#ACCESS,#ACCESSASSIGN
замечу что если св-во это некий класс то можо указать и его
пример создания меню:
Assign10=Menu,Menu(CLASS:Menu)
в выбор пападут все классы которые являются наследниками класса Menu в этом случа не нужно описывать в карте это св-во

это еще не все..далее опишем в какой закладке будут показаны данные св-ва
[StdProperties II]
ExtRightSLE=(General ExtSearchSLE Control Properties)Порядковый номер колонки,Заголовок колонки,Ширина колонки,Строка получения значения,Тип строки значения,Имя в RecordSet,Номер bBrowse

формат:
имя_закладки=(описание- всплывающая подсказка) список св-в

важно: все имена св-в должны совпадать с именами в Assign, Method и т.д.
так же имя_закладки должны совпадать с тем что указали в
PropTabs=HyperLabel:Основные,GenSingleEdit:Главные,ExtRightSLE:Параметры колонки, и т.д..
ну вот в принципе и все..

теперь можно добавлять свои контроли...
еще как видноиз примеро можно частично локализовать CAVO если вдруг кому-то захочется..для этого открываем файл CavoWed.inf
в BIN директории и начинаем заменять англоязычные описания на локализованные (русские, украинские, белорусские и т.д...)
главное не поменять св-во вместо его описания, как в случае с [CONTROL:TEXTCONTROL:EDIT:SINGLELINEEDIT]
...
Assign04=Picture,Picture(STRING)
...
оно должно быть описано так
[CONTROL:TEXTCONTROL:EDIT:SINGLELINEEDIT]
...
Assign04=Шаблон,Picture(STRING)
...
и далее в секции
[AssignMap]
Picture=

а вот в секции [StdProperties]
GenSingleEdit=(General SinglelineEdit Properties) ...,Шаблон,...

проще всего переименовывать закладки в них достаточно после имени поставить двоеточие и написать то как оно должно отображаться, как сделано в примере по HyperLabel

еще есть файл, отвечающий за шаблоны имеет расширение TPL как создаются шаблоны, там есть краткий формат, и если его посмотреть то все сразу станет понятно.

по русски звучит все извратно, но главное показать что это возможно и как.

инсталяция WED файла происходит ч/з WEDSetup.exe

можно так же добавлять и свои классы наследники окошек..
к сожалению по ним не совсем все понятно, но кое-что тоже расскажу.

Группа: Участники
Сообщений: 4
Добавлено: 17-09-2008 14:25
для окошек все тоже самое, только обязательно следует создавать шаблон метода инициализации и остальных если требуется...

краткий пример:
[CONTENTS]
AWindow=FORM:DATAWINDOW:AWINDOW

[FORM:DATAWINDOW:AWINDOW]
ContTitle=Data Window
text=DataWindow Caption
InitMethod=DATAWINDOW(oWindow,iCtlID,oServer,uExtra)
InheritClassName=Inherit from Class,InheritClassName(CLASS:DataWindow)
Name=MyDataWindow
Size=420,320
DialogTemplate=1
Position=5,5
stylе=WS_CHILD
HelpID=2065
PropTabs=HyperLabel,DataWindow,Mouse Events,Window Events,Control Events,Menu Events,CommonControl Events,TreeView Events,ListView Events
Assign18=Owner Alignment,OwnerAlignment(OWNERALIGNMENT)

пока дальше сильно не разбирался..если что то обнаружу интересное то напишу..

Группа: Модераторы
Сообщений: 177
Добавлено: 19-09-2008 14:00
Дельно описано. Что могу предложить в помощь:
SDK: ...Samples\Toys\WedConf\WedConf.aef

Делаешь инструмент, пользуешься. Через него тоже можно настраивать, чтобы меньше писать ручками.

Удачи !

Группа: Участники
Сообщений: 4
Добавлено: 24-09-2008 09:38
а в 2.7 этого самплеса как раз и нет...
пойду рыть старые архивы CaVo...

Страницы: 1  новая тема
Раздел: 
Программирование на CAVO / / Добавление своих классов в Tool Palete

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU