вопрос программистам по visual basic 6

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Открыл глаза
Сообщения: 77
Зарегистрирован: Вт сен 27, 2011 09:27:40

Сообщение Alpout »

как сделать что бы все последующие формы не важно от назначения их не могли бы покинуть пределы основной формы?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4752
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

В обработчике события CreateForm считать координаты и размеры главной формы и привести в соответствии с пожеланиями координаты и размер создаваемой.
Реклама
Открыл глаза
Сообщения: 77
Зарегистрирован: Вт сен 27, 2011 09:27:40

Сообщение Alpout »

хмм, а можно пример?
Друг Кота
Аватара пользователя
Сообщения: 4752
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

Справедливо к модальным формам.

Form1 - главная форма
Form2 - создаваемая

при событии Form2.Create

Form2.With = Form1.With - 20 // Создаваемая форма на 20 пикселей
Form2.Heigth = Form1.Heigth - 20 // меньше главной

Form2.Left = Form1.left +10 // Смещаем создаваемую форму по центру главной по горизонтали
Form2.Top = Form1.Top + 10 // не помню, откуда считается вертикаль (сверху или снизу)
// соответственно или плюс или минус 10 пикселей

и в обработчике события Form2.FormMove

// блокирование перемещения выше главной формы
if Form2.Top < Form1.Top then Form2.Top = Form1.Top

// блокирование перемещения левее главной формы
if Form2.Left < Form1.Left then Form2.left = Form1.left

// блокирование перемещения ниже главной формы
if Form2.Top+Form2.With > Form1.Top+Form1.With then
Form2.Top = Form1.Top + (Form1.With - Form2.With)

// блокирование перемещения правее главной формы
if Form2.Left+Form2.Heogth > Form1.Left+Form1.Heigth then
Form2.left = Form1.leftp + (Form1.Heigth - Form2.Heigth)

При перемещении главной формы, вторая может остаться на прежнем месте и оказаться за пределами главной.
Для исключения нужно в обработчике FormMove главной формы синхронно перемещать все открытые вторичные.

Лучше такие вопросы задавать на форуме программистов.
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Если я правильно понял вопрос, то вам следует почитать про MDI-формы, в частности о свойстве MDIChild.
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Действительно, судя по вопросу автору надо MDI, но он не знает, что это такое :)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4752
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

Похоже, что так. Поэтому и указал
vem566 писал(а):Справедливо к модальным формам.
А расписывать построение дочерних форм в лом.
Хотя не факт, что нужно именно MDI.
Открыл глаза
Сообщения: 77
Зарегистрирован: Вт сен 27, 2011 09:27:40

Сообщение Alpout »

знаю что такое mdiform но ее свойства не полностью входит в мои требования. например отсутствует borderstyle ;) Чето не нашел обработчик событий, такие как formcreate, formmove...там есть Private Sub Form_Load(), Private Sub Form_Unload(Cancel As Integer) итд все полистал...но все равно суть понял, спасибо!
Последний раз редактировалось Alpout Ср фев 06, 2013 15:22:41, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 4752
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

Сталкивался неоднократно с такими ситуациями. Где-то достаточно MDI, а где-то нет. Или нужна в рамках одной программы обособленная форма.
Открыл глаза
Сообщения: 77
Зарегистрирован: Вт сен 27, 2011 09:27:40

Сообщение Alpout »

ВЫВОД: короче не получилось внедрить форм1 в форму2, как понял, что работая с различными процедурами и обработчиками событий-форм1 никак не следует по "законам" форм2, поскольку-постольку обе они "внешние" формы, воот впринципе весьма доволен используя "внутренний" объект под именем Фрейм :), нет-нет вы не думайте, что я до этого не знал )))), форм1 мне нравилось тем, что ее можно было отключить "крстиком")))). воще хотелось б сделать tools(инструменты) с кнопочками и картинками итд итп..., ну-с если чо то самое идеально, тогда реально отпишусь)))
ПС:
Вот код работы с фреймом:

Private Sub Form_Resize()
tools.Top = Toolbar1.Height
tools.left = Me.ScaleWidth - tools.Width ' ðàçìåùàåì tools âïðàâî
End Sub
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Alpout писал(а): не получилось внедрить форм1 в форму2
Что там сложного?
Даже следить за позицией окон не нужно - можно возложить на винду.
Вложения
Form.zip
(12.66 КБ) 194 скачивания
Открыл глаза
Сообщения: 77
Зарегистрирован: Вт сен 27, 2011 09:27:40

Сообщение Alpout »

Мурик писал(а):
Alpout писал(а): не получилось внедрить форм1 в форму2
Что там сложного?
Даже следить за позицией окон не нужно - можно возложить на винду.
Малорик))) А как сделал?
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Alpout писал(а):А как сделал?
Есть такая WinAPI функция - SetParent() называется.
Ответить

Вернуться в «Интеграция с ПК»