Listbox

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

ToeB

Betreff: Listbox

BeitragSa, März 26, 2011 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !

Gibt es eine Möglichkeit in einer Listbix anzugeben, dass wenn ein Item ausgewählt wurde, die komplette Zeile markiert wird und nicht nur der Text ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ToeB

BeitragSo, März 27, 2011 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Scheint wohl keiner zu wissen Sad

Neue Frage : Wie kann ich prüfen ob ein Listbox-Eintrag mit einem Doppelklick aufgerufen wurde ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ozzi789

BeitragSo, März 27, 2011 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Tag ToeB

Man kann die komplette Zeile markieren, mit einem etwas dreckigen Trick,
füge einfach ein paar Leerzeichen an den Text Wink

Doppelklick hmm... da musst du dir was basteln.
Fange die Mausklicks ab, schau wenn zwischen 2 nur ~ 300 Millisekunden liegen was für ein Gadget angewählt ist mit SelectedGadgetItem
Wie du die Maushits über dem Fenster abfragst weis ich gerade nicht.



Mfg
ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Pummelie

BeitragSo, März 27, 2011 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Klick auf ein Gadget löst ein Event aus, mit dem Handl der Box als Source.
Wenn man nochmal draufklickt wird kein weiteres Event ausgelöst.
Klickt man aber doppel drauf kommt wieder ein Event.

Mit den Infos kannst du dir was zusammenbasteln.
It's done when it's done.

ozzi789

BeitragSo, März 27, 2011 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach stimmt Pummelie hat recht... Smile
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ToeB

BeitragSo, März 27, 2011 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dazu schonmal Very Happy

Aber wie kann ich prüfen ob das Event jetzt zu einem Doppelklick gehört oder nicht ?

Edit : Habs jetzt. Ich speicher einfach das ausgewählte Item über "Event Data" ab und prüfe ob es sich ändert beim Event. Wenn nicht, wurde ein doppelklick ausgeführt und ich kann weiter machen, wenn es sich geändert hat, dann nicht.

Gibt es eine Möglichkeit in Blitzplus die Stringlänge des Textes (z.B. in einer Listbox) heraus zu finden ? StringWidth geht ja nicht (und zwar ohne den Font zu laden etc.)



mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
  • Zuletzt bearbeitet von ToeB am So, März 27, 2011 19:06, insgesamt einmal bearbeitet

Pummelie

BeitragSo, März 27, 2011 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Perfekt wird die Lösung nicht, aber hier ein Ansatz.

BlitzBasic: [AUSKLAPPEN]
Local win=CreateWindow("BOX",GadgetWidth(Desktop())/2-150,GadgetHeight(Desktop())/2-120,300,240,0,33)
Local font=LoadFont("Arial",14,1)
Local box=CreateListBox(3,3,294,234,win)
SetGadgetFont(box,font)
FreeFont(font)
;[Block - Items]
AddGadgetItem(box,"Eintrag !")
AddGadgetItem(box,"Eintrag ?")
AddGadgetItem(box,"Eintrag .")
;[End Block]

Repeat
Local bef_e=SelectedGadgetItem(box)
If WaitEvent(100) Then
Select EventID()
Case $803
End
Case $401
Select EventSource()
Case box
If SelectedGadgetItem(box)=bef_e Then Notify(GadgetItemText$(box,SelectedGadgetItem(box))+" wurde doppelt angeklickt!")
End Select
End Select
EndIf
Forever
It's done when it's done.

Thunder

BeitragSo, März 27, 2011 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wird wahrscheinlich nicht helfen, aber bei älteren Blitzplusversionen wurde noch die ganze Zeile markiert, wenn ich mich richtig erinnere.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

ToeB

BeitragSo, März 27, 2011 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe noch eine kleine Frage :

Ich möchte, wenn ein Listbox-Item angeklickt wurde und dann die Rechte Maustaste gedrückt wird, sich ein Menü an der Mausposition (wie bei Windows) ausfährt, wo ich dann Aktionen auflisten kann die man mit dem Eintrag machen kann.

So weit ich weiß kann das BlitzPlus standartmäßig nicht, gibt es dafür irgendeine Dll ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Eingeproggt

BeitragMo, März 28, 2011 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, es gibt in der WinAPI was.
Hier einfach mal "hingeschmissen" (Ich hab mich zuletzt vor über einem Jahr damit befasst aber damals verwendete ich genau diesen Code, sollte klappen - schlimmsten Falls rumprobieren.)

BlitzBasic: [AUSKLAPPEN]
;Danke an simi und Sebastian
;https://www.blitzforum.de/forum/viewtopic.php?t=13926



;#############################################################################
;USERLIBS:
;=========

;.lib "user32.dll"
;api_CreatePopupMenu%():"CreatePopupMenu"
;api_DestroyMenu(h):"DestroyMenu"
;api_GetActiveWindow% () : "GetActiveWindow"

;api_InsertMenuItem%(hMenu,uItem,fByPosition, lpmii*):"InsertMenuItemA"
;api_DeleteMenu(hMenu,uPosition,uFlags):"DeleteMenu"

;api_TrackPopupMenuEx%(hMenu,wFlags,x,y,HWnd,lptpm):"TrackPopupMenuEx"

;api_GetMenuItemInfo%(hMenu,uItem,fByPosition,lpmii*):"GetMenuItemInfoA"
;api_SetMenuItemInfo%(hMenu,uItem,fByPosition,lpmii*):"SetMenuItemInfoA"

;-----------------------------------------------------------------------------

;.lib "kernel32.dll"
;api_MulDiv%(a*,b%,c%):"MulDiv"

;#############################################################################




Function PM_Create()
Return api_CreatePopupMenu()
End Function
;Erstellt ein neues Popupmenu, und gibt dessen handle zurück.



Function PM_Delete(h)
api_DestroyMenu(h)
End Function
;Gibt den Speicher eines Menüs frei.
;h = Handle des Popupmenus.



Function PM_AddItem(h,t$,Id,s=$0,subM=0,r=0)
b2 = CreateBank(Len(t)+1)
For x = 1 To Len(t)
PokeByte b2,x-1,Asc(Mid(t,x,1))
Next
PokeByte b2,x-1,0


b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$3B+((subM>0)*$4)
PokeInt b1,8,$800*(t="")+(r*$200)
PokeInt b1,12,s
PokeInt b1,16,Id

PokeInt b1,20,subM
PokeInt b1,24,0
PokeInt b1,28,0

PokeInt b1,32,0
PokeInt b1,36,api_MulDiv(b2,1,1)
PokeInt b1,40,Len(t)

api_InsertMenuItem(h,0,0,b1)

FreeBank b1
FreeBank b2
End Function
;Fügt ein Eintrag am Ende eines Popupfensters hinzu.
;h = Handle des PopupMenus
;t = Text der angezeigt werden soll oder "" für eine Trennlinie (& vor Buchstaben für Shortcut)
;ID = Kennnummer, die von ShowPopupMenu zurückgegeben wird....
;s=Styles: $8 Häckchen
; $1000 Fett
; $3 Ausgeschaltet (grau)
; $80 Highlight (ausgewählt, blauer Hintergrund)
; Flags können kombinert werden (durch Adition)
;subM = Handle des SubMenus, dass erscheinen soll, wenn man auf diesen Item kommt
;r = Punkte statt Häckchen verwenden (für nur eine Auswahl)



Function PM_DeleteItem(h,i)
api_DeleteMenu(h,i,0)
End Function
;Löscht einen Eintrag aus einem Menu. Wenn das zu löschende Menü ein Untermenü hat, wird auch dessen
;Speciher freigegeben.
;h = Handle des Menüs, in dem sich der Eintrag befindet.
;i = Kennnummer des Eintrags.



Function PM_Show(h,x,y,w)
Return api_TrackPopupMenuEx(h,$100,x,y,w,0)
End Function
;Zeigt das Popup-Menu an.
;h = Handle des PopupMenus
;x,y = Position des Menus zur linken, oberen Bildschirmecke
;w = Handle des Fensters, das Parent für das Menu ist









Function PM_GetEnabled(h,i)
b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$1

api_GetMenuItemInfo(h,i,0,b1)

t = Not(PeekInt(b1,12) And $3)/3

FreeBank b1

Return t
End Function
;Gibt zurück, ob ein Item ausgewählt werden kann.
;h = Handle des Menüs
;i = Kennnummer des Eintrags



Function PM_GetChecked(h,i)
b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$1

api_GetMenuItemInfo(h,i,0,b1)

t = (PeekInt(b1,12) And $8)/8

FreeBank b1

Return t
End Function
;Gibt zurück, ob vor einem Menüeintrag ein Haken ist.
;h = Handle des Menüs
;i = Kennnummer des Eintrags



Function PM_GetText$(h,i)
b2 = CreateBank(50)
b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$10
PokeInt b1,36,api_MulDiv(b2,1,1)
PokeInt b1,40,50

api_GetMenuItemInfo(h,i,0,b1)

For x = 0 To 49
If PeekInt(b2,x)=0 Then Exit
t$ = t + Chr(PeekByte(b2,x))
Next

FreeBank b1
FreeBank b2

Return t
End Function
;Gibt den Text eines Menüeintrags zurück.
;h = Handle des Menüs
;i = Kennnummer des Eintrags








Function PM_SetText(h,i,t$)
b2 = CreateBank(Len(t)+1)
For x = 1 To Len(t)
PokeByte b2,x-1,Asc(Mid(t,x,1))
Next
PokeByte b2,x-1,0

b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$10
PokeInt b1,36,api_MulDiv(b2,1,1)
PokeInt b1,40,Len(t)+1

api_SetMenuItemInfo(h,i,0,b1)

FreeBank b1
FreeBank b2
End Function
;Ändert den Text eines Menuitems.
;h = Handle des PopupMenus
;i = Kennnummer des Items
;t = neuer Text


Function PM_EnableItem(h,i)
b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$1
api_GetMenuItemInfo(h,i,0,b1)
PokeByte b1,12,(PeekInt(b1,12) And $fffffffc)
api_SetMenuItemInfo(h,i,0,b1)
FreeBank b1
End Function
;Macht, dass ein Menuitem wieder angewählt werden kann
;h = Handle des PopupMenus
;i = Kennnummer des Items



Function PM_DisableItem(h,i)
b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$1
api_GetMenuItemInfo(h,i,0,b1)
PokeByte b1,12,(PeekInt(b1,12) And $fffffffc)+$3
api_SetMenuItemInfo(h,i,0,b1)
FreeBank b1
End Function
;Macht, dass ein Menuitem nicht angewählt werden kann
;h = Handle des PopupMenus
;i = Kennnummer des Items



Function PM_CheckItem(h,i)
b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$1
api_GetMenuItemInfo(h,i,0,b1)
PokeByte b1,12,(PeekInt(b1,12) And $fffffff7)+$8
api_SetMenuItemInfo(h,i,0,b1)
FreeBank b1
End Function
;Häckelt ein MenuItem "an".
;h = Handle des PopupMenus
;i = Kennnummer des Items



Function PM_UncheckItem(h,i)
b1 = CreateBank(44)
PokeInt b1,0,44
PokeInt b1,4,$1
api_GetMenuItemInfo(h,i,0,b1)
PokeByte b1,12,(PeekInt(b1,12) And $fffffff7)
api_SetMenuItemInfo(h,i,0,b1)
FreeBank b1
End Function
;Entfernt das Häckchen vor einem MenuItem.
;h = Handle des PopupMenus
;i = Kennnummer des Items
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

ToeB

BeitragMo, März 28, 2011 2:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Super danke genau das was ich gesucht hatte !

Nur stehe ich jetzt vor nem neuen Problem, wie frage ich ab ob die Rechte maustaste gedrückt wurde ?
Sowohl über ein Event als auch über MouseHit geht es nicht :/

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ozzi789

Betreff: VOILA

BeitragMi, März 30, 2011 10:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine güte Fragen über Fragen, Überschaubarkeit weg.


Stringlänge rausfinden + Rechtsklick Menü in der Listbox!

Code: [AUSKLAPPEN]

;#############################################################################
;USERLIBS:
;=========

;.lib "user32.dll"
;api_CreatePopupMenu%():"CreatePopupMenu"
;api_DestroyMenu(h):"DestroyMenu"

;api_InsertMenuItem%(hMenu,uItem,fByPosition, lpmii*):"InsertMenuItemA"
;api_DeleteMenu(hMenu,uPosition,uFlags):"DeleteMenu"

;api_TrackPopupMenuEx%(hMenu,wFlags,x,y,HWnd,lptpm):"TrackPopupMenuEx"

;api_GetMenuItemInfo%(hMenu,uItem,fByPosition,lpmii*):"GetMenuItemInfoA"
;api_SetMenuItemInfo%(hMenu,uItem,fByPosition,lpmii*):"SetMenuItemInfoA"
; GetAsyncKeyState%(vKey%)

;-----------------------------------------------------------------------------

;.lib "kernel32.dll"
;ptr_helper__%(a*,b%,c%):"MulDiv"

;#############################################################################

Local win=CreateWindow("BOX",GadgetWidth(Desktop())/2-150,GadgetHeight(Desktop())/2-120,300,240,0,33)
Local font=LoadFont("Arial",14,1)
Local box=CreateListBox(3,3,294,284,win)
SetGadgetFont(box,font)
FreeFont(font)

;[Block - Items]
AddGadgetItem(box,"Eintrag !")
AddGadgetItem(box,"Eintrag ?")
AddGadgetItem(box,"Eintrag .")
;[End Block]


Const VK_LEFTMOUSE = $01 ; Left physical mouse button
Const VK_RIGHTMOUSE = $02 ; Right physical mouse button



Untermenu = PM_Create()
PM_AddItem(Untermenu,"Auswahl Nr.1",11,$8,0,1)
PM_AddItem(Untermenu,"Auswahl Nr.2",12, 0,0,1)
PM_AddItem(Untermenu,"Auswahl Nr.3",13, 0,0,1)

HauptMenu=PM_Create()
PM_AddItem(HauptMenu,"UnterMenü?",1,$8)
PM_AddItem(HauptMenu,"",4)
PM_AddItem(HauptMenu,"Untermenü",2,$1000,Untermenu)
PM_AddItem(HauptMenu,"Ende",3)
PM_AddItem(HauptMenu,"",4)
PM_AddItem(HauptMenu,"Lösch mich!",5)
PM_AddItem(HauptMenu,"Counter: 0",6)



Repeat
Local bef_e=SelectedGadgetItem(box)

event=0
If  GetAsyncKeyState%( VK_RIGHTMOUSE ) rightmouse=1


   Select WaitEvent()
      Case $803
         Ende = 1
        Case $401
      If rightmouse=1
         rightmouse=0
         event = PM_Show(Hauptmenu,MouseX(),MouseY(),win)
         Select event
            Case 11,12,13
               PM_UncheckItem(Untermenu,11)
               PM_UncheckItem(Untermenu,12)
               PM_UncheckItem(Untermenu,13)
               PM_CheckItem(Untermenu,event)
            Case 3
               Ende = 1
            Case 1
               If PM_GetChecked(Hauptmenu,1) Then
                     PM_UncheckItem(Hauptmenu,1)
                     PM_DisableItem(Hauptmenu,2)
                  Else
                        PM_CheckItem(Hauptmenu,1)
                        PM_EnableItem(Hauptmenu,2)
                  End If
               Case 5
                  PM_DeleteItem(HauptMenu,5)
              Case 6
                 t$ = PM_GetText(HauptMenu,6)
                  t$ = Mid(t,Instr(t," "))
                  PM_SetText(Hauptmenu,6,"Counter: "+(Int(t$)+1))
         End Select
      EndIf
      Select EventSource()
         Case box
               If SelectedGadgetItem(box)=bef_e
                  inhalt$ = GadgetItemText$ (box,bef_e)
                  inhalt_len = Len(inhalt$)
                  Notify(GadgetItemText$(box,SelectedGadgetItem(box))+" wurde doppelt angeklickt!"+Chr(13)+"Der Text hat ne länge von "+inhalt_len+" zeichen!")
               EndIf
         End Select
      End Select
Until (ende = 1)

PM_Delete(Hauptmenu)
PM_Delete(Untermenu)

End
























Function PM_Create()
   Return api_CreatePopupMenu()
End Function
;Erstellt ein neues Popupmenu, und gibt dessen handle zurück.



Function PM_Delete(h)
   api_DestroyMenu(h)
End Function
;Gibt den Speicher eines Menüs frei.
;h = Handle des Popupmenus.



Function PM_AddItem(h,t$,Id,s=$0,subM=0,r=0)
   b2 = CreateBank(Len(t)+1)
      For x = 1 To Len(t)
         PokeByte b2,x-1,Asc(Mid(t,x,1))
      Next
      PokeByte b2,x-1,0

     
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$3B+((subM>0)*$4)
      PokeInt b1,8,$800*(t="")+(r*$200)
      PokeInt b1,12,s
      PokeInt b1,16,ID
   
      PokeInt b1,20,subM
      PokeInt b1,24,0
      PokeInt b1,28,0
   
      PokeInt b1,32,0
      PokeInt b1,36,api_MulDiv%(b2,1,1)
      PokeInt b1,40,Len(t)
     
   api_InsertMenuItem(h,0,0,b1)
   
   FreeBank b1
   FreeBank b2
End Function
;Fügt ein Eintrag am Ende eines Popupfensters hinzu.
;h  = Handle des PopupMenus
;t  = Text der angezeigt werden soll oder "" für eine Trennlinie  (& vor Buchstaben für Shortcut)
;ID = Kennnummer, die von ShowPopupMenu zurückgegeben wird....
;s=Styles:   $8      Häckchen
;         $1000   Fett
;         $3      Ausgeschaltet (grau)
;         $80      Highlight (ausgewählt, blauer Hintergrund)
;         Flags können kombinert werden (durch Adition)
;subM = Handle des SubMenus, dass erscheinen soll, wenn man auf diesen Item kommt
;r = Punkte statt Häckchen verwenden (für nur eine Auswahl)



Function PM_DeleteItem(h,i)
   api_DeleteMenu(h,i,0)
End Function
;Löscht einen Eintrag aus einem Menu. Wenn das zu löschende Menü ein Untermenü hat, wird auch dessen
;Speciher freigegeben.
;h = Handle des Menüs, in dem sich der Eintrag befindet.
;i = Kennnummer des Eintrags.



Function PM_Show(h,x,y,w)
   Return api_TrackPopupMenuEx(h,$100,x,y,QueryObject(w,1),0)
End Function
;Zeigt das Popup-Menu an.
;h = Handle des PopupMenus
;x,y = Position des Menus zur linken, oberen Bildschirmecke
;w = Handle des Fensters, das Parent für das Menu ist









Function PM_GetEnabled(h,i)
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$1

   api_GetMenuItemInfo(h,i,0,b1)

   t = Not(PeekInt(b1,12) And $3)/3
   
   FreeBank b1

   Return t
End Function
;Gibt zurück, ob ein Item ausgewählt werden kann.
;h = Handle des Menüs
;i = Kennnummer des Eintrags



Function PM_GetChecked(h,i)
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$1

   api_GetMenuItemInfo(h,i,0,b1)

   t = (PeekInt(b1,12) And $8)/8
   
   FreeBank b1

   Return t
End Function
;Gibt zurück, ob vor einem Menüeintrag ein Haken ist.
;h = Handle des Menüs
;i = Kennnummer des Eintrags



Function PM_GetText$(h,i)
   b2 = CreateBank(50)
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$10
      PokeInt b1,36,api_MulDiv%(b2,1,1)
      PokeInt b1,40,50

   api_GetMenuItemInfo(h,i,0,b1)

   For x = 0 To 49
      If PeekInt(b2,x)=0 Then Exit
      t$ = t + Chr(PeekByte(b2,x))
   Next

   FreeBank b1
   FreeBank b2

   Return t
End Function
;Gibt den Text eines Menüeintrags zurück.
;h = Handle des Menüs
;i = Kennnummer des Eintrags








Function PM_SetText(h,i,t$)
   b2 = CreateBank(Len(t)+1)
      For x = 1 To Len(t)
         PokeByte b2,x-1,Asc(Mid(t,x,1))
      Next
      PokeByte b2,x-1,0
     
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$10
      PokeInt b1,36,api_MulDiv%(b2,1,1)
      PokeInt b1,40,Len(t)+1

   api_SetMenuItemInfo(h,i,0,b1)

   FreeBank b1
   FreeBank b2
End Function
;Ändert den Text eines Menuitems.
;h = Handle des PopupMenus
;i = Kennnummer des Items
;t = neuer Text


Function PM_EnableItem(h,i)
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$1
   api_GetMenuItemInfo(h,i,0,b1)
   PokeByte b1,12,(PeekInt(b1,12) And $fffffffc)
   api_SetMenuItemInfo(h,i,0,b1)
   FreeBank b1
End Function
;Macht, dass ein Menuitem wieder angewählt werden kann
;h = Handle des PopupMenus
;i = Kennnummer des Items



Function PM_DisableItem(h,i)
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$1
   api_GetMenuItemInfo(h,i,0,b1)
   PokeByte b1,12,(PeekInt(b1,12) And $fffffffc)+$3
   api_SetMenuItemInfo(h,i,0,b1)
   FreeBank b1
End Function
;Macht, dass ein Menuitem nicht angewählt werden kann
;h = Handle des PopupMenus
;i = Kennnummer des Items



Function PM_CheckItem(h,i)
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$1
   api_GetMenuItemInfo(h,i,0,b1)
   PokeByte b1,12,(PeekInt(b1,12) And $fffffff7)+$8
   api_SetMenuItemInfo(h,i,0,b1)
   FreeBank b1
End Function
;Häckelt ein MenuItem "an".
;h = Handle des PopupMenus
;i = Kennnummer des Items



Function PM_UncheckItem(h,i)
   b1 = CreateBank(44)
      PokeInt b1,0,44
      PokeInt b1,4,$1
   api_GetMenuItemInfo(h,i,0,b1)
   PokeByte b1,12,(PeekInt(b1,12) And $fffffff7)
   api_SetMenuItemInfo(h,i,0,b1)
   FreeBank b1
End Function
;Entfernt das Häckchen vor einem MenuItem.
;h = Handle des PopupMenus
;i = Kennnummer des Items
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ToeB

BeitragDi, Apr 05, 2011 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal entschuldigung das ich nicht mehr geschrieben habe, lag daran das ich es erst jetzt eingebaut haben wollte.. Und genau da ist mein Problem : Ich habe versucht, selber ein Popup-Menü zu erstellen, mit PM_Create, PM_AddItem und PM_Show. Das funtze nicht, also habe ich direkt aus deinem Beispiel herauskopiert und eingefügt :
Code: [AUSKLAPPEN]
Untermenu = PM_Create()
PM_AddItem(Untermenu,"Auswahl Nr.1",11,$8,0,1)
PM_AddItem(Untermenu,"Auswahl Nr.2",12, 0,0,1)
PM_AddItem(Untermenu,"Auswahl Nr.3",13, 0,0,1)


HauptMenu=PM_Create()
PM_AddItem(HauptMenu,"UnterMenü?",1,$8)
PM_AddItem(HauptMenu,"",4)
PM_AddItem(HauptMenu,"Untermenü",2,$1000,Untermenu)
PM_AddItem(HauptMenu,"Ende",3)
PM_AddItem(HauptMenu,"",4)
PM_AddItem(HauptMenu,"Lösch mich!",5)
PM_AddItem(HauptMenu,"Counter: 0",6)

;In der Schleife :
If GetAsyncKeyState%( VK_RIGHTMOUSE ) Then rightmouse=1
   ev = WaitEvent( 32 )
   If rightmouse = 1 Then
      rightmouse = 0
      get = PM_Show(Hauptmenu, MouseX(), MouseY(), MainWindow)
      DebugLog get+","+MouseX( )+","+MouseY()
   EndIf


Aber get gibt mir immer 0 aus und das Menü wird nicht geöffnet. Jetzt bin ich krampfhaft am suchen welche Ursachen das haben könnte, ob irgendein Modus nicht stimmt oder ähnliches, aber ich finde nichts. Kannst du mir (oder könnt ihr mir) da villeicht helfen ? Gibt es irgendwelche Sachen die diese Api-Funktionen blockieren könnten ? Weil ich habe auch die Handels überprüft, sind alle vorhanden.

Danke schonmal !

mfg ToeB


PS: Ich verwende in dem Program sowohl UDP-Streams als auch die ggTray lib und "guiext.bb", hab aber alles mal zur probe wegelassen, geht dann immer noch nicht :/
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group