Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Форма в форме  (Прочитано 5696 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 30-10-2006 16:23 » 

Мужики, в голове что-то созрело, но еще не понял что, поэтому возможно сейчас вы прочтете шокирующий вопрос, но тем не менее.
Есть форма, на ней располагаем радиобатоны 4-5 штук. В зависимости от того, какой радиобаттон будет выбран пользователь будет вводить определнные параметры. Но стоит отметить , ч при это у всех четырех есть как общие параметры, так и отличающиеся.
Я хочу спросить как бы это правильнее и красивее (с точки зрения реализации, а не картинок) в позициях ООП и .НЕТ реализовать.
У меня несколько идей, сейцчаас выскажу, надеюсь на то, что вы подскажите наиболее правильный путь.
Итак, идея 1 самая банальная.
В зависимости от того, какой радиобаттон выбран жобавлять на эту же форму дополнительный контролы и убирать ненужные. Не решил еще как делать, совсем убирать их из списка контролов или делать просто невидимыми.
идея №2. В зависимости от того, какой радиобаттон выбран создавать новое окно с необходиимыми кол-вами контролов. Чем эта идея меня привлекает. Она мне кажется наиболее верной с точки зрения ООП. Формы - это ведь классы. Я могу организовать иерархию этих классов. в зависимости от того, какой контитрол выбран, будет создаваться  форма, дочерняя от необходиомго класса.
Идея №3 является симбиозом первой и второй, и я не знаю как ее воплотить. В глове такая идея, что как только выбран нцжный контрол создается класс дочерний от необходимомго и в этой же форме, где и радиобаттоны появляются необходимые контролы для ввода. Целью является то, что не хочется как-то нагромождать экран лишними окнами, почему не отображать все в одном. Но вот как это правильно сделать? Есть одна идея, что типа создаю я форму и затем отображаю ее на главной форме вместе с ее контролами, при этом визуально этого пользователь не видит, ему кажется, что окно одно и на ней появились новые контролы. Дочерняя форма (которая на форме главной) должна принимать такие события как onPaint и подобые.Не предстьавляю как это сделать, но и может это как-то делается по-другому, а не именно "форма в форме".
Записан

ещё один вопрос ...
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 30-10-2006 18:24 » 

свойство диалога(-контрола)  WS_CHILD + отсутствие (WS_BORDER и WS_CAPTION) - решит ствою проблему )  Подокно будет как контрол, у которого не видно границ и который низя таскать.
Записан

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 30-10-2006 20:02 » 

Вообще, чтобы каждый вариант смотрелся красиво, (если размещение элементов сложное) его выравнивают на отдельной панели (Panel), а сами панели делают невидимыми и кладут стопкой друг на друга, включая видимость каждой в соответствии с выбором радиокнопки. Если же элементы простые, то можно их программно добавлять выравнивать при смене радиокнопки. Если элементы однотипные, то сами элементы остаются неизменными, а меняются лишь подписи к ним и, соответственно, их смысл в каждом режиме (хотя не очень красиво в коде смотрится, особенно при разной логике событий одного контрола в разных режимах). В случае с панелями, на которых много повторяющихся частей, можно создать собственный подкласс панели с размещёнными общими элементами, а затем от него наследовать все прочие варианты.

Ещё есть в природе TabControl, но у него несколько иной смысл.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 31-10-2006 06:04 » 

Цитата
В случае с панелями, на которых много повторяющихся частей, можно создать собственный подкласс панели с размещёнными общими элементами, а затем от него наследовать все прочие варианты.
Ты знаешь, по-моему это самый подходящий вариант. Все вроде как раз так, как и хотелось. Спасибо большое.
Записан

ещё один вопрос ...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines