Статья
Версия для печати
Обсудить на форуме
Описание компонент для WinXP



Предисловие редактора.
В связи с тем, что у меня было две версии компонент, а времени собирать старую и новую и стыковать файлы у меня, нет в архиве содержится полная версия как старых, так и новых файлов.
По поводу отличия обращаться к автору.
Гром.


Описание компонент для WinXP

Все мои компоненты - под VC.NET созданы, проверены под WinXP.
 
Файлы IEButton.cpp

IEButton.h - кнопка с картинкой, возможно функционирование в 3 различных видах:
 1.) - обыкновенная кнопка (только текст)

 2.) - кнопка с иконкой (через функцию bool SetIcon(UINT nID,bool redraw);)

 3.) - самое интересное - кнопка с иконкой и тенью, то есть при наводе указателя на кнопку появляется другая иконка (отличная от основной), чаще используется для подсветки. (функция - bool SetIcon(UINT nIDIcon,UINT nIDShadow,bool redraw);).
 
файлы IEEdit.cpp

IEEdit.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.cpp

IEPropertyList.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
Версия для печати
Обсудить на форуме