Опять тулбары
От: sergueim Россия  
Дата: 03.04.03 06:00
Оценка:
Порылся — вроде ничего не нашёл.
У меня в тулбаре кнопки и прочая лабуда добавляются динамически, ну и убираются тоже. В зависимости от многих обстоятельств: какая активная форма на теущий момент, режим просмотра или редактирования. Но почему в режиме проектирования форма запоминает какие кнопки были добавлены динамчески.и я могу их видеть. Хотя никогда не рисовал их с помощью тулов.
Например, (чтобы не усугу!лять, максимально сокращу)

1. класс тулбаровский

public class SmToolBar : System.Windows.Forms.ToolBar  
    {
        
        
        public SmToolBar()
        {
            InitializeComponent();
            this.AddButtons();     
        }

        
                private void AddButtons()
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("d:\\baseNet\\menus.xml");
            XmlElement xmlRootEl = xmlDoc.DocumentElement;
            int nCount = xmlRootEl.ChildNodes.Count;
            
            ToolBarButton[] tlb = new ToolBarButton[nCount];
            
            for (int i = 0; i < nCount; i++)
            {
                tlb[i] = new ToolBarButton(); 
                tlb[i].Text  = xmlRootEl.ChildNodes[i].Attributes["name"].Value;
                tlb[i].Style = ToolBarButtonStyle.DropDownButton; 
            }
            this.Buttons.AddRange(tlb);
        }
    }

2. теперь вставим класс в форму

this.myTool = new SmToolBar();
this.Controls.AddRange(new System.Windows.Forms.Control[] { this.myTool});

Запускаем. Выключаем. Приземляемся.
Смотрим, в режиме Design. Ровно две кнопочки там в тулбаре.
Если три добавишь в рантайм, то три и в дизайн увидишь. Ну, и так далее.

Вопрос. Как глубоко лежит разгадка, какие подлости можно ожидать в будущем, можно ли осилить человеку VBAшного уровня развития, пределом развития которого являются квадратные уравнения и равенство модулей чисел -2 и 2? Или цифр?


22.12.03 18:41: Перенесено модератором из '.NET' — AVK
Re: Опять тулбары
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.03 17:34
Оценка:
Здравствуйте, sergueim, Вы писали:

S>Вопрос. Как глубоко лежит разгадка, какие подлости можно ожидать в будущем, можно ли осилить человеку VBAшного уровня развития, пределом развития которого являются квадратные уравнения и равенство модулей чисел -2 и 2? Или цифр?


Ты залепил добавление в конструктор. Он вызывается как в рантайме так и в дизайнтайме. Что ты еще хочешь?
... << RSDN@Home 1.0 beta 6a >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Опять тулбары
От: sergueim Россия  
Дата: 03.04.03 18:10
Оценка:
Здравствуйте, VladD2, Вы писали:

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


S>>Вопрос. Как глубоко лежит разгадка, какие подлости можно ожидать в будущем, можно ли осилить человеку VBAшного уровня развития, пределом развития которого являются квадратные уравнения и равенство модулей чисел -2 и 2? Или цифр?


VD>Ты залепил добавление в конструктор. Он вызывается как в рантайме так и в дизайнтайме. Что ты еще хочешь?


спасибо за обстоятельный ответ.
А что ещё вызывается как в рантайм, так и в дизайнтайм? И где это описано. И почему это плохо.
Re[3]: Опять тулбары
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.03 18:16
Оценка:
Здравствуйте, sergueim, Вы писали:

S>спасибо за обстоятельный ответ.

S>А что ещё вызывается как в рантайм, так и в дизайнтайм? И где это описано. И почему это плохо.

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

Лучше опиши что тебе нужно от дизантайма? И что не устраивает?
... << RSDN@Home 1.0 beta 6a >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Опять тулбары
От: sergueim Россия  
Дата: 03.04.03 18:40
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>Да почти все. В дизантайме создается полноценная копия твоего объекта. Другое дело, что поведение в дизантайме может быть иным. Так дизайнер перехватывает ввод пользователя, но это тоже можно изменить.


VD>Лучше опиши что тебе нужно от дизантайма? И что не устраивает?


Да, ничего особенного. Я старый фоксприст, но так как наш продукт медленно уничтожают, то перебегаю. У меня есть инструмент, с помощью которого пользователь активно участвует в создании ГУЯ и бизнес-правил. То есть он смотрит на экран и говорит вот здесь надо таблично вывести, а здесь радиокнопки, а здесь надо кнопку добавить. Всё это добавляется прямо в рабочей прорамме и сохраняется в конфигурационном файле, а програмист затвердив пишет либо дизайнером новый гуй, либо прописывает динамическое подключение и преобразование объектов гуя в те, которые нужны пользователю.
Запутанно?
Ну, представь ты пришел с черновиком продукта к пользователю. Быстренько прямо в работающем приложении создали конфигурацию. Пришли домой и переписали как нужно, можно вообще файл конфигурации по мэйлу получить и к пользователю вообще не ездить.
Но в фоксе я мог сказать, создав нужный гуй — сохрани как класс. А здесь?
Короче, если запутанно, то можно тему оставить. Только ссылки на особенности работы дизайнера и программного на него влияния будут оценены по достоинству.
Спасибо.
Re[5]: Опять тулбары
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.03 18:59
Оценка:
Здравствуйте, sergueim, Вы писали:

S>Ну, представь ты пришел с черновиком продукта к пользователю. Быстренько прямо в работающем приложении создали конфигурацию. Пришли домой и переписали как нужно, можно вообще файл конфигурации по мэйлу получить и к пользователю вообще не ездить.

S>Но в фоксе я мог сказать, создав нужный гуй — сохрани как класс. А здесь?

А здесь дизайнер сохраняет все настройки контролов в код или ресурсы (предпочитает в код). Можно сэмулировать запись этого дела в хмл. Но при этом придется написать немало кода. Ну, и помнить, что в дизантайме контрол тоже жив.

В твоем случае можно проверять не в дизайнтаме ли находится контрол:
if(this.DesignMode)
{
  ...
}


PS

Создать свой качественный дизайнер ГУЯ задача не из легки. Луче сначала почитать, о том как это делается в студии. Например, для понимания сериализации в студии можно почитать вот это: Customizing Code Generation in the .NET Framework Visual Designers (из MCDN-а к VS 2003). Так же стоит почитать мою статейку .Net – классы, компоненты и контролы из RSDN Magazine 2002 3.
... << RSDN@Home 1.0 beta 6a >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Опять тулбары
От: sergueim Россия  
Дата: 03.04.03 19:11
Оценка:
Здравствуйте, VladD2, Вы писали:



VD>А здесь дизайнер сохраняет все настройки контролов в код или ресурсы (предпочитает в код). Можно сэмулировать запись этого дела в хмл. Но при этом придется написать немало кода. Ну, и помнить, что в дизантайме контрол тоже жив.


VD>В твоем случае можно проверять не в дизайнтаме ли находится контрол:

VD>
VD>if(this.DesignMode)
VD>{
VD>  ...
VD>}
VD>


VD>PS


VD>Создать свой качественный дизайнер ГУЯ задача не из легки. Луче сначала почитать, о том как это делается в студии. Например, для понимания сериализации в студии можно почитать вот это: Customizing Code Generation in the .NET Framework Visual Designers (из MCDN-а к VS 2003). Так же стоит почитать мою статейку .Net – классы, компоненты и контролы из RSDN Magazine 2002 3.


спасибо.
Как бы тяжело не было, а создавать надо. Пользователь, который может редактировать интерфейс это совсем другой хороший пользователь.
Да и врмени экономия, пока с бумажки в компьютер, да еще разберись, что там на бумажке начиркали.
Всего хорошего.
Re[7]: Опять тулбары
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.03 19:24
Оценка:
Здравствуйте, sergueim, Вы писали:

Может тебе будет вот это интересно: ascContainer?

Работает и в Фоксе, и в дотнете, и в 6-ом Васике.
... << RSDN@Home 1.0 beta 6a >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Опять тулбары
От: sergueim Россия  
Дата: 03.04.03 19:26
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>Может тебе будет вот это интересно: ascContainer?


VD>Работает и в Фоксе, и в дотнете, и в 6-ом Васике.


спасибо, обязательно протестирую. Но создавать буду свой тул. Своя рубашка ближе к телу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.