Как создать ComponentTray для Form Designer?
От: Thornik  
Дата: 17.08.05 07:42
Оценка:
Добрый день, господа! Очень прошу помочь в одном простом, но редком вопросе: Пишу свой дизайнер форм. К сожалению, документация по этому вопросу безобразная, из примеров тоже не всё понятно. Читал небезызвестный трактат http://www.divil.co.uk/net/articles/designers/hosting.asp , но он тоже не дал ответа. Затыка в следующем: Мне нужно сделать ComponentTray, куда валятся невизуальные компоненты. Как его надо создавать/получать и куда потом засовывать? Уверен, это решение на 3 строки, но так нигде и не нашёл. Пожалуйста, напишите конкретный C# код, чтобы лишний раз не переспрашивать.
Заранее благодарю!
Re: Как создать ComponentTray для Form Designer?
От: Dog  
Дата: 18.08.05 09:34
Оценка:
T>Затыка в следующем: Мне нужно сделать ComponentTray, куда валятся невизуальные компоненты. Как его надо создавать/получать и куда потом засовывать? Уверен, это решение на 3 строки, но так нигде и не нашёл. Пожалуйста, напишите конкретный C# код, чтобы лишний раз не переспрашивать.
Вобщето ComponentTray создаётся автоматически. Вы подписали ваш RootComponent дизайнером ?
[Designer(typeof(DocumentDesigner), typeof(IRootDesigner))]
// ваш RootComponent
    public class DesignerRoot : UserControl

А вот если надо отделить ComponentTray от RootComponent, то придётся писать свой дизайнер.
... << RSDN@Home 1.1.4 beta 7 rev. 458>>
Re[2]: Как создать ComponentTray для Form Designer?
От: Thornik  
Дата: 18.08.05 13:36
Оценка:
Dog>Вобщето ComponentTray создаётся автоматически. Вы подписали ваш RootComponent дизайнером ?
[Designer(typeof(DocumentDesigner), typeof(IRootDesigner))]
    // ваш RootComponent
    public class DesignerRoot : UserControl



Я, честно говоря, не так глубоко "в теме" Скорее всего не подписан. Вот как у меня делается:
form = (Form)host.CreateComponent(typeof(Form));
rootDesigner = (IRootDesigner)host.GetDesigner(form);
view = (Control)rootDesigner.GetView(ViewTechnology.Default);
view.Dock = DockStyle.Fill;
pnlViewHost.Controls.Add(view);


Надо подписать вот этот rootDesigner? А почему тогда он работает без подписи? (правда, и без трэя )
Re[3]: Как создать ComponentTray для Form Designer?
От: Dog  
Дата: 18.08.05 15:08
Оценка:
T>form = (Form)host.CreateComponent(typeof(Form));
T>rootDesigner = (IRootDesigner)host.GetDesigner(form);
T>view = (Control)rootDesigner.GetView(ViewTechnology.Default);
T>view.Dock = DockStyle.Fill;
T>pnlViewHost.Controls.Add(view);
T>[/c#]
Если драли с примера http://www.divil.co.uk/net/articles/designers/hosting.zip то всё должно работать.
По умолчанию форма уже подписана этим атрибутом и если правильно реализован IContainer.Add то там и инициализируется этот дизайнер. (кстати в статье это написано ) А в методе иниализации дизайнер подписыватся на IComponentChangeService.ComponentAdded и в обработчике события цепляет ComponentTray к дизайнеру, если добавляется компонент. Всё автоматически. Если что не ясно Reflector в руки и вперёд.

T>Надо подписать вот этот rootDesigner? А почему тогда он работает без подписи? (правда, и без трэя )

Дизайнер с простыми контролами работает ?

Вот вполне кошерная статья на русском здесь
И ещё пример дизайнера
здесь
... << RSDN@Home 1.1.4 beta 7 rev. 458>>
Re[4]: Как создать ComponentTray для Form Designer?
От: Thornik  
Дата: 26.08.05 12:54
Оценка:
Здравствуйте, Dog, Вы писали:

Dog>Если драли с примера ...


Ага, вот оттеда и брал Я так понял, это единственный нормальный пример на весь интернет? Нда, что-то тухло у мелкомягких с УПРОЩЕНИЕМ РАЗРАБОТКИ. Плин...

Dog> то всё должно работать.


Точно! Заработало! Просто пока в форме нет невизуальных компонент, этот трей просто НЕ ВИДЕН! Кто бы знал...


Dog>По умолчанию форма уже подписана этим атрибутом и если правильно реализован IContainer.Add ....


Не-не, всё, хватит! Ну его, этот ВСТРОЕННЫЙ ДИЗАЙНЕР к монаху! Больше е$ёшься, чтобы его ЗАСТАВИТЬ РАБОТАТЬ, чем реально делаешь дела. Я своими мозолистыми руками реализовал механизм selection и всё теперь под моим контролем, даже цвета рамочек.


Dog>Дизайнер с простыми контролами работает ?


Ага, всё там работает. Одна только беда — НИЧЕГО не понятно. А после полугода там вообще будет тёмный лес — ни изменить, ни дописать. Так что свой код — он надёжнее...


Dog>Вот вполне кошерная статья на русском


ОК, спасибо, Догги! Да там целый .NET реализован! И это называется мелкософт помогает разрабатывать дизайнер — 90% кода пишешь сам, да и то после подсказки. Опять из windows-программистов делают дебилов...
Re[5]: Как создать ComponentTray для Form Designer?
От: Dog  
Дата: 26.08.05 15:52
Оценка:
Dog>>Если драли с примера ...
T>Ага, вот оттеда и брал Я так понял, это единственный нормальный пример на весь интернет? Нда, что-то тухло у мелкомягких с УПРОЩЕНИЕМ РАЗРАБОТКИ. Плин...
Дельфи вам в руки

Dog>> то всё должно работать.

T>Точно! Заработало! Просто пока в форме нет невизуальных компонент, этот трей просто НЕ ВИДЕН! Кто бы знал...
эээ... вроде логично.

Dog>>По умолчанию форма уже подписана этим атрибутом и если правильно реализован IContainer.Add ....

T>Не-не, всё, хватит! Ну его, этот ВСТРОЕННЫЙ ДИЗАЙНЕР к монаху! Больше е$ёшься, чтобы его ЗАСТАВИТЬ РАБОТАТЬ, чем реально делаешь дела. Я своими мозолистыми руками реализовал механизм selection и всё теперь под моим контролем, даже цвета рамочек.
Конечно, свой велосипед ближе к заднице
А что за рамочки ?

Dog>>Дизайнер с простыми контролами работает ?

T>Ага, всё там работает. Одна только беда — НИЧЕГО не понятно. А после полугода там вообще будет тёмный лес — ни изменить, ни дописать. Так что свой код — он надёжнее...
С дизайнером единственная проблема — это отладка, если где-то косяк, то ловить глюки можно долго

Dog>>Вот вполне кошерная статья на русском

T>ОК, спасибо, Догги! Да там целый .NET реализован! И это называется мелкософт помогает разрабатывать дизайнер — 90% кода пишешь сам, да и то после подсказки. Опять из windows-программистов делают дебилов...
Я и говорю, пишите на Дельфи
...где-то между собакой и богом...
Re[6]: Как создать ComponentTray для Form Designer?
От: Thornik  
Дата: 21.04.06 14:35
Оценка:
T>>Нда, что-то тухло у мелкомягких с УПРОЩЕНИЕМ РАЗРАБОТКИ. Плин...
Dog>Дельфи вам в руки

А ты думаешь я откуда в .NET пришёл?


T>>Я своими мозолистыми руками реализовал механизм selection и всё теперь под моим контролем, даже цвета рамочек.

Dog>Конечно, свой велосипед ближе к заднице
Dog>А что за рамочки ?

Ну которыми селектнутые контролы выделяются.


Dog>С дизайнером единственная проблема — это отладка, если где-то косяк, то ловить глюки можно долго


Не сложнее, чем с любой другой программой. Достаточно один раз сделать самому, чтобы понять, что ничего особенного в нём нет. Жаль только время на велосипеды тратить...


T>>Опять из windows-программистов делают дебилов...

Dog>Я и говорю, пишите на Дельфи

Хих... Можно, но смысл? Продукт считай что умер, у Win32 тоже в перспективе упразднение. Проще уж в Линукс с Перлом уйти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.