ListIconGadget
- ProgOldie
- Beiträge: 236
- Registriert: 19.05.2012 17:09
- Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02
ListIconGadget
Gibt's einen Weg, mit dem man bei einem ListiconGadget nach einem Event wie #PB_EventType_LeftDoubleClick ermitteln kann, auf welche Spalte der Doppelklick erfolgte? Ich möchte nämlich die angeklickte Zelle ermitteln, wobei man die Zeile ja mit GetGadgetState erhält. Es würde auch reichen, wenn man zur angeklickten Zelle die Bezeichnung des Spaltenkopfes zurückgereicht bekommt.
Gruß und Dank!
Gruß und Dank!
Re: ListIconGadget
RSBasic's Winapi Library : http://www.rsbasic.de/aktualisierung/wi ... swerten.pb
Ist es das was du suchst ?
Ist es das was du suchst ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
- Pelagio
- Beiträge: 424
- Registriert: 11.11.2004 17:52
- Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem - Wohnort: Bremen
Re: ListIconGadget
Hallo ProgOldie,
ich habe einmal in meine alten Codeschnitzel nachgeschaut und dies gefunden:
am Ende ist dies nichts anderes als was bei RSBasic's Winapi Library steht wie Bisonte schon gelinkt hat.
Ich glaube/hoffe aber das es etwas verständlicher ist.
ich habe einmal in meine alten Codeschnitzel nachgeschaut und dies gefunden:
Code: Alles auswählen
Enumeration
#Win
#LVG
EndEnumeration
Procedure LvMausclick(vID.i, *vP.Point)
Protected pLVH.LVHITTESTINFO
GetCursorPos_ (*vP) ;wo ist Maus
MapWindowPoints_(0, vID, *vP, 1)
pLVH\pt\x = *vP\x
pLVH\pt\y = *vP\y
SendMessage_(vID, #LVM_SUBITEMHITTEST, 0, pLVH)
*vP\y = pLVH\iItem ;row ab 0
*vP\x = pLVH\iSubItem ;col ab 0
EndProcedure
OpenWindow(#Win, 0, 0, 300,420,"ListIcon Gadget",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(#LVG, 10, 10, 280, 400, "Spalte 0", 140, #PB_ListIcon_GridLines);|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(#LVG, 1,"Spalte 1",55)
AddGadgetColumn(#LVG,2,"Spalte 2",55)
For n=0 To 16
txt$ = "Text in Zeile " + LSet(Str(n), 3, " ") + " in Spalte 0" + #LF$ + Str(Random(99)) + #LF$ + Str(n)
AddGadgetItem(#LVG, -1, txt$)
Next n
;=====================================================
Repeat
Event = WaitWindowEvent(1)
If (Event=#PB_Event_Gadget) And (EventGadget()=#LVG)
If (EventType()=#PB_EventType_LeftClick)
LvMausclick(GadgetID(#LVG), p.Point)
Debug GetGadgetItemText(#LVG, p\y, p\x)
EndIf
EndIf
Until (Event=#PB_Event_CloseWindow)
End am Ende ist dies nichts anderes als was bei RSBasic's Winapi Library steht wie Bisonte schon gelinkt hat.
Ich glaube/hoffe aber das es etwas verständlicher ist.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS].
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS].
-
Stephan-X
- Beiträge: 80
- Registriert: 30.07.2008 16:02
- Computerausstattung: PC 8 GB RAM NVIDIA Grafik 1 TB RAID // Ubuntu Mate 64 Bit // Pure 6.0 64
- Wohnort: Oberösterreich
Re: ListIconGadget
Eventuell Hilft das ..
Code: Alles auswählen
Case #List_0
If EventType() = #PB_EventType_Focus
ElseIf EventType() = #PB_EventType_RightDoubleClick
; Reihe ermitteln die ausgewählt wird
Reihe.l = GetGadgetState(#List_0) ;Welcher Satz wurde angeklickt
If Reihe.l <> -1
ZeileP = Val(GetGadgetItemText(#List_0,Reihe.l,10)) ;hier wird die 11. Spalte gelesen
.... weiterer code
Endif
Endif
Wenn Sie nichts zu Tun haben, tun Sie es bitte nicht hier.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: ListIconGadget
@Stephan-X
Den verstehe ich nicht, zu mal ein ListIcon gar kein #PB_EventType_Focus unterstützt.
Wo die Werte ermittelt werden kann ich auch nicht erkennen.
Vielleicht machste da mal eine ausführbare Version daraus, mit diesem Ausschnitt wird wohl niemand
klar kommen.
Ich bin jedenfalls der Meinung, Dein Vorschlag kann nicht funktionieren.
Gruß
Thomas
Den verstehe ich nicht, zu mal ein ListIcon gar kein #PB_EventType_Focus unterstützt.
Wo die Werte ermittelt werden kann ich auch nicht erkennen.
Vielleicht machste da mal eine ausführbare Version daraus, mit diesem Ausschnitt wird wohl niemand
klar kommen.
Ich bin jedenfalls der Meinung, Dein Vorschlag kann nicht funktionieren.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- ProgOldie
- Beiträge: 236
- Registriert: 19.05.2012 17:09
- Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02
Re: ListIconGadget
Dank an Bisonte!
Übrigens ist http://www.rsbasic.de/winapi-library/ eine super-WinAPI-Sammlung, auf die Anfänger 'mal generell unter 'Links' und 'Private Webseiten' hingewiesen werden könnten.
Übrigens ist http://www.rsbasic.de/winapi-library/ eine super-WinAPI-Sammlung, auf die Anfänger 'mal generell unter 'Links' und 'Private Webseiten' hingewiesen werden könnten.
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Re: ListIconGadget
geht das auch andersrum ?
ich habe ein Listicongadget und benötige
dort die Koordinaten der einzelnen Felder
ich habe ein Listicongadget und benötige
dort die Koordinaten der einzelnen Felder
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: ListIconGadget
siehe MSDN - LVM_GETSUBITEMRECTbobobo hat geschrieben:geht das auch andersrum ?
ich habe ein Listicongadget und benötige
dort die Koordinaten der einzelnen Felder
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Re: ListIconGadget
Eine Möglichkeit:
Den Teil ab "Ergänzung" einfach in die Procedure einfügen.
Geht bestimmt noch besser, funktioniert aber.
Gruß: Bernd
Den Teil ab "Ergänzung" einfach in die Procedure einfügen.
Code: Alles auswählen
Procedure LvMausclick(vID.i, *vP.Point)
Protected pLVH.LVHITTESTINFO
GetCursorPos_ (*vP) ;wo ist Maus
MapWindowPoints_(0, vID, *vP, 1)
pLVH\pt\x = *vP\x
pLVH\pt\y = *vP\y
SendMessage_(vID, #LVM_SUBITEMHITTEST, 0, pLVH)
*vP\y = pLVH\iItem ;row ab 0
*vP\x = pLVH\iSubItem ;col ab 0
; --- Ergänzung
Protected rec.RECT , i
SendMessage_(vid, #LVM_GETSUBITEMRECT, *vp\y, rec)
rec\left=0
rec\right=rec\left+GetGadgetItemAttribute(#LVG,-1,#PB_ListIcon_ColumnWidth,0)
If *vP\x >0
For i=1 To *vP\x
rec\left+GetGadgetItemAttribute(#LVG,-1,#PB_ListIcon_ColumnWidth, i-1)
rec\right=rec\left+GetGadgetItemAttribute(#LVG,-1,#PB_ListIcon_ColumnWidth,i)
Next
EndIf
Debug "-----"
Debug rec\left
Debug rec\right
Debug rec\top
Debug rec\bottom
Debug " "
EndProcedure
Gruß: Bernd
PB 5.31 (x86) & (x64) Win10