Можно-ли управлять условной компиляцией, поместив соответствующий пункт в список свойств?
Фрагмент описания из KOL:
[offtop]NewTree( Parent ) или NewTree( Parent, Name ) - создает новый узел, подчиненный "родительскому" узлу Parent (может быть nil, для создания узла самого верхнего уровня). Возвращается указатель на созданный объект, типа PTree. Первый вариант конструктора следует использовать в проектах, в которых имеется символ условной компиляции TREE_NONAME. В этом случае узлы дерева не имеют свойства Name и не предназначены для хранения строки в качестве основного элемента узла. [/offtop]
Допустим такой: WideString и String, или надо делать два отдельных компонента?
Если можно, то как?
Этот топик читают: Гость
Ответов: 2059
Рейтинг: 132
|
|||
карма: 6 |
|
Ответов: 211
Рейтинг: 52
|
|||
Привет всем, привет flint2, студия управляет условной компиляцией глобально(сервис->компиляторы->командной строка) и посредством файла def.inc
Последний экспортирует только _DEBUG_,_DEBUG_MAIL_,_PROTECT_STD_,_PROTECT_MAX_,_ERROR_STD_,_ERROR_MAX_. Остальное только вручную, так в KOL, это файлы KOLDEF.inc и delphidef.inc Если ваш элемент будет использовать ANSI/wide в зависимости от типа визуальной формы NON/UNICODE, то используйте ifdef UNICODE_CTRLS для разграничения кода. В остальных случаях, непосредственно в поле класса можно использовать флаг вроде _prop_Mode:byte; и соответствующее ему определение в ini элемента:Mode=|4|0|ANSIString,WideString. Так же необходим указатель типа "pointer" в поле класса для хранения указателя на строку. В последствии приводить его к pAnsiChar или pWideChar в зависимости от состояния флага _prop_Mode. Это как вариант, или писать 2 компонента Да, и в Delphi2009 и выше string = WideString a char = WideChar если иное не определено |
|||
карма: 1 |
| ||
Голосовали: | sla8a |
Ответов: 2059
Рейтинг: 132
|
|||
Minkovsky Спасибо за ответ.
Остальное только вручную, так в KOL, это файлы KOLDEF.inc и delphidef.inc Да... то используйте ifdef UNICODE_CTRLS для разграничения кода. Это я для примера про UNICODE. Просто было бы очень красиво иметь связку ifdef со списком свойств компонента. В остальных случаях, непосредственно в поле класса можно использовать флаг вроде _prop_Mode:byte; и соответствующее ему определение в ini элемента:Mode=|4|0|ANSIString,WideString. Так же необходим указатель типа "pointer" в поле класса для хранения указателя на строку. Это выход из положения в конкретном случае. В конечном счёте получается IF THEN ELSEE. |
|||
карма: 6 |
|
3