Предисловие редактора.
В связи с тем, что у меня было две версии компонент, а времени собирать старую и новую и стыковать файлы у меня, нет в архиве содержится полная версия как старых, так и новых файлов.
По поводу отличия обращаться к автору.
Гром.
Описание компонент для WinXPВсе мои компоненты - под VC.NET созданы, проверены под WinXP.
Файлы IEButton.cppIEButton.h - кнопка с картинкой, возможно функционирование в 3 различных видах:
1.) - обыкновенная кнопка (только текст)
2.) - кнопка с иконкой (через функцию bool SetIcon(UINT nID,bool redraw);)
3.) - самое интересное - кнопка с иконкой и тенью, то есть при наводе указателя на кнопку появляется другая иконка (отличная от основной), чаще используется для подсветки. (функция - bool SetIcon(UINT nIDIcon,UINT nIDShadow,bool redraw);).
файлы IEEdit.cppIEEdit.h - едит бокс для числовых форматов, работает в следующих вариантах (определяются при вызове конструктора CIEEdit(const CString& LastStr=_T(""),
const bool mDouble=false,
const bool mInt=false,
const bool mLess=false,
const bool mMore=false,
const bool mnonZero=false);
1.)m_Int=false m_Double=false - просто строка
2.)m_Int=false m_Double=true
m_Int=true m_Double=true - едит бокс для double
3.)m_Int=true m_Double=false - едит бокс для Int
Для 2 и 3 комбинации:
1.)m_Less=false m_More=false - весь спектр решений (от минус бесконечности до плюс бесконечности)
m_Less=true m_More=true
2.)m_Less=false m_More=true m_nonZero=false ->=0;
3.)m_Less=false m_More=true m_nonZero=true ->0; (строго больше)
4.)m_Less=true m_More=false m_nonZero=false - <0;
5.)m_Less=true m_More=false m_nonZero=true - <=0;
Файлы IEPropertyList.cppIEPropertyList.h - лист свойств (как в C++Builder или в VC7) (для нормальной работы требуется - IEEdit,IEButton).
Возможны следующие типы элементов данных (то есть свойств):
1.) заголовок или узел (ReadOnly)
2.) стандартный едит
3.) едит для double >0
4.) едит для double >=0
5.) едит для double
6.) едит для int >0
7.) едит для int >=0
8.) едит для int
9.) комбо бокс
10.) статический текст - едит бокс стилем ReadOnly.
Кнопка мне была не нужна, поэтому я ее пока и не делал. Каждый элемент данных (кроме заголовка) передает сообщения о принятии фокуса и о потере фокуса диалогу, в котором лист свойств создан. На принятие фокуса элемент данных создается, на потерю фокуса - уничтожается. В сообщеннии, посылаемом окну, передается следующая структура:
struct IEPROPERTYITEM_NOTIFY //структура для передачи диалогу сообщения
{
NMHDR hDR;
IEPropertyItem* Item; //указатель на элемент данных сообщения
};
где IEPropertyItem - класс элемента данных.
За это время у меня появился перегруженный класс от CRichEditCtrl - CIERichEditOtchet - нужен для создания (динамически) ReadOnly отчетов о чем-нить. Что интересно - можно загонять строки в Unicode (хотя формат RTF - это не поддерживает), не надо знать формата RTF. Работает следующим образом: функциями класса
void AddStr(const CString& str,
const bool Bold=false, //жирность
const bool Underline=false, //подчеркнутость
const bool Italic=false, //курсив
const bool Left=true, //выравнивание
const bool Center=false,
const bool Right=false,
const int yHeight=200);
Добавляются абзацы текста с указанным форматированием (yHeight - в единицах twips), после добавления всех строк вызывается функция MakeOtchet() - которая отчет и генерирует полностью. Работает через SetWindowText. Заодно и его высылаю (IERichEditOtchet.cpp, IERichEditOtchet.h)
Найти компоненты можно по ссылке:
https://club.shelek.ru/download.php?id=197Обсудить тут:
https://forum.shelek.ru/index.php/topic,2413.0.html