Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


VB5-bugg, popupmenu?

Postades av 2003-06-13 21:55:47 - Gabriel Karlsson, i forum visual basic - allmänt, Tråden har 4 Kommentarer och lästs av 460 personer

Ibland kan man sitta hur länge som helst och slita sig i håret över hur dåligt ens kod fungerar, när det i själva verket inte är ens eget fel. Jag har ett skumt fenomen som jag vill veta om någon, 1) känner till, och/eller 2) har lösning på.

Enkel beskrivning:
Jag har två fönster, form1 och form2.
I form1 har jag en meny och två knappar. Menyn heter mnuMeny och har ett menyalternativ som heter mnuMenyalternativ, och som har en kod som öppnar form2 (form2.show 1).
Knapp1 öppnar menyn med popup-kommandot (popupmenu mnuMeny) och knapp2 länkar direkt till menyalternativet (mnuMenyalternativ_Click)

I form2 har jag en knapp och en meny. När man klickar på knappen ska menyn komma upp med popupmenu-kommandot.

Nu kommer det roliga.
* Om jag i form1 klickar på knapp2, som ju går menyalternativet, öppnas form2, och om jag där klickar på knappen så visas popupmenyn.
* Om jag i form1 klickar på knapp1, som ju först visar popupmenyn, och därefter klickar på menyalternativet, som öppnar form2, så öppnas form2. Men om jag där klickar på knappen så får jag inte upp popupmenyn.

---

Hur kan detta vara? Kan jag inte få fram en popupmeny i det nya fönstret för att det fönstret öppnades via en popupmeny? Hur jag än vrider och vänder på det så blir det på det här viset. jag har provat att gömma och disabla form1's popupmeny innan form2 öppnas, men det hjälper inte.

Det enda som hjälper är om jag öppnar form2 med form2.show 0 ... men jag vill inte att man ska kunna använda programmet bakom form2.

Eh? (tips, förslag, funderingar?)

*förvirrad*


Svara

Sv: VB5-bugg, popupmenu?

Postades av 2003-06-13 23:57:59 - Andreas Hillqvist

Klassisk problem. Det beror på att du inte stänger menyn. Eftersom du öppnar fönstret modalt i Click eventet. Lämnar koden inte Click eventet och frigör menyn.

Exempel för att återskapa felet:
<code>
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button And vbRightButton Then
PopupMenu mnuPopUp, vbPopupMenuRightButton
End If
End Sub

Private Sub mnuPopUpNew_Click()
Dim frmForm As Form1
Set frmForm = New Form1
frmForm.Show vbModal
End Sub
</code>
Menyn kommer bara fungera på första formuläret.

Finns "enkla" två lösningar.

Använd flaggor. T.Ex:
<code>

Enum PopUpAction
paCanceled = 0
paNew = 1
End Enum

Private mPopUpAction


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button And vbRightButton Then
mPopUpAction = paCanceled

PopupMenu mnuPopUp, vbPopupMenuRightButton

Select Case mPopUpAction
Case paNew
Dim frmForm As Form1
Set frmForm = New Form1
frmForm.Show vbModal
End Select
End If
End Sub

Private Sub mnuPopUpNew_Click()
mPopUpAction = paNew
End Sub
</code>
Vilket jag rekomenderar och tycker är snyggast.<br>
<br>
<br>
Eller så kan du använda en timer:
<code>
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button And vbRightButton Then
PopupMenu mnuPopUp, vbPopupMenuRightButton
End If
End Sub

Private Sub mnuPopUpNew_Click()
Timer1.Interval = 1
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim frmForm As Form1
Timer1.Enabled = False
Set frmForm = New Form1
frmForm.Show vbModal
End Sub
</code>


Svara

Sv: VB5-bugg, popupmenu?

Postades av 2003-06-14 00:07:26 - Gabriel Karlsson

Hej.

Tack så mycket för förklaringen och lösningen. :)

*kan fortsätta i lugn och ro*


Svara

Sv: VB5-bugg, popupmenu?

Postades av 2003-06-14 17:48:20 - Christopher Schimmer

En annan lösning med flagga.. Vänta med att öppna form2 tills efter PopupMenu-kommandot. Det står så här i hjälpen:

"When you display a pop-up menu, the code following the call to the PopupMenu method isn't executed until the user either chooses a command from the menu (in which case the code for that command's Click event is executed before the code following the PopupMenu statement) or cancels the menu. In addition, only one pop-up menu can be displayed at a time; therefore, calls to this method are ignored if a pop-up menu is already displayed or if a pull-down menu is open."

Så ex.vis (utifrån ditt exempel):
<code>
Dim wasClicked As Boolean

Private Sub Knapp1_Click()
PopupMenu mnuMeny
If ifClicked = True Then Form2.Show 1
End Sub

Private Sub mnuMenyAlternativ_Click()
wasClicked = True
End Sub
</code>

MVH/Kovsky


Svara

Sv: VB5-bugg, popupmenu?

Postades av 2003-06-15 16:31:10 - Gabriel Karlsson

Tack för tipsen.

Jag klurade runt lite och eftersom jag har en knapp i form1 som också öppnar dte nya fönstret, så kallar jag på den knappen från menyn, istället för att kalla på koden i menyn från knappen. Flummigt?

Förut hade jag själva koden i menyn, som popar up. Och jag hade en knapp som bara har koden mnuMenyalternativ_Click... men nu ändrade jag alltså och flyttade koden till knappen, och kallar på den från popupmenyn... och på så vis verkar menyn stängas och det nya fönstret kan ha en popupmeny. :)


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
843
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies