Listbox - SingleClickSelect

Geef hier je beste Liberty BASIC tips door. (Hier geen hulp vragen)

Moderators: anthonio, Abcott

Listbox - SingleClickSelect

Berichtdoor glpape » za maart 12, 2011 10:48 pm

De Help file jubelt dat <singleclickselect> " tells Liberty BASIC to jump to the control's branch label on a single click, instead of the default double click". Klinkt simpel; en werkte het ook maar steeds precies zo !

Hier een demo die de frustraties toont en, geloof ik, na uren en uren zoeken, een goeie fix.

Code: Selecteer alles
nomainwin

stylebits #WW.LB1, 0, _WS_VSCROLL, 0, 0
listbox #WW.LB1, item$(), [gonow], 120, 120, 150, 150
item$(1) = "ONE"
item$(2) = "TWO"
item$(3) = "THREE"
item$(4) = "FOUR"
item$(5) = "FIVE"
item$(6) = "SIX"

Call SetWdwC 0, 0, 400, 450
Open "" for window as #WW
#WW "trapclose [qq]"
#WW.LB1 "font Arial 12"
' #WW.LB1 "singleclickselect"                               ' HIER(1)
wait

[gonow]
#WW.LB1 "selectionindex? iSelect"
' if iSelect = 0 then wait                                  ' HIER(3)
#WW.LB1 "selection? iSelect$"
print iSelect$
txt$ = " "; cr$(4); space$(12); iSelect$; cr$(2);_
       " times   TWELVE is :  "; iSelect*12; space$(16); cr$(2)
notice txt$
' #WW.LB1 "selectindex 0"                                   ' HIER(2)
wait

[qq]
close #WW
end


' --------------------------------------------------------------------------------------

Function cr$(k)                            ' Gives k carriage returns [chr$(13)]
   for i = 1 to k
   cr$ = cr$; chr$(13)
   next i
End Function

Sub SetWdwC a,b,c,d                        ' Centers window with 0 for both first params
UpperLeftX = ((DisplayWidth - c)/2) + a    ' Adjust horiz pos, neg values move window left
UpperLeftY = ((DisplayHeight - d)/2) + b   ' Adjust vert pos, neg values move window up
WindowWidth = c
WindowHeight = d
End Sub



Drie regels zijn uitgeschakeld met een apostrophe.
1. Begin met dubbel-klikken op de verschillende items; klik steeds de Notice weer weg; het werkt zowel als je dubbel-klikt op verschillende items als wanneer je klikt op twee keer achtereen hetzelfde item.
2. Activeer <SingleClickSelect> bij HIER(1). Als je nu twee keer op hetzelfde item klikt moet je dubbel-klikken. Dat was niet de bedoeling!
3. Activeer nu de toverformule (heel happy dat ik dit gevonden heb !) bij HIER(2). Beter nu !
Windows verzendt verschillende messages bij één keer klikken of dubbelklikken. Op de MSDN website heb ik daar over gelezen. Bij een single click is de message dat de selectie is veranderd. Dan moet dat dus wel zo zijn ! Door bij HIER(2) de selectie steeds op 0 te zetten bereik je dit. Listbox items dus nummeren vanaf 1, niet vanaf 0.
4. Listbox items ook nummeren vanaf 1 omdat de lisbox by default een selectie-index van 0 terug geeft als je op een leeg stuk klikt. Demo: klik op de lege ruimte onder item SIX en zowel bij dubbel klikken als bij <SingleClickSelect> krijg je resultaten waar je niet op zat te wachten. Fix: activeer de regel bij HIER(3).

Vr groet,

George Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm

Keer terug naar Tips en informatie

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron