scrollen wie iPad ...?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Then
Beiträge: 278
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: scrollen wie iPad ...?

Beitrag von Then »

ich fummle da noch etwas.... auch unter 4.5 läufts nicht ... irgendwas mit "RECT declared..." oder so...

hm... ich bastle auch schon an einer etwas "einfachereren" BASIC ähnlicheren Lösung, welche evtl funktioniert...
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: scrollen wie iPad ...?

Beitrag von NicTheQuick »

Achja, unter Windows gibt es die Rect-Struktur schon. Dann mach einfach Suchen/Ersetzen im ganzen Quellcode von "Rect" nach "Rectangle" oder sowas.
Then hat geschrieben:hm... ich bastle auch schon an einer etwas "einfachereren" BASIC ähnlicheren Lösung, welche evtl funktioniert...
Da bin ich mal gespannt, wie du das noch einfacher machen willst.
Meine Version funktioniert, du solltest nur lernen die Fehlermeldungen der IDE besser zu intepretieren.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: scrollen wie iPad ...?

Beitrag von PureLust »

Then hat geschrieben:ich fummle da noch etwas.... auch unter 4.5 läufts nicht ... irgendwas mit "RECT declared..." oder so...
Hi Then, ...
wir haben bei uns im Lager sowie der Produktion viele Bildschirme mit Touchscreen-Bedienung im Einsatz.

Da die darauf laufenden Programmen natürlich auch verschiedene Listen enthalten (die momentan halt per Scrollbalken durchgescrollt werden können), ist das von Dir angedachte Scrollen per Touchbewegung echt eine interessante Idee.

Momentan setze ich für die Listen "normale" ListView-/ListIconGadgets ein.
Damit auch für unsere Produktionsmitarbeiter mit ihren "dicken Fingern" eine Bedienung möglich ist haben diese Listen z.Zt. halt extra großer Schrift.
Weiterhin verwende ich eine API-Tweak der sämtliche Schaltflächen von GUI-Controls (wie z.B. Scrollbalken, Pulldown-Buttons von Comboboxen, etc.) Systemweit vergrößert.

Da ich aber ohnehin vorhatte die "normalen" Listen demnächst durch ein ScrollAreaGadget() mit Images (ein Image für jede Zeile) zu ersetzen, werde ich mir auch mal Gedanken dazu machen das Scrollen im ScrollAreaGadget() statt mit einem Scrollbalken durch eine Touchbewegung zu realisieren (die iPhone-User von denen werden es lieben :mrgreen: ).

Damit auch Du den Code von NTQ mal testen kannst hab ich ihn Dir mal so umgeschrieben, dass er auch bei Dir lauffähig sein sollte (im Grunde nur .RECT in .NTQRECT geändert, sowie bei Bedarf das fehlende Image erzeugt):

Code: Alles auswählen

; Code nachträglich gelöscht um Forum nicht unnötig voll zu stopfen.
; die o.g. Änderungen an NTQs Original-Code dürfte ja jeder bei Bedarf auch selber schaffen.  ;)
Gruß und viel Erfolg. :allright:
PL.
Zuletzt geändert von PureLust am 18.05.2010 11:34, insgesamt 2-mal geändert.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: scrollen wie iPad ...?

Beitrag von STARGÅTE »

Tia, und die die kein iPhone haben suchen dann verzweifelt n Scronbalken...

Also ich komme mit den Beispielcode gerade überhaupt nicht klar.
Ich kann klicken wie ich will, oder die maus bewegen wie ich will es scrollt nix ...
erst nachdem ich denke es passiert nix rauscht das Bild Seitwerts aus der anzeige /:->

Ich stelle mich vermutlich zu blöd an, habe noch n ein iPhone in der Hand gehabt :cry:


Nichts destotrotz, würde ich euch hier gerne einer meiner Includes zur verfügung stellen, die die Mausabfragen etwas vereinfacht.

Code: Alles auswählen

 ; ScrMouseButtonEvent(Button)
 #ScrMouse_FirstDown   = %00000001
 #ScrMouse_Down        = %00000010
 #ScrMouse_LongDown    = %00000100
 #ScrMouse_StepDown    = %00001000
 #ScrMouse_Click       = %00010000
 #ScrMouse_DoubleClick = %00100000
 #ScrMouse_MultiClick  = %01000000
 
 ; ScrMouseEvent()
 #ScrMouse_Move        = %00000000
 #ScrMouse_TinyStop    = %00000001
 #ScrMouse_Stop        = %00000010
 #ScrMouse_LongStop    = %00000100

 ; Time
 #ScrMouse_TinyTime    = 50
 #ScrMouse_NormalTime  = 250
 #ScrMouse_LongTime    = 750


 ; Verwaltung der Ereignisse
 Structure ScrMouseButtonData
  Time.i
  DownTime.i
  UpTime.i
  Clicks.i
  Event.i
 EndStructure

 Structure ScrMouse
  x.f
  y.f
 EndStructure

 Global Dim ScrMouseButtonData.ScrMouseButtonData(3)

 Global ScrMouse.ScrMouse

 Procedure ExamineScrMouse() 
  Protected Time = ElapsedMilliseconds() 
  Protected Button, SrcMouseButton
  ExamineMouse()
  ; Mausbewegung
  ScrMouse\x = MouseX()
  ScrMouse\y = MouseY()
  With ScrMouseButtonData(0)
   \Event = #Null
   If MouseDeltaX() Or MouseDeltaY() 
    \Time = Time
   EndIf
   If Time-\Time < #ScrMouse_TinyTime 
    \Event | #ScrMouse_Move
   ElseIf Time-\Time <= #ScrMouse_NormalTime
    \Event | #ScrMouse_TinyStop
   ElseIf Time-\Time >  #ScrMouse_NormalTime
    \Event | #ScrMouse_Stop
    If Time-\Time > #ScrMouse_LongTime
     \Event | #ScrMouse_LongStop
    EndIf
   EndIf
  EndWith
  ; Maustasten
  For Button = 1 To 3
   With ScrMouseButtonData(Button)
    \Event = #Null
    SrcMouseButton = MouseButton(Button)
    If SrcMouseButton
     \Event | #ScrMouse_Down
     If Not \DownTime Or \UpTime
      \Event | #ScrMouse_FirstDown
      If Time-\DownTime < #ScrMouse_NormalTime
       \Clicks + 1
       \Event | #ScrMouse_DoubleClick
       If \Clicks > 1
        \Event | #ScrMouse_MultiClick
       EndIf
      Else
       \Clicks = #Null
      EndIf
      \DownTime = Time
      \UpTime   = #Null
     ElseIf Time-\DownTime > #ScrMouse_NormalTime
      \Event | #ScrMouse_LongDown
      If (Time-\Time) > #ScrMouse_TinyTime
       \Time = Time
       \Event | #ScrMouse_StepDown
      EndIf
     EndIf
     \UpTime = #Null
    Else
     If Not \UpTime And \DownTime
      \UpTime = Time
      \Event | #ScrMouse_Click
     EndIf
    EndIf 
   EndWith
  Next Button 
 EndProcedure
 
 
 
 ; Gibt eine kombination von Aktionen des Mausbuttons zurück
 Macro ScrMouseButtonEvent(Button)
  ScrMouseButtonData(Button)\Event
 EndMacro
 
 
 
 ; Gibt die aktuelle Aktion der Maus zurück
 Macro ScrMouseEvent()
  ScrMouseButtonData(0)\Event 
 EndMacro
Mit diesen Proceduren kann (wie ich finde) einfacher abgefragt werden was die Maus (kurz stehenbleiben, lange stehenbleiben) gerade macht, oder auch der MausButton:
Erster Anschlag, Gedrpckt, Click, Doppelclick, usw.

Bei den If Abfragen dann immer mit dem & arbeiten, da es mehrere Events gleichzeitig geben kann.
(Doppelklick ist immer auch ein normaler Klick, erster anschlag ist auch schon "gedrückte Taste")

Hier ein kleines Beispiel:

Code: Alles auswählen

InitSprite() : InitKeyboard() : InitMouse()
 
 OpenWindow(0, 0, 0, 800, 600, "SCREEN", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
  
 Repeat
 
  WindowEvent()
 
  ClearScreen(0)
 
  FlipBuffers()
 
  ExamineScrMouse()
  If ScrMouseButtonEvent(1) & #ScrMouse_FirstDown
   Debug "Erster Anschlag"  
  EndIf
  If ScrMouseButtonEvent(1) & #ScrMouse_Click
   Debug "*Klick*"  
  EndIf 
  If ScrMouseButtonEvent(1) & #ScrMouse_MultiClick
   Debug "Mehrfach Klick"  
  EndIf 
  
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Escape) : End : EndIf
 
 ForEver
Dieses Include arbeitet mit "echter" Zeit, somit ist die Doppelclickgeschwindigkeit immer gleich.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: scrollen wie iPad ...?

Beitrag von TomS »

STARGÅTE hat geschrieben:Ich kann klicken wie ich will, oder die maus bewegen wie ich will es scrollt nix ...
erst nachdem ich denke es passiert nix rauscht das Bild Seitwerts aus der anzeige /:->
Es werden da wohl ein paar Events verschluckt, bzw in eine Queue gelegt. Im Grunde funktioniert der Code aber (ab und zu ;)). Drag & Scroll (also Maus gedrückt halten und dann hoch und runter fahren, wie im Browser mit MididleClick) geht und anschubsen (Während einer Mausbewegung loslassen -> Die Liste scroll sanft weiter und bleibt irgendwann durch "Reibung" stehen) geht auch.
Benutzeravatar
Then
Beiträge: 278
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: scrollen wie iPad ...?

Beitrag von Then »

N´Abend !

bin gerade daheim und habe meinen Code auf der Arbeit gelassen... bin auch schon ein ganzes Stück weiter gekommen. scrollen mit sanftem abbremsen klappt schon und ist eigentlich simples bASIC gewesen... mir fehlt nur noch, daß ich das Sprite an gleicher steller weiterscollen kann... aber auch das finde ich noch.

@NICK : es war ja auch keineswegs böse gemeint mit dem "etwas BASIC like" und so, ich finde Deinen Code ja auch wirklich gelungen... aber dennoch zu professionell :allright: . ich muß das doch auch mal in ein paar Jahren noch verstehen können. so ein Super PB Freak bin ich nicht. :) aber ich arbeite dran. Bei mir ist BASIC : IF ENDIF WHILE etc....

Vom LISTICON wurde mir abgeraten. Außerdem ist ein sanftes Scrollen nicht möglich. Das ganze Windows zu verändern, damit die dicken WurschtFinge touchen können ist mir zu viel. ich habe einen kleinen PC und einen 12" Touchscreen, welchen ich nur als MP3 Player im wohnzimmer nutze. Da soll kein anderes Programm laufen... nur MP3, also startet windows direkt mit dem Player (Hausfrauenkompatibel) 500 GB und fertig.

Mein derzeitiger Player ist zwar gut und auch schon per Finger bedienbar, aber nach 3 Bier trifft man die richtigen songs nicht mehr, also solls anders werden und das mit dem scrollen fand ich ganz toll !

ich poste morgen mal den Code in meinem Basic. Vielleicht kanns ja jemand (NICK :oops: ) entsprechen abändern, damit es beim scrollen komplett klappt.

schönen abend noch !
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: scrollen wie iPad ...?

Beitrag von PureLust »

Hi again, ...
wie gesagt hat mich das Thema interessiert (da ich's ja vermutlich selber bei uns einsetzen werde).

Also hab ich mich mal hingesetzt und was Kleines zusammengestrickt.

Das "Look & Feel" gefällt mir soweit ganz gut und ist eigentlich wie man es von einem normalen Touch-Handy kennt:
- Durch Touch und bewegen rauf/runter kann individuell gescrollt werden
- AutoScrolling starten durch Touch+Bewegen+Loslassen während der Bewegung
- AutoScrolling stoppen durch nochmaligen Touch
- Ein einfacher Touch (ohne Bewegung) bedeutet "anklicken" einer Zeile

Bild

Vielleicht gefällt's ja dem ein oder anderen. ;)

Code: Alles auswählen

EnableExplicit
Define AnzIMG = 120
Define IMGWidth = 350
Define IMGHeight = 40
Dim image(AnzIMG-1)
Dim IGadget(AnzIMG-1)
Define n.i, Event.i, EGadget.i, Quit.l
Define MBDown.l = #False
Define MBYDown.i, MBXDown.i, SelectedLine.i
Define MBDownYScrollPos.l, LastYScrollPos.l, LastYMousePos.l
Define YScrollSpeed.f, ActAutoScrollMSec.i, LastAutoScrollMSec.i, ScrolledYDistance.f, AutoScrolling.l, ScrollStopped.l
Define MMoveYPos1.l, MMoveYPos2.l, MMoveMSec1.i, MMoveMSec2.i

Structure MMove
   XPos.l
   YPos.l
   MSec.i
EndStructure
NewList MouseMove.MMove()

#WinMain = 0
#Scr_Gadget01 = 0
#STB_Main = 0
#PB_Event_MouseMove   = 512
#PB_Event_LMBDown      = 513
#PB_Event_LMBUp      = 514

For n = 0 To AnzIMG-1
   image(n) = CreateImage(#PB_Any, IMGWidth, IMGHeight)
   If image(n)
      If StartDrawing(ImageOutput(image(n)))
         Box(0,0,ImageWidth(image(n)),ImageHeight(image(n)),$FFFFFF-(n%2)*$22222)
         DrawingMode(#PB_2DDrawing_Transparent)
         DrawText(20,10,"Zeile "+Str(n+1),0)
         StopDrawing()
      EndIf
   EndIf
Next n

If OpenWindow(#WinMain,100,100,400,600,"Touch-Scrolling")
   If CreateStatusBar(#STB_Main, WindowID(#WinMain))
      AddStatusBarField(WindowWidth(#WinMain))
      StatusBarText(#STB_Main, 0, "Waiting for Touch")
   EndIf
   
   ScrollAreaGadget(#Scr_Gadget01,10,10,WindowWidth(#WinMain)-20, WindowHeight(#WinMain)-20-StatusBarHeight(#STB_Main), IMGWidth, AnzIMG*IMGHeight)
   For n = 0 To AnzIMG-1
      IGadget(n) = ImageGadget(#PB_Any,0,n*IMGHeight,IMGWidth,IMGHeight,ImageID(image(n)))
   Next n
   Quit = #False
Else
   Quit = #True
EndIf

While Not Quit
   If AutoScrolling
   	Event = WaitWindowEvent(AutoScrolling*2)
   	If AutoScrolling <> #True
   		If WindowMouseX(#WinMain) < GadgetX(#Scr_Gadget01) Or WindowMouseX(#WinMain) > GadgetX(#Scr_Gadget01)+GadgetWidth(#Scr_Gadget01) Or WindowMouseY(#WinMain) < GadgetY(#Scr_Gadget01) Or WindowMouseY(#WinMain) > GadgetY(#Scr_Gadget01)+GadgetHeight(#Scr_Gadget01)
   			Event = #PB_Event_LMBUp
   			ScrollStopped = #True
   		EndIf
   	EndIf
   Else
      Event = WaitWindowEvent()
   EndIf
   EGadget = EventGadget()
;    Debug Str(Event)+"   "+Str(EGadget)
   
   Select Event
      Case #PB_Event_CloseWindow
         Quit = #True
      Case #PB_Event_Gadget
         ScrollStopped = AutoScrolling
         AutoScrolling = #False
         For n = 0 To AnzIMG-1
            If EGadget = IGadget(n)
               MBDown = #True
               MBXDown = WindowMouseX(#WinMain)
               MBYDown = WindowMouseY(#WinMain)
               MBDownYScrollPos = GetGadgetAttribute(#Scr_Gadget01,#PB_ScrollArea_Y)
               SelectedLine = n
               LastYScrollPos   = MBDownYScrollPos
               LastYMousePos   = MBYDown
               StatusBarText(#STB_Main, 0, "You've touched Line "+Str(n+1))
               Break
            EndIf
         Next n
      Case #PB_Event_MouseMove
         If MBDown
            SetGadgetAttribute(#Scr_Gadget01,#PB_ScrollArea_Y, LastYScrollPos-WindowMouseY(#WinMain)+LastYMousePos)
            LastElement(MouseMove())
            AddElement(MouseMove())
            MouseMove()\XPos = WindowMouseX(#WinMain)
            MouseMove()\YPos = WindowMouseY(#WinMain)
            MouseMove()\MSec = ElapsedMilliseconds()
            If ListSize(MouseMove()) > 20
               FirstElement(MouseMove())
               DeleteElement(MouseMove(),1)
            EndIf
            AutoScrolling = 20
            StatusBarText(#STB_Main, 0, "Touch-Scrolling ...")
         EndIf
      Case #PB_Event_LMBUp
         If MBDown
            MBDown = #False
            If Abs(MBYDown - WindowMouseY(#WinMain)) < 4 And ListSize(MouseMove()) < 4 And Not ScrollStopped
               ; Eine Zeile wurde angeklickt !!!
               Debug "Zeile "+Str(SelectedLine+1)+" wurde angeklickt."
               StatusBarText(#STB_Main, 0, "===> You've selected Line "+Str(SelectedLine+1)+ "<===")
            Else
               AutoScrolling = #False
               ScrollStopped = #False
               If ListSize(MouseMove())
                  FirstElement(MouseMove())
                  MMoveYPos1 = MouseMove()\YPos
                  MMoveMSec1 = MouseMove()\MSec
                  LastElement(MouseMove())
                  MMoveYPos2 = MouseMove()\YPos
                  MMoveMSec2 = MouseMove()\MSec
                  YScrollSpeed = 0
                  If MMoveMSec1 <> MMoveMSec2
                     YScrollSpeed = (MMoveYPos1 - MMoveYPos2) / (MMoveMSec2 - MMoveMSec1)
                  EndIf
                  If Abs(YScrollSpeed) > 0.1 And ElapsedMilliseconds() - MMoveMSec1 < 200
                     LastAutoScrollMSec = ElapsedMilliseconds()
                     LastYScrollPos = GetGadgetAttribute(#Scr_Gadget01,#PB_ScrollArea_Y)
                     ScrolledYDistance = 0
                     AutoScrolling = #True
                  EndIf
               EndIf
            EndIf
            ClearList(MouseMove())
         EndIf
   EndSelect
   If AutoScrolling = #True
      ActAutoScrollMSec = ElapsedMilliseconds()
      If ActAutoScrollMSec <> LastAutoScrollMSec
         ScrolledYDistance = ScrolledYDistance + (ActAutoScrollMSec - LastAutoScrollMSec) * YScrollSpeed
         SetGadgetAttribute(#Scr_Gadget01,#PB_ScrollArea_Y, LastYScrollPos + ScrolledYDistance)
         YScrollSpeed = YScrollSpeed * 0.98 - Sign(YScrollSpeed)/1000
         LastAutoScrollMSec = ActAutoScrollMSec
         StatusBarText(#STB_Main, 0, "AutoScrolling at Speed: "+StrF(YScrollSpeed*1000,1)+" Pixel / Second")
         If Abs(YScrollSpeed) < 0.04 Or LastYScrollPos + ScrolledYDistance < 0 Or LastYScrollPos + ScrolledYDistance > GetGadgetAttribute(#Scr_Gadget01,#PB_ScrollArea_InnerHeight)-GadgetHeight(#Scr_Gadget01)
            YScrollSpeed = 0
            AutoScrolling = #False
            StatusBarText(#STB_Main, 0, "AutoScrolling has stopped.")
         EndIf
      EndIf
   EndIf
Wend
Bei Fragen : Einfach fragen. ;)

Gruß, PL.

[Edit:]
Kiffi hat geschrieben:Top! :allright:
VIELEN DANK !!! :D

[Edit2] Hab noch ein paar "Debug"s rausgelöscht.

[Edit3] Hab's nochmal ein wenig verfeinert um den Verlust des MBUp-Events beim Verlassen des Fensters abzufangen (siehe Post von STARGÅTE weiter unten).
Zuletzt geändert von PureLust am 18.05.2010 00:10, insgesamt 5-mal geändert.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: scrollen wie iPad ...?

Beitrag von Kiffi »

PureLust hat geschrieben:Also hab ich mich mal hingesetzt und was Kleines zusammengestrickt.
Top! :allright:

Ich denke, dass diese Art der Bedienung in Zeiten von Touchscreens
auch im Desktop-Bereich eine immer wichtigere Bedeutung bekommt.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: scrollen wie iPad ...?

Beitrag von STARGÅTE »

:allright:

Jup, mit diesem Beispiel komm ich auch klar!

Obwohl halt nun das Problem gibt, wenn man die Maus gedrückt hält, und außerhalb des fnesters loslässt.
Dann wird dieses Event nicht registriert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: scrollen wie iPad ...?

Beitrag von PureLust »

STARGÅTE hat geschrieben:Obwohl halt nun das Problem gibt, wenn man die Maus gedrückt hält, und außerhalb des fnesters loslässt.
Dann wird dieses Event nicht registriert.
Jo, Problem ist mir natürlich bekannt.
Würde sich aber (meines Wissens nach) nur durch API umgehen lassen.
Da mir aber die Portabilität meiner Programme sehr wichtig ist und die Reaktion der Liste auch nach dem "Verschlucken" des Events noch einigermaßen nachvollziehbar oder eben "nicht wirklich dramatisch" ist, ist mir persönlich das so lieber als das Ganze dafür "Windows-only" zu machen.
Auch wird so eine Liste (zumindest bei uns) ja nur als ein Teil eines Vollbild-Fensters eingesetzt - ein "rausfahren" aus dem Fenster (und somit der Verlust des Events) sollte somit garnicht erst eintreten.

[Edit] Ok, hab mich dann doch nochmal dran gegeben und wohl eine Möglichkeit gefunden den Verlust des MBUp-Events auch ohne API (einigermaßen sauber) abzufangen (geänderter Code - siehe oben).
Hoffe, Dir gefällt's so besser. ;)


Ach ja ... würde mich mal interessieren ob's auch auf Linux und/oder Macs läuft wie es sollte.
Feedback wäre diesbezüglich also sehr willkommen. ;)
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Antworten