вопрос программистам по visual basic 6
- Сообщения: 77
- Зарегистрирован: Вт сен 27, 2011 09:27:40
как сделать что бы все последующие формы не важно от назначения их не могли бы покинуть пределы основной формы?
- Реклама
В обработчике события CreateForm считать координаты и размеры главной формы и привести в соответствии с пожеланиями координаты и размер создаваемой.
- Сообщения: 77
- Зарегистрирован: Вт сен 27, 2011 09:27:40
Справедливо к модальным формам.
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 главной формы синхронно перемещать все открытые вторичные.
Лучше такие вопросы задавать на форуме программистов.
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 главной формы синхронно перемещать все открытые вторичные.
Лучше такие вопросы задавать на форуме программистов.
Если я правильно понял вопрос, то вам следует почитать про MDI-формы, в частности о свойстве MDIChild.
- Реклама
Действительно, судя по вопросу автору надо MDI, но он не знает, что это такое 
Похоже, что так. Поэтому и указал
Хотя не факт, что нужно именно MDI.
А расписывать построение дочерних форм в лом.vem566 писал(а):Справедливо к модальным формам.
Хотя не факт, что нужно именно MDI.
- Сообщения: 77
- Зарегистрирован: Вт сен 27, 2011 09:27:40
знаю что такое mdiform но ее свойства не полностью входит в мои требования. например отсутствует borderstyle
Чето не нашел обработчик событий, такие как formcreate, formmove...там есть Private Sub Form_Load(), Private Sub Form_Unload(Cancel As Integer) итд все полистал...но все равно суть понял, спасибо!
Последний раз редактировалось Alpout Ср фев 06, 2013 15:22:41, всего редактировалось 1 раз.
Сталкивался неоднократно с такими ситуациями. Где-то достаточно MDI, а где-то нет. Или нужна в рамках одной программы обособленная форма.
- Сообщения: 77
- Зарегистрирован: Вт сен 27, 2011 09:27:40
ВЫВОД: короче не получилось внедрить форм1 в форму2, как понял, что работая с различными процедурами и обработчиками событий-форм1 никак не следует по "законам" форм2, поскольку-постольку обе они "внешние" формы, воот впринципе весьма доволен используя "внутренний" объект под именем Фрейм
, нет-нет вы не думайте, что я до этого не знал )))), форм1 мне нравилось тем, что ее можно было отключить "крстиком")))). воще хотелось б сделать tools(инструменты) с кнопочками и картинками итд итп..., ну-с если чо то самое идеально, тогда реально отпишусь)))
ПС:
Вот код работы с фреймом:
Private Sub Form_Resize()
tools.Top = Toolbar1.Height
tools.left = Me.ScaleWidth - tools.Width ' ðàçìåùàåì tools âïðàâî
End Sub
ПС:
Вот код работы с фреймом:
Private Sub Form_Resize()
tools.Top = Toolbar1.Height
tools.left = Me.ScaleWidth - tools.Width ' ðàçìåùàåì tools âïðàâî
End Sub
- Сообщения: 77
- Зарегистрирован: Вт сен 27, 2011 09:27:40
Малорик))) А как сделал?Мурик писал(а):Что там сложного?Alpout писал(а): не получилось внедрить форм1 в форму2
Даже следить за позицией окон не нужно - можно возложить на винду.
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Есть такая WinAPI функция - SetParent() называется.Alpout писал(а):А как сделал?


