Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Проблема с popup-меню Добавлено: 28.09.04 13:41  

Автор вопроса:  Comanche
По-моему, это старые грабли. Но всё равно не помню, как с ними бороться. Смысл такой: есть форма с меню, загружаем форму, по щелчку на теле формы вызываем это меню через PopupMenu. В появляющемся меню - единственный пункт: "Показать вторую форму". Жмём его - появляется вторая форма, кстати тоже имеющая своё меню. Так вот, если эта вторая форма вызвана модально (Show vbModal), то из её кода никаким боком не удастся вызвать её меню через PopupMenu!

Наверное, запутанно изложил... если непонятно, то могу демо-проект выложить. Хотя это очень старые грабли, имхо.

Я знаю, что в каждый момент в системе может отображаться только одно всплывающее ("popup") меню. И похоже, что при модальном отображении второй формы система "думает", что первое popup-меню ещё не ликвидировано. Пробовал использовать таймер - по фигу. Как-то ведь это решалось, кажется...

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #1
Добавлено: 28.09.04 13:46
Почему-же невозможно!!! Очень даже просто и возможно!!! Вот надо только во второй форме указать полный путь к меню.

Пример:
PopUpMenu Form1.Menu1


а не popupmenu menu1

Ответить

Номер ответа: 2
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #2 Добавлено: 28.09.04 13:49
Всё-таки я изложил запутанно, раз ты не понял.
Поясняю:
На второй форме нужно отображать ЕЁ ЖЕ меню, а не меню из первой формы.

Ответить

Номер ответа: 3
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #3 Добавлено: 28.09.04 14:03
В общем я выложил проект, демонстрирующий описанную проблему, вот сюда:

http://formtoini.narod.ru/Downloads/PopupMenu_Problem.zip

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 28.09.04 19:06
VB этого нельзя... если так сделаешь, у тебя вылезет ошибка... Попробуй на АПИ меню и через TrackPopupMenuEx его вызвать... Сработать должно...

Ответить

Номер ответа: 5
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #5 Добавлено: 28.09.04 19:38
2sne:
если так сделаешь, у тебя вылезет ошибка

Ошибка не вылазит - просто меню не отображается и всё. См. проект (по ссылке).

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 28.09.04 20:16
Я в курсе... но вызвать то его все-же можно, поверь мне, я этого добивался ;)

Ответить

Номер ответа: 7
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #7 Добавлено: 28.09.04 23:33
Через АПИ можно, это даже не обсуждается. Вообще всё можно через АПИ :)) Я-то точно помню, что можно было как-то извернуться и уйти от описанной проблемы только средствами VB.

но вызвать то его все-же можно, поверь мне, я этого добивался


Да поздравляю я тебя с этим отрадным фактом, и просто от души за тебя радуюсь. И верю, конечно же, твоим словам :)) Однако, надо бы поделиться знанием!

Ответить

Номер ответа: 8
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #8
Добавлено: 28.09.04 23:37
Боюсь что в твоем случае это поможет не многим, т.к. у меня были модальная форма и иконка в области уведомлений, но фишка то не в этом, все события то все равно получаются на форме... Дело в том что при таком раскладе меню так же не покажется а вот ошибка VB вылезет... Знание знанием но оно бесполезно :(

Ответить

Номер ответа: 9
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #9
Добавлено: 29.09.04 10:54
Я те на мыло кинул! Смотри! А твой примерчик сейчас скачаем!!!

А вот пока:

Form1.frm
_____________
VERSION 5.00
Begin VB.Form Form1
   Caption = "Form1"
   ClientHeight = 3195
   ClientLeft = 165
   ClientTop = 735
   ClientWidth = 4680
   LinkTopic = "Form1"
   ScaleHeight = 3195
   ScaleWidth = 4680
   StartUpPosition = 3 'Windows Default
   Begin VB.Menu mnu
      Caption = "Menu 1"
      Begin VB.Menu mnuItem1
         Caption = "SUb item 1"
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub mnuItem1_Click()
Form2.Show vbModal
End Sub


Form2.frm
_______________
VERSION 5.00
Begin VB.Form Form2
   Caption = "Form2"
   ClientHeight = 3195
   ClientLeft = 165
   ClientTop = 735
   ClientWidth = 4680
   LinkTopic = "Form2"
   ScaleHeight = 3195
   ScaleWidth = 4680
   StartUpPosition = 3 'Windows Default
   Begin VB.Menu menu
      Caption = "&menu"
      Begin VB.Menu mnuItem1
         Caption = "Item 1"
      End
   End
End
Attribute VB_Name = "Form2"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Form_Click()
PopupMenu menu
End Sub

Project1.vbp
________________
Type=Exe
Form=Form1.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\WINNT\system32\stdole2.tlb#OLE Automation
Form=Form2.frm
Startup="Form1"
Command32=""
Name="Project1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName=""Azerenerji" JSC"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1

[MS Transaction Server]
AutoRefresh=1

Ответить

Номер ответа: 10
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #10 Добавлено: 29.09.04 14:19
2RA:
в присланном примере первое меню не вызывается как "popup-menu" - вот потому оно у тебя и работает. Вызови его через PopupMenu - и получишь мою проблему.

Ответить

Номер ответа: 11
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #11
Добавлено: 29.09.04 15:16
Чудо! У меня не вызвается никакой збой! :? Просто у меня не открывает меню :)

МОжет у меня сервис пак 5-ый :)

По я придумаю как его обойти!!!
ТРудимся!!! Удачи всем!

Ответить

Номер ответа: 12
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #12
Добавлено: 29.09.04 15:49
А я нашел в чём проблема!
ПРоблема в том что, когда форма загружается модально, то все операции на главной форме (форма-мама) останваливаются и действие переходит на дочерную, поетому он и не выводится во втором окне. Потому что ПопАп меню вызываеся лиш раз и не законцив свой сеанс не может вызватся в другом месте! ПРЕДЛАГАЮ ВОСПОЛЬЗОВАТСЯ ТАЙМЕРОМ!
Когда кликнем на меню, он активизируется (и начнёт считывать) когда он досчитает, наше меню законцит свое действие и запустит действие с таймера! Я код вышлю сейчас!

Ответить

Номер ответа: 13
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #13
Добавлено: 29.09.04 15:51
У МЕНЯ ПОЛУЧИЛОСЬ!!!

Но главное, не забудте после выполнения функции отключить таймер!!! А-то он заного вызовет второе окно!

ВОТ ПРИМЕР!!!

[CODE]Private Sub Form_Click()
PopupMenu mnu1
End Sub

Private Sub Sub_Click()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Form2.Show vbModal, Form1
Timer1.Enabled = False
End Sub[/CODE]

Ответить

Номер ответа: 14
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #14
Добавлено: 29.09.04 15:54
ДА забыл указать! Sub у меня название суб-меню (подменю) главного меню, который называется mnu1

Я ГЕНИЙ :))

Ответить

Номер ответа: 15
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #15
Добавлено: 07.10.04 10:57
2 RA: Пожалуйста, прочитай курс русского языка... А-то такое ощущение,
что уроки русского ты в школе упорно прогуливал :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам