ToolboxItemAttribute (false) в Managed C++
От: Hologen Россия  
Дата: 16.06.04 14:16
Оценка: 6 (1)
Всем привет!

Есть проблема — нужно запретить некоторым компонентам
появляться в ToolBox.
Установка ToolboxItemAttribute для компонента c параметром false
вызывает ошибку компилятора MC++, хотя
на C# все работает отлично.
Может есть другой способ не добовлять компоненты в ToolBox?

Заранее спасибо!

17.06.04 11:48: Перенесено модератором из '.NET GUI' — AndrewVK
Среди нехоженных путей Один пусть мой,
Среди невзятых рубежей Один — за мной...
Re: ToolboxItemAttribute (false) в Managed C++
От: Ael США  
Дата: 17.06.04 17:55
Оценка: 3 (1)
Здравствуйте, Hologen, Вы писали:

H>Всем привет!


H>Есть проблема — нужно запретить некоторым компонентам

H>появляться в ToolBox.
H>Установка ToolboxItemAttribute для компонента c параметром false
H>вызывает ошибку компилятора MC++, хотя
H>на C# все работает отлично.




Очень интересная проблема. Интересно, в C++.NET даже если есть вот такой класс:
public __gc class Test{
public:
    Test(String*){}
    Test(Boolean*){}
    };

То попытка создать его экземпляр вот так:
        Test *test=new Test(String::Empty);

или так
        Test *test=new Test(false);

вызывает ошибку error C2668: 'Test_Controls::Test::Test' : ambiguous call to overloaded function
а конструкторы ToolboxItemAttribute:

public: ToolboxItemAttribute(bool);
 public: ToolboxItemAttribute(String*);
public: ToolboxItemAttribute(Type*);

поэтому и ошибка
H>Может есть другой способ не добовлять компоненты в ToolBox?
Может посмотрите лицензирование... В ToolBox добавить можно будет, но без лицензии, будет уже в дизайн-времени ошибка.
... << RSDN@Home 1.1.3 stable >>
Re: ToolboxItemAttribute (false) в Managed C++
От: V.Petrovski Беларусь  
Дата: 18.06.04 06:42
Оценка: 2 (1)
Ну если нельзя написать ToolBoxItemAttribute(bool defaultType), то может попробывать написать ToolBoxItemAttribute(Type toolboxItemType). Если получиться второе, то написав свою реализацию ToolBoxItem можно запретить добавлять его в ToolBox.

Длинно получилось
... << Rsdn@Home 1.1.4 beta 1 >>
Re[2]: ToolboxItemAttribute (false) в Managed C++
От: Hologen Россия  
Дата: 18.06.04 11:41
Оценка: 12 (1)
Здравствуйте, Ael, Вы писали:

Ael>Интересно, в C++.NET даже если есть вот такой класс:

Ael>
Ael>public __gc class Test{
Ael>public:
Ael>    Test(String*){}
Ael>    Test(Boolean*){}
Ael>    };
Ael>

Ael>То попытка создать его экземпляр вот так:
Ael>
Ael>        Test *test=new Test(false);
Ael>

Ael>вызывает ошибку error C2668: 'Test_Controls::Test::Test' : ambiguous call to overloaded function

Большое спасибо Вам за ответ. Он навел на нужное решение.
Вот оно:

public __gc class MyToolboxItemAttribute : public  ToolboxItemAttribute
{
public:
    MyToolboxItemAttribute (bool defaultType) : ToolboxItemAttribute (defaultType) {}
};


И все! теперь MyToolboxItemAttribute (false) работает.
Среди нехоженных путей Один пусть мой,
Среди невзятых рубежей Один — за мной...
Re[2]: ToolboxItemAttribute (false) в Managed C++
От: Hologen Россия  
Дата: 18.06.04 11:48
Оценка:
Здравствуйте, V.Petrovski, Вы писали:

VP>Ну если нельзя написать ToolBoxItemAttribute(bool defaultType), то может попробывать написать ToolBoxItemAttribute(Type toolboxItemType). Если получиться второе, то написав свою реализацию ToolBoxItem можно запретить добавлять его в ToolBox.


VP>Длинно получилось


Спасибо за совет.
Второе получается, а вот как в своей
реализации ToolBoxItem запретить добавлять в ToolBox?
Среди нехоженных путей Один пусть мой,
Среди невзятых рубежей Один — за мной...
Re[3]: ToolboxItemAttribute (false) в Managed C++
От: Ael США  
Дата: 18.06.04 12:36
Оценка:
Здравствуйте, Hologen, Вы писали:

[skipped]

H>
H>public __gc class MyToolboxItemAttribute : public  ToolboxItemAttribute
H>{
H>public:
H>    MyToolboxItemAttribute (bool defaultType) : ToolboxItemAttribute (defaultType) {}
H>};
H>


H>И все! теперь MyToolboxItemAttribute (false) работает.


Классно — а я вчера вечером именно это и пытался сделать, а голова не работала.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.