Страница 1 из 1
вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 13:20:12
Alpout
как сделать что бы все последующие формы не важно от назначения их не могли бы покинуть пределы основной формы?
Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 13:52:05
vem566
В обработчике события CreateForm считать координаты и размеры главной формы и привести в соответствии с пожеланиями координаты и размер создаваемой.
Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 13:57:06
Alpout
хмм, а можно пример?
Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 14:54:09
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 главной формы синхронно перемещать все открытые вторичные.
Лучше такие вопросы задавать на форуме программистов.
Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 15:05:47
uk8amk
Если я правильно понял вопрос, то вам следует почитать про MDI-формы, в частности о свойстве MDIChild.
Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 15:07:10
ploop
Действительно, судя по вопросу автору надо MDI, но он не знает, что это такое

Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 15:10:55
vem566
Похоже, что так. Поэтому и указал
vem566 писал(а):Справедливо к модальным формам.
А расписывать построение дочерних форм в лом.
Хотя не факт, что нужно именно MDI.
Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 15:12:20
Alpout
знаю что такое mdiform но ее свойства не полностью входит в мои требования. например отсутствует borderstyle

Чето не нашел обработчик событий, такие как formcreate, formmove...там есть Private Sub Form_Load(), Private Sub Form_Unload(Cancel As Integer) итд все полистал...но все равно суть понял, спасибо!
Re: вопрос программистам по visual basic 6
Добавлено: Ср фев 06, 2013 15:17:27
vem566
Сталкивался неоднократно с такими ситуациями. Где-то достаточно MDI, а где-то нет. Или нужна в рамках одной программы обособленная форма.
Re: вопрос программистам по visual basic 6
Добавлено: Чт фев 07, 2013 17:11:06
Alpout
ВЫВОД: короче не получилось внедрить форм1 в форму2, как понял, что работая с различными процедурами и обработчиками событий-форм1 никак не следует по "законам" форм2, поскольку-постольку обе они "внешние" формы, воот впринципе весьма доволен используя "внутренний" объект под именем Фрейм

, нет-нет вы не думайте, что я до этого не знал )))), форм1 мне нравилось тем, что ее можно было отключить "крстиком")))). воще хотелось б сделать tools(инструменты) с кнопочками и картинками итд итп..., ну-с если чо то самое идеально, тогда реально отпишусь)))
ПС:
Вот код работы с фреймом:
Private Sub Form_Resize()
tools.Top = Toolbar1.Height
tools.left = Me.ScaleWidth - tools.Width ' ðàçìåùàåì tools âïðàâî
End Sub
Re: вопрос программистам по visual basic 6
Добавлено: Чт фев 07, 2013 17:44:19
Мурик
Alpout писал(а): не получилось внедрить форм1 в форму2
Что там сложного?
Даже следить за позицией окон не нужно - можно возложить на винду.
Re: вопрос программистам по visual basic 6
Добавлено: Пт фев 15, 2013 10:27:53
Alpout
Мурик писал(а):Alpout писал(а): не получилось внедрить форм1 в форму2
Что там сложного?
Даже следить за позицией окон не нужно - можно возложить на винду.
Малорик))) А как сделал?
Re: вопрос программистам по visual basic 6
Добавлено: Пт фев 15, 2013 10:40:40
Мурик
Alpout писал(а):А как сделал?
Есть такая WinAPI функция - SetParent() называется.