Опубликован: 13.07.2010 | Уровень: специалист | Доступ: свободно
Самостоятельная работа 24:

Пользовательские компоненты

Пробное тестирование компонента

Теперь нужно посмотреть, что у нас на данном этапе получилось. Для этого нужно откомпилировать компонент до уровня DLL и поместить его на пробную форму.

  • Добавьте к решению MySolution новый проект ComponentTest типа приложения, выполнив команду меню File/Add/New Project и настроив мастер согласно рисунка

  • В панели Solution Explorer щелкните правой кнопкой мыши на узле проекта ComponentTest и выполните команду Set as StartUp Project, чтобы сделать новое приложение стартовым

Обратите внимание, что после этой команды оболочка выделила узел проекта полужирным стилем (если он уже не был выделен). В решении только один проект может быть стартовым.

  • Перейдите в режим конструктора форм для формы Form1 файла Form1.cs и откройте панель компонентов Toolbox

Мы видим, что пока панель содержит 9 свитков


Теперь нужно откомпилировать проект MyComponents. Для этого в панели Solution Explorer щелкните правой кнопкой мыши на корневом узле проекта и выполните команду Build


  • Перейдите в режим конструктора форм для формы Form1 файла Form1.cs и откройте панель компонентов Toolbox

Теперь мы видим, что после компиляции в панели Toolbox оболочки появился новый свиток с именем проекта компонента, в котором находится создаваемый компонент FirstComponent. То есть, оболочка сразу стала реагировать на появление нового компонента


  • Поместите компонент FirstComponent на форму Form1, выделите его экземпляр и исследуйте свойства в панели Properties оболочки

Мы видим, что в исполняемом файле программы оболочка автоматически создала экземпляр компонента с дежурным именем firstComponent1. Наряду со свойствами, наследуемыми компонентом от класса Control, в панели свойств отображаются все наши публичные свойства экземпляра компонента, такие, как IntegerProp, StringProp, CharProp, BoolProp, EnumProp. Они обертывают объекты простых значимых типов и оболочка поддерживает их декларативное изменение на этапе проектирования, в том числе, через раскрывающиеся списки. Но сложное свойство SomeObj, которое обертывает объект ссылочного типа, представлено в панели Properties только типом MyCompany.MyComponents. SomeObject.

Это связано с тем, что панель Properties способна представлять и редактировать свойства только как строки. Свойства простых значимых типов она может самостоятельно преобразовывать в строку и обратно, обеспечивая тем самым возможность их редактирования на этапе проектирования. Но со сложными типами, к которым относится класс SomeObject, дело обстоит иначе и на данном этапе оболочка в поле значения свойства-ссылки отображает только полное имя типа объекта.

Александр Рябинин
Александр Рябинин
Украина, Луганская обл., г. Рубежное

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7518107004656watchdog( )../bootstrap.inc:0
23.7521107007120module_invoke( )../bootstrap.inc:967
33.7521107008976call_user_func_array ( )../module.inc:462
43.7521107009312devel_watchdog( )../module.inc:462
53.7522107010160decode_entities( )../devel.module:382
63.7523107012080drupal_error_handler( )../devel.module:340
73.7523107015688watchdog( )../common.inc:663
83.7523107017752module_invoke( )../bootstrap.inc:967
93.7523107019608call_user_func_array ( )../module.inc:462
103.7523107019944devel_watchdog( )../module.inc:462
113.7524107020640decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7518107004656watchdog( )../bootstrap.inc:0
23.7521107007120module_invoke( )../bootstrap.inc:967
33.7521107008976call_user_func_array ( )../module.inc:462
43.7521107009312devel_watchdog( )../module.inc:462
53.7522107010160decode_entities( )../devel.module:382
63.7523107012080drupal_error_handler( )../devel.module:340
73.7523107015688watchdog( )../common.inc:663
83.7523107017752module_invoke( )../bootstrap.inc:967
93.7523107019608call_user_func_array ( )../module.inc:462
103.7523107019944devel_watchdog( )../module.inc:462
113.7524107020640decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7518107004656watchdog( )../bootstrap.inc:0
23.7521107007120module_invoke( )../bootstrap.inc:967
33.7521107008976call_user_func_array ( )../module.inc:462
43.7521107009312devel_watchdog( )../module.inc:462
53.7522107010160decode_entities( )../devel.module:382
63.7531107012272drupal_error_handler( )../devel.module:340
73.7531107015960watchdog( )../common.inc:663
83.7531107018024module_invoke( )../bootstrap.inc:967
93.7531107019880call_user_func_array ( )../module.inc:462
103.7531107020216devel_watchdog( )../module.inc:462
113.7532107020992decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7518107004656watchdog( )../bootstrap.inc:0
23.7521107007120module_invoke( )../bootstrap.inc:967
33.7521107008976call_user_func_array ( )../module.inc:462
43.7521107009312devel_watchdog( )../module.inc:462
53.7522107010160decode_entities( )../devel.module:382
63.7531107012272drupal_error_handler( )../devel.module:340
73.7531107015960watchdog( )../common.inc:663
83.7531107018024module_invoke( )../bootstrap.inc:967
93.7531107019880call_user_func_array ( )../module.inc:462
103.7531107020216devel_watchdog( )../module.inc:462
113.7532107020992decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7536107005200watchdog( )../bootstrap.inc:0
23.7537107007264module_invoke( )../bootstrap.inc:967
33.7537107009120call_user_func_array ( )../module.inc:462
43.7537107009456devel_watchdog( )../module.inc:462
53.7537107010160decode_entities( )../devel.module:382
63.7538107012080drupal_error_handler( )../devel.module:340
73.7538107015688watchdog( )../common.inc:663
83.7538107017752module_invoke( )../bootstrap.inc:967
93.7538107019608call_user_func_array ( )../module.inc:462
103.7538107019944devel_watchdog( )../module.inc:462
113.7539107020640decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7536107005200watchdog( )../bootstrap.inc:0
23.7537107007264module_invoke( )../bootstrap.inc:967
33.7537107009120call_user_func_array ( )../module.inc:462
43.7537107009456devel_watchdog( )../module.inc:462
53.7537107010160decode_entities( )../devel.module:382
63.7538107012080drupal_error_handler( )../devel.module:340
73.7538107015688watchdog( )../common.inc:663
83.7538107017752module_invoke( )../bootstrap.inc:967
93.7538107019608call_user_func_array ( )../module.inc:462
103.7538107019944devel_watchdog( )../module.inc:462
113.7539107020640decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7536107005200watchdog( )../bootstrap.inc:0
23.7537107007264module_invoke( )../bootstrap.inc:967
33.7537107009120call_user_func_array ( )../module.inc:462
43.7537107009456devel_watchdog( )../module.inc:462
53.7537107010160decode_entities( )../devel.module:382
63.7546107012272drupal_error_handler( )../devel.module:340
73.7546107015960watchdog( )../common.inc:663
83.7546107018024module_invoke( )../bootstrap.inc:967
93.7547107019880call_user_func_array ( )../module.inc:462
103.7547107020216devel_watchdog( )../module.inc:462
113.7547107020992decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7536107005200watchdog( )../bootstrap.inc:0
23.7537107007264module_invoke( )../bootstrap.inc:967
33.7537107009120call_user_func_array ( )../module.inc:462
43.7537107009456devel_watchdog( )../module.inc:462
53.7537107010160decode_entities( )../devel.module:382
63.7546107012272drupal_error_handler( )../devel.module:340
73.7546107015960watchdog( )../common.inc:663
83.7546107018024module_invoke( )../bootstrap.inc:967
93.7547107019880call_user_func_array ( )../module.inc:462
103.7547107020216devel_watchdog( )../module.inc:462
113.7547107020992decode_entities( )../devel.module:382