![]() |
|
[ На главную ] -- [ Список участников ] -- [ Зарегистрироваться ] |
On-line: |
Программирование на CAVO / / Добавление своих классов в Tool Palete |
Страницы: 1 |
![]() |
Автор | Сообщение |
Kwasti Группа: Участники Сообщений: 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 можно так же добавлять и свои классы наследники окошек.. к сожалению по ним не совсем все понятно, но кое-что тоже расскажу. |
|
Kwasti Группа: Участники Сообщений: 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) пока дальше сильно не разбирался..если что то обнаружу интересное то напишу.. |
|
ValeraN Группа: Модераторы Сообщений: 177 ![]() |
Добавлено: 19-09-2008 14:00 |
Дельно описано. Что могу предложить в помощь: SDK: ...Samples\Toys\WedConf\WedConf.aef Делаешь инструмент, пользуешься. Через него тоже можно настраивать, чтобы меньше писать ручками. Удачи ! |
|
Kwasti Группа: Участники Сообщений: 4 |
Добавлено: 24-09-2008 09:38 |
а в 2.7 этого самплеса как раз и нет... пойду рыть старые архивы CaVo... |
Страницы: 1 |
![]() |
Программирование на CAVO / / Добавление своих классов в Tool Palete |