Listbox
Übersicht BlitzBasic BlitzPlus
ToeBBetreff: Listbox |
Sa, März 26, 2011 18:38 Antworten mit Zitat |
|
---|---|---|
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 |
So, März 27, 2011 17:44 Antworten mit Zitat |
|
---|---|---|
Scheint wohl keiner zu wissen
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 |
So, März 27, 2011 18:12 Antworten mit Zitat |
|
---|---|---|
Guten Tag ToeB
Man kann die komplette Zeile markieren, mit einem etwas dreckigen Trick, füge einfach ein paar Leerzeichen an den Text 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 |
So, März 27, 2011 18:20 Antworten mit Zitat |
|
---|---|---|
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 |
So, März 27, 2011 18:24 Antworten mit Zitat |
|
---|---|---|
Ach stimmt Pummelie hat recht... | ||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
ToeB |
So, März 27, 2011 18:47 Antworten mit Zitat |
|
---|---|---|
Danke dazu schonmal
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 |
So, März 27, 2011 19:05 Antworten mit Zitat |
|
---|---|---|
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) |
||
It's done when it's done. |
Thunder |
So, März 27, 2011 22:00 Antworten mit Zitat |
|
---|---|---|
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 |
So, März 27, 2011 22:05 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, März 28, 2011 0:26 Antworten mit Zitat |
|
---|---|---|
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 |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
ToeB |
Mo, März 28, 2011 2:09 Antworten mit Zitat |
|
---|---|---|
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! |
ozzi789Betreff: VOILA |
Mi, März 30, 2011 10:21 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Apr 05, 2011 16:19 Antworten mit Zitat |
|
---|---|---|
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! |
Übersicht BlitzBasic BlitzPlus
Powered by phpBB © 2001 - 2006, phpBB Group