Как вывести вторую форму рядом с контролом первой (MDI)?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Как вывести вторую форму рядом с контролом первой (MDI)?

Сообщение Rojohn » 23.08.2005 (Вт) 22:03

Подскажите... Есть две MDIChild формы: на одной есть TextBox, а другая маленькая и квадратная. Надо вывести маленькую квадратную, например, над правым верхним углом TextBox первой формы. Самое непонятное: форма с TextBox в это время должна быть Enabled=False и размеры её не должны меняться! Я всё реализовал, но когда вывожу маленькую форму она растягивается на всю родительскую MDI (хотя её начальное состояние Normal), а форма с TextBox становится из Maximized в Normal и только потом всё происходит как надо... Как этого избежать?

И вообще, как узнать точные координаты TextBox (Left и Top), не зная в скольких Parent-ах он находится?

Спасибо заранее!

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

Re: Как вывести вторую форму рядом с контролом первой (MDI)?

Сообщение Ennor » 24.08.2005 (Ср) 0:04

Rojohn писал(а):Есть две MDIChild формы...

Либо маленькая и квадратная перестает быть MDIChild, либо никак. Ну или через кучу извратов, но все равно ненадежно.

Насчет координат окна - относительно чего тебе они нужны? Начала координат десктопа или начала координат главного родительского окна (т.н. top level window)? Вообще, в API есть куча функций по работе с такими координатными системами - GetWindowRect(), например. Главное - не забывать, что практ. все апишки в таком случае возвращают координаты в пикселях, а не в твипах :).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.08.2005 (Ср) 4:31

А у меня работает... Неизменяемая в размерах MDI-дочка... Без извратов вообще, просто работает...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.08.2005 (Ср) 8:03

GSerg писал(а):Неизменяемая в размерах MDI-дочка... Без извратов вообще, просто работает...

И при этом находится вне MDI-формы? :)
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.08.2005 (Ср) 8:12

Отнюдь :)
Открой мой многострадальный проект, ткни "Новая заявка" :)

Правда, максимизованные от этого действительно делаются Нормал. Но фиксированная не растягивается никуда :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

По поводу вопроса..

Сообщение Rojohn » 24.08.2005 (Ср) 10:32

Открой мой многострадальный проект, ткни "Новая заявка"

Мона посмотреть?

А что, нормала вместо максимайзед никак не избежать?

Насчет координат окна - относительно чего тебе они нужны? Начала координат десктопа или начала координат главного родительского окна (т.н. top level window)? Вообще, в API есть куча функций по работе с такими координатными системами - GetWindowRect(), например. Главное - не забывать, что практ. все апишки в таком случае возвращают координаты в пикселях, а не в твипах


Скорее всего от Me.Width и Me.Height (большей формы). Жаль, что её нельзя зафиксировать. А вообще можно и не делать (в крайнем случае) маленькую форму MDIChild, но простая форма у меня почему-то вообще скачет как хочет... Как? А насчёт GetWindowRect() надобен синтаксис, так как пока я в API слабоват :) Но лучше, если бы в твипах... Нет аналога в Твипах? :?

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

Шаману...

Сообщение Rojohn » 24.08.2005 (Ср) 11:16

GSerg

Ну как насчёт посмотреть на проект? :wink:


Или хотя бы на процедуры открытия , ресайза и масштабирования по месту формы... :?

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

...

Сообщение Rojohn » 24.08.2005 (Ср) 11:34

Решил не делать её MDIChild - так удобнее. Но осталась проблема с координатами: как расчитать, допустим Left от края формы, не зная количество фреймов, PictureBox-сов и т.д., окружающих искомый TextBox :?: :!: Без этого всё портится.... вся идея:)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.08.2005 (Ср) 12:31

Нет, нельзя, ибо коммерческий и относительно большой :)

Но там ничего сложного.
Просто MDI-дочка, у которой borderstyle fixed single, без каких-либо других наворотов.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

а...

Сообщение Rojohn » 24.08.2005 (Ср) 12:34

Да... каца я даже так пробовал:) Но я решил всё проще:) просто сделал её не MDIChild и координаты задаю с внешней формы (расчитываю). Вроде всё пашет. Плохо, конечно, что не MDI, так что вопрос насчёт MDI остаётся открытым :wink: (т.е. чтобы большая форма не "нормализировалась"...)

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

И всё-таки...

Сообщение Rojohn » 25.08.2005 (Чт) 2:41

И всё-таки, почему когда предыдущая форма Maximized, то и следующая открывается Maximized. То же самое и Normal. Неужели нельзя открыть следующую форму в независимом состоянии:?:
Если честно, то у меня даже форма с borderstyle fixed single сначала выходит Maximized и только потом её можно уменьшить как нада....
Может там не только в borderstyle fixed single дело :?

Может есть выход???


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList