Форма поверх других форм.

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

Форма поверх других форм.

Сообщение Hawk[BZ] » 14.02.2004 (Сб) 12:13

Значит так... Допустим... Есть основная форма Form1 и второстепенная Form2. Как сделать так чтобы основная форма не закрывала второстепенную при нажатии на нее (Form1), т.е. чтобы Form2 всегда оставалось свреху, даже если кликнуть на первую форму или даже давить на ней на кнопки и воодить текст. И чтобы При сорачивании-разворачивании она опять оставалась сверху.

@LLES
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 13.02.2004 (Пт) 21:03
Откуда: Джормания, Фрайберг.

Re: Форма поверх других форм.

Сообщение @LLES » 14.02.2004 (Сб) 13:45

Hawk[BZ] писал(а):Значит так... Допустим... Есть основная форма Form1 и второстепенная Form2. Как сделать так чтобы основная форма не закрывала второстепенную при нажатии на нее (Form1), т.е. чтобы Form2 всегда оставалось свреху, даже если кликнуть на первую форму или даже давить на ней на кнопки и воодить текст. И чтобы При сорачивании-разворачивании она опять оставалась сверху.


Насколько я знаю, есть несколько способов, но этот всегда действенный. :)

Declare Function SetWindowPos& Lib "user32" (ByVal hwnd&, ByVal WndInsertAfter&, ByVal x&, ByVal y&, ByVal cx&, ByVal cy&, ByVal wFlags&)


Public Const SWP_SHOWWINDOW = &H40
Public Const HWND_TOPMOST = -1



В процедуре событий Resize прописываешь


SetWindowPos Form2.hwnd, HWND_TOPMOST, Left / Screen.TwipsPerPixelX, Top / Screen.TwipsPerPixelY, Width / Screen.TwipsPerPixelX, Height / Screen.TwipsPerPixelY SWP_SHOWWINDOW

Потом считаешь координаты и все красиво в функцию.(она их ждет) :):) Удачи.
Алексей.
Ведь мог бы стать программистом. А мог бы и приличным человеком!

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 23.02.2004 (Пн) 12:38

Я напишу как сделать, чтобы вторая форма была всегда сверху первой.
За исключением, когда фома сворачивается:

Пусть певая это Form1, вторая - Form2.
На первой сощдай кнопку и её код:
Код: Выделить всё
[color=green]Private Sub Command1_Click()
  Form2.Show 2, Me
End Sub[/color]


И всё, без там всяких API функций.
А если хоч, чтобы твоя форма была вобще поверх всех форм, то по ищи в нете.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.02.2004 (Пн) 12:43

Знающий писал(а):А если хоч, чтобы твоя форма была вобще поверх всех форм, то по ищи в нете.


Зачем в инете? Просто посмотрите в эту тему:
http://bbs.vbstreets.ru/viewtopic.php?t=5737

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 10.03.2004 (Ср) 13:04

Amed писал(а):Зачем в инете? Просто посмотрите в эту тему:
http://bbs.vbstreets.ru/viewtopic.php?t=5737

:lol:
Если заядлый программер зайдет в этот топик, то застрянет в вечном цикле... (как в анекдоте про шампунь и программера)

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 10.03.2004 (Ср) 14:07

Знающий писал(а): Form2.Show 2, Me


Вообще-то, чтобы не вводить программеров в заблуждение всякими цифрами совершенно непригодными для запоминания, разработчики VB придумали специальные константы - например, vbModal и vbModeless. И, к слову сказать, vbModal = 1. Вызов "Form2.Show 2, Me" будет ругаться на неправильный аргумент...
Правильный вызов выглядит
Код: Выделить всё
Form2.Show vbModal, Me

Второй параметр в данном случае можно опустить.

Форма, которая держит на себе фокус и не пускает на другие формы нзывается, соответствено, модальной (Modal)
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)


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

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

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

    TopList  
cron