Компонент в дизайне?
От: Аноним  
Дата: 26.05.04 14:29
Оценка:
Как узнать, мой компонет сейчас в дизайне или в выполняемом приложении?


Спасибо.
Re: Компонент в дизайне?
От: TK Лес кывт.рф
Дата: 26.05.04 14:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как узнать, мой компонет сейчас в дизайне или в выполняемом приложении?


Через Component.Site.DesignMode
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Компонент в дизайне?
От: V.Petrovski Беларусь  
Дата: 26.05.04 14:48
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Аноним, Вы писали:


А>>Как узнать, мой компонет сейчас в дизайне или в выполняемом приложении?


TK>Через Component.Site.DesignMode

В рантайме Site можеь быть равен null, тачто будь осторожен!
... << RSDN@Home 1.1.3 stable Бутусов — Берег>>
Re[2]: Компонент в дизайне?
От: Аноним  
Дата: 26.05.04 14:54
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Аноним, Вы писали:


А>>Как узнать, мой компонет сейчас в дизайне или в выполняемом приложении?


TK>Через Component.Site.DesignMode


Спасибо.


Хотя еще вопрос, как вообще сделать так чтобы компонент сделал основное вычисление после того как
установлены все его свойства. В Component Designer generated code все свойства устанавливаются поочереди (в алфавитном порядке вроде.),и свойство активации может быть и вначале.
Как узнать что все свойства установлены и пора сто-то сделать автоматически?

Я конечно смогу запустить процедуру пересчета, Но хотелось бы узнать как это сделать автоматом.

Дело в том что работу компонента можно посмотреть и в DesignMode. естьсвойство Activate которое нужно установить в true и результирующие ReadOnly property заполнятся.

При старте формы Activate если я оставил его в true активируется первым, но неработает так как неустановлены
другие свойства... (вроде понятно рассказал?)

что делать?
Re[3]: Компонент в дизайне?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.05.04 15:00
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>что делать?


ISupportInitialize allows controls to optimize for multiple sets to properties. As a result, you can initialize co-dependent properties or batch set multiple properties at design time.

Call the BeginInit method to signal the object that initialization is starting. Call the EndInit method to signal that initialization is complete.

... << RSDN@Home 1.1.4 beta 1 >>
AVK Blog
Re[3]: Компонент в дизайне?
От: TK Лес кывт.рф
Дата: 26.05.04 15:01
Оценка:
Hello,
>
> Хотя еще вопрос, как вообще сделать так чтобы компонент сделал основное вычисление после того как
> установлены все его свойства.

для этого есть интерфейс ISupportInitialize. Его нужно реализовать
Posted via RSDN NNTP Server 1.9 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Компонент в дизайне?
От: V.Petrovski Беларусь  
Дата: 26.05.04 15:01
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как узнать что все свойства установлены и пора сто-то сделать автоматически?

Тебе просто необходимо реализовать интерфейс ISupportInitialize
... << RSDN@Home 1.1.3 stable Бутусов — Эх, луна>>
Re[3]: Компонент в дизайне?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.04 15:41
Оценка:
Здравствуйте, V.Petrovski, Вы писали:

TK>>Через Component.Site.DesignMode

VP>В рантайме Site можеь быть равен null, тачто будь осторожен!

С вероятностью 99.9999999999999999% .
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Компонент в дизайне?
От: Igor Trofimov  
Дата: 26.05.04 18:21
Оценка:
TK>Через Component.Site.DesignMode

Только это не всегда работает. Например, не работает для конструкторов базовых форм.
Более точно можно определить, трассируя стек вызова на наличие объектов, реализующих IDesignerHost.
Могу дать кусок кода.
Re[4]: Компонент в дизайне?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.05.04 19:38
Оценка:
Здравствуйте, VladD2, Вы писали:

TK>>>Через Component.Site.DesignMode

VP>>В рантайме Site можеь быть равен null, тачто будь осторожен!

VD>С вероятностью 99.9999999999999999% .


Что то ты больно крутую вероятность забацал. У меня к примеру в одном из приложений он совсем не null. Не думаю что в мире свуществует 10000000000000000 приложений, написанных на дотнете и использующих компоненты.
... << RSDN@Home 1.1.4 beta 1 (mobile station) >>
AVK Blog
Re[3]: Компонент в дизайне?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.05.04 19:53
Оценка: +1
Здравствуйте, Igor Trofimov, Вы писали:

iT>Только это не всегда работает. Например, не работает для конструкторов базовых форм.

iT>Более точно можно определить, трассируя стек вызова на наличие объектов, реализующих IDesignerHost.
iT>Могу дать кусок кода.

IDesignerHost вполне может обнаружится и в рантайме.
... << RSDN@Home 1.1.4 beta 1 (mobile station) >>
AVK Blog
Re[3]: Компонент в дизайне?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.04 20:05
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>Только это не всегда работает. Например, не работает для конструкторов базовых форм.

iT>Более точно можно определить, трассируя стек вызова на наличие объектов, реализующих IDesignerHost.
iT>Могу дать кусок кода.

А еще более точно занимаясь дизасемблированием кода.

Такие "подходы" являются ошибками дизайна и часто выливаются в кучу геморроя в будущем.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Компонент в дизайне?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.04 20:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>С вероятностью 99.9999999999999999% .


AVK>Что то ты больно крутую вероятность забацал. У меня к примеру в одном из приложений он совсем не null. Не думаю что в мире свуществует 10000000000000000 приложений, написанных на дотнете и использующих компоненты.


А у меня вероятность в компонентах. Ты вот сам говоришь "в одном из...".

Кстати, зачем тебе нужен самопальный сайт если ты не делаешь дизайнер?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Компонент в дизайне?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.04 20:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

iT>>Только это не всегда работает. Например, не работает для конструкторов базовых форм.

iT>>Более точно можно определить, трассируя стек вызова на наличие объектов, реализующих IDesignerHost.
iT>>Могу дать кусок кода.

AVK>IDesignerHost вполне может обнаружится и в рантайме.


Во-во. Уж если выпендриваться, то перегружать свойство Site и т.п. А так то зачем?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Компонент в дизайне?
От: Igor Trofimov  
Дата: 27.05.04 05:46
Оценка:
AVK>IDesignerHost вполне может обнаружится и в рантайме.
Ну, это если твоя система содержит дизайнер.
А это тоже можно отдельно проверить.
Re[5]: Компонент в дизайне?
От: Igor Trofimov  
Дата: 27.05.04 05:47
Оценка:
AVK>>IDesignerHost вполне может обнаружится и в рантайме.
VD>Во-во. Уж если выпендриваться, то перегружать свойство Site и т.п.

И что там написать
Re[4]: Компонент в дизайне?
От: Igor Trofimov  
Дата: 27.05.04 05:48
Оценка:
VD>А еще более точно занимаясь дизасемблированием кода.
VD>Такие "подходы" являются ошибками дизайна и часто выливаются в кучу геморроя в будущем.

Отлично! Может у тебя есть другой рецепт выяснения, находится ли форма в design-time?
Или может "если это нужно знать, значит, ошибка в дизайне"?
Re[4]: Компонент в дизайне?
От: Аноним  
Дата: 27.05.04 06:54
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello,

>>
>> Хотя еще вопрос, как вообще сделать так чтобы компонент сделал основное вычисление после того как
>> установлены все его свойства.

TK>для этого есть интерфейс ISupportInitialize. Его нужно реализовать



Help я прочитал, но так и не понял как его реализовать..
Вы не мудрите, вы пальцем покажите...
Обьясние если можно на пальцах и с маленьким примером.



спасибо.
Re[6]: Компонент в дизайне?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.05.04 07:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Кстати, зачем тебе нужен самопальный сайт если ты не делаешь дизайнер?


Чтобы в PropertyGrid можно было подсунуть в рантайме свой ServiceProvider. Сайт притом не самопальный, а вполне себе родной, фреймворковский.
... << RSDN@Home 1.1.4 beta 1 >>
AVK Blog
Re[7]: Компонент в дизайне?
От: Mr.Gremlin Украина  
Дата: 27.05.04 12:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, VladD2, Вы писали:


VD>>Кстати, зачем тебе нужен самопальный сайт если ты не делаешь дизайнер?


AVK>Чтобы в PropertyGrid можно было подсунуть в рантайме свой ServiceProvider. Сайт притом не самопальный, а вполне себе родной, фреймворковский.


Чтобы в PropertyGrid можно было подсунуть свой ServiceProvider, достаточно переопределить метод GetService у PropertyGrid. Иначе возможны траблы, какие не помню, но то что они были это точно. Все компоненты находились в дизайне т.е. имели нормальный сайт и полноценный набор сервисов в ServiceProvider, до нужного сервиса PropertyGrid не хотел достукиваться, изучил всю линеку объектов у которых он просил.
В итоге сутки искал причину, оказалось что-то связаное IComponentChangeService или IDesignerEventService, точнее не могу вспомнить. Кстати как потом обнаружил "Сама VS" подставляет свой ServiceProvider точно таким же образом, см Microsoft.VisualStudio.PropertyBrowser.PropertyGridHolder.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.