Координаты MIDI Child формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vasiliy
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 03.10.2005 (Пн) 14:11

Координаты MIDI Child формы

Сообщение vasiliy » 02.11.2005 (Ср) 9:58

Подскажите как получить "абсолютные" координаты MidiChild формы, нужно для того чтоб открыть другую форму модально но рядом с кнопкой которую нажал юзер.
Метод me.Left возвращает значение относительно окна основной формы.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 02.11.2005 (Ср) 10:06

me.Left + me.width
:lol:
Душа болит... А лечишь её - печень болит!

vasiliy
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 03.10.2005 (Пн) 14:11

Сообщение vasiliy » 02.11.2005 (Ср) 10:09

echo писал(а):me.Left + me.width
:lol:

Да а если пользователь развернет Child форму на все окно, то форма откроется вне области экрана, а если еще учесть, что она открывается модально, и получаем зависшую программу...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 02.11.2005 (Ср) 11:01

Во-первых, не MIDI, а MDI. Во-вторых, окно с атрибутом MDI-Child очень ограничено в этом вопросе - оно не открывается модально, и никакое окно не может быть модальным относительно него.

Ну а если ты откроешь диалог, модальный относительно MDI-формы, то его ты всегда сможешь предварительно отпозиционировать так, чтобы он не уезжал за пределы экрана.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 02.11.2005 (Ср) 11:05

Ennor tnx
а я тут уж хотел засомневаться.
Душа болит... А лечишь её - печень болит!

vasiliy
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 03.10.2005 (Пн) 14:11

Сообщение vasiliy » 02.11.2005 (Ср) 11:10

Я сейчас таки и делаю:
Код: Выделить всё

    frmCalendar.Left = Me.Left + cmdData1.Left + 220
    frmCalendar.Top = Me.Top + cmdData1.Top + 1180

однако если на форме появляется еще toolBar, то это совсем другие координаты. что же получается, нужно еще ставить условие наличия различных ToolBar`ов!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 02.11.2005 (Ср) 12:49

    1. Что именно является Me в данном примере?
    2. В позиции формы frmCalendar учитывается позиция некоего cmdData1. А как ее координаты вычисляются - не от ScaleHeight / ScaleWidth, часом?

vasiliy
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 03.10.2005 (Пн) 14:11

Сообщение vasiliy » 02.11.2005 (Ср) 13:41

Ennor писал(а):
    1. Что именно является Me в данном примере?
    2. В позиции формы frmCalendar учитывается позиция некоего cmdData1. А как ее координаты вычисляются - не от ScaleHeight / ScaleWidth, часом?

Me - это Форма MDIChild, а cmdData1 - это положение кнопки на форме.
Нужно расположить форму рядом с нажатой кнопкой.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Та же...

Сообщение Rojohn » 02.11.2005 (Ср) 14:03

Проблему с календарем я решил проще:
Просто вставил его на ту же форму, при потере фокуса он исчезает, а при клике на него значение через Format попадает в текстовое окно. Всё работает без проблем! :wink:

vasiliy
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 03.10.2005 (Пн) 14:11

Сообщение vasiliy » 02.11.2005 (Ср) 17:02

Дело в том, что на этой форме не толдько календарь...

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 02.11.2005 (Ср) 23:04

Тогда просто делаем Frame или PictureBox вместо формы и на ней кнопку отмены. Ну а остальное, пока не нажата эта кнопка, Enabled=False. Лучше тоже работать с фреймами. Для дезактивации некоторых кнопок на основной форме я использовал переменную Boolean. Ну и в таком духе...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 128

    TopList