Form.StartupPosition

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Form.StartupPosition

Сообщение Alexanbar » 20.11.2004 (Сб) 23:12

К сожалению, что свойство readonly. А хотелось бы при вызове формы методом Show , чтобы это свойство каким-либо способом было в одних случаях Manual, а в других- CenterOwner.
Форма находится в DLL и вызывается с помощью соответствующей функции.
Конечно, можно передавать вызывающую форму как параметр Object и координаты X, Y , если нужно вручную указать местоположение формы. А мне что-то лениво передавать лишние параметы только затем, чтобы рассчитать координаты для показа в центре. В связи с этим у меня возникла вот какая идея.
Когда я делаю Form2.Show , и при этом Form2.StartupPosition=CenterOwner, хитрый Basic откуда-то узнаёт, где находится центр формы Form1, которую я не указываю (т.е. Form2.Show , Form1)
Хотелось бы разузнать, как это он делает.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 20.11.2004 (Сб) 23:26

Ну, насколько я помню, центр можно вычислить примерно так:
me.move (Screen.Width \ 2) - (Me.Width \ 2), (Screen.Height \ 2) - (Me.Height \ 2)

А как уж это vb делает, мне не известно :D

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 21.11.2004 (Вс) 0:30

Имелось ввиду, что как определить, какая форма является OwnerForm, если я её не указываю:

Form2.Show

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 21.11.2004 (Вс) 0:55

Как говориться "Вопрос содержит 50% ответа", в данном случае он содержит 100%..
Если форма owner не указана, значит и нет ее :wink:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 21.11.2004 (Вс) 11:00

Форма есть, и очень успешно определяется её центр.

В проекте типа StandardExe вызывается функция:

SelectOption аргументы

В DLL :

Public function SelectOption(аргументы) as long
....
frmOption.Show vbmodal
...

end function



При этом пока у формы frmOption свойство StartupPosition=CEnterOwner
Пробовал перамещать форму из проекта Exe по эрану - frmOption отображается в её центре

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

Сообщение Ennor » 21.11.2004 (Вс) 11:09

Видимо, в качестве владельца выбирается та форма, из кода которой был произведен вызов SelectOption(). Попробуйте перенести этот вызов в BAS-модуль...

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 21.11.2004 (Вс) 21:34

Безусловно. Вопрос заключается в том, чтобы извлечь размеры этой формы на приёмном конце, т.е. в DLL, не передавая её как object.


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

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

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

    TopList