Создание визуальных компонентов в C++ Builder Для этого нам понадобится:
- C++ Builder (у меня 5-я версия)
- Голова
Для начала составим тех задание. Разработать
компонент который будет реагировать на событие OnClick. И визуально
будет выглядеть в 2-х состояниях : покоя и нажатия. Далее мы
теперь видим, что компонент должен рисоваться на форме, поэтому
порождать будем от компонента TCustomControl (у которого есть свойства
отвечающие за рисование). Создадим шаблон: Component->New Component… В появившемся окне заполним поля:
- Ancestor type = TCustomControl
- Class Name = “Имя вашего компонента, я назвал TXapacC”
Жмем на кнопочку «OK» Теперь идем в заголовочный файл и там определяем собственно то, что будем переписывать: 1. В раздел private:
- bool PaintType; //Состояние которое отрисовать
2. В раздел public:
- void PaintMouseDown();//Рисуем в нажатом состоянии
- void PaintNormal();//Нормальное состояние(так сказать подефолту)
- DYNAMIC void __fastcall MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);//Событие при нажатии мыши
- DYNAMIC void __fastcall MouseUp(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);//Событие при отпускании мыши
3. В раздел __published:
- __property OnClick; //Типерь можем назначать обработчик
Теперь переходим в файл реализации (.cpp) и реализуем вышеопределенные методы В конструктор добавим: Code __fastcall TXapacC::TXapacC(TComponent* Owner) : TCustomControl(Owner) { PaintType=false; }
Обработчик рисования:
Code void __fastcall TXapacC::Paint(void) { Canvas->Brush->Color=clBtnFace; Canvas->FillRect(TRect(0,0,Height,Width)); Canvas->Brush->Color=clRed; if(PaintType==1) PaintMouseDown(); else PaintNormal(); };
Рисование кнопки в нажатом состоянии:
Code void TXapacC::PaintMouseDown() { Canvas->Brush->Color=clRed; Canvas->Ellipse(0,0,19,19); };
Рисование кнопки в нормальном состоянии:
Code void TXapacC::PaintNormal() { Canvas->Brush->Color=clRed; Canvas->Ellipse(0,0,20,20); };
Обработчик нажатия мыши:
Code void __fastcall TXapacC::MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y) { PaintType=1; Paint(); };
Обработчик отпускания мыши:
Code void __fastcall TXapacC::MouseUp(TMouseButton Button, Classes::TShiftState Shift, int X, int Y) { PaintType=0; Paint(); };
Итак процесс создания компонента закончен, теперь осталось его скомпилировать установить, и запустить. Для компиляции заходим в меню: Component->Install
Component… В появившемся меню в поле Unit file name выбираем путь к
нашему компоненту (по умолчанию он все автоматически сохраняются в
каталог «"C:\Program Files\Borland\CBuilder5\Lib\"»). Нажимаем «OK».
Далее компилируем нажав в открывшемся окне на кнопку «Compile» если
есть ошибки, то компилятор укажет на них, если же ошибки отсутствуют,
то вы увидите надпись «Done:Make» (не заметить ее очень трудно). Жмем
«Install» в том же окне. И ждем с нетерпением надпись «Packade бла бла
has been installed».
Все компонент установили, теперь осталось им воспользоваться.
По умолчанию установка происходит в закладку «Samples». Думаю если читающего заинтересовало написание компонентов, то их использование уже известно. Поэтому объяснять не будем.
Мой пример Обсудить на форуме
|