Combobox: Event für Anklicken des Scrollbalkens ausfiltern?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
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

Beitrag von ts-soft »

@DarkDragon
Kannste bei vielen Screencapture Programmen einstellen
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.
Bild
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Immer noch Offtopic: Ich kann dir IrfanView empfehlen - genial

@Andre: mach schnell! Ich freu mich schon soooooooooooooo
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

ts-soft hat geschrieben:@DarkDragon
Kannste bei vielen Screencapture Programmen einstellen
Ich dachte eher an eine art Tastenkombination mit der Druck/S-Abf Taste.
Naja macht nichts, beim ScreenVideoCapturing geht das mit dem Einstellen ob die Maus sichtbar ist nicht, da ist sie halt sichtbar, aber nicht immer mit dem aktuellen cursor ;) .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
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

Beitrag von ts-soft »

@DarkDragon
Sehr empfehlenswert ist z.B: http://de.techsmith.com/
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.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

:? Danke, aber hab ich jemals danach gefragt(Nach einem externen Tool)?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

DarkDragon hat geschrieben:[OffTopic=Sorry]Andre, wie hast du den Mauszeiger ins Bild bekommen?[/OffTopic]
Wie bereits schon richtig vermutet wurde: ich habe Irfanview genommen mit der entsprechenden Option "Mauszeiger mit fotografieren".

"Back on topic": ich habe heute Nacht noch länger weiterprobiert, aber eben keine gewünschte Lösung gefunden. Vielleicht hat ja noch jemand eine Idee... :roll:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Habe nun mit Hilfe meines Kumpels David 'tinman' die folgende Lösung aller Probleme !!! :D

(Verwendung eines Callback in Verbindung mit den speziellen Message/Notification-Flags war die einzige verbleibende Möglichkeit)

Code: Alles auswählen

Enumeration
  #MainWindow
  #AuthorWin
  #AuthorWinFrame
  #AuthorWinText
  #AuthorWinCombo
  #AuthorWinQuit
  #AuthorWinExit
  #AuthorWinChoose
  #SearchAuthorSelect
EndEnumeration


Global author_changed.l

Procedure.l callback(hwnd.l, Message.l, wParam.l, lParam.l)
  DefType.l   result
  DefType.l   control_id
  DefType.l   notification
  
  result = #PB_ProcessPureBasicEvents
  
  If IsWindow(#AuthorWin) And hwnd = WindowID(#AuthorWin)
    If Message=#WM_COMMAND
      notification = (wParam >> 16) & $FFFF
      control_id = wParam & $FFFF
      
      If control_id = #AuthorWinCombo
        If notification = #CBN_CLOSEUP
          state = GetGadgetState(#AuthorWinCombo)
          ;Debug "Callback selected item "+GetGadgetText(#AuthorWinCombo)+" "+Str(state)
          If state>=0
            author_changed = 1
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf
  
  ProcedureReturn result
EndProcedure


;- Authors-Window
Procedure OpenAuthors()
  ; Opens a new window for choosing authors
  ; nearby the mouse cursor
  If OpenWindow(#AuthorWin,0,0,190,104,#PB_Window_BorderLess|#PB_Window_Invisible,"",WindowID(#MainWindow))
    SetWindowCallback(@callback())
    
    If CreateGadgetList(WindowID())
      x = 8 : y = 28 : w = 174
      Frame3DGadget (#AuthorWinFrame, 3,3,184,98,"Choose author")                        ; Title: Choose author to search:
      TextGadget    (#AuthorWinText, x,y,w,20,"Authors",#PB_Text_Center) : y + 16   ; Authors
      
      AdvancedGadgetEvents(#TRUE)
      ComboBoxGadget(#AuthorWinCombo,x,y,w,400)                              : y + 26
      For a=1 To 100
        AddGadgetItem(#AuthorWinCombo,-1,"Test "+Str(a))
      Next
      AdvancedGadgetEvents(#FALSE)
      
      ButtonGadget  (#AuthorWinQuit,  x,y,w,24,"Cancel")              ; Cancel  (after choosing a keyword the window will be automatically closed)
    EndIf
    AddKeyboardShortcut(#AuthorWin,#PB_Shortcut_Escape,#AuthorWinExit)
    AddKeyboardShortcut(#AuthorWin,#PB_Shortcut_Return, #AuthorWinChoose)
    
    ActivateGadget(#AuthorWinCombo)
  EndIf
EndProcedure

Procedure ShowAuthors()
  SetGadgetState(#AuthorWinCombo,-1)
  UseWindow(#AuthorWin)
  MoveWindow(DesktopMouseX(),DesktopMouseY())
  HideWindow(#AuthorWin,0)
  SetWindowPos_(WindowID(#AuthorWin),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
  EnableWindow_(WindowID(#MainWindow), #False)
EndProcedure

Procedure HideAuthors()
  EnableWindow_(WindowID(#MainWindow), #True)
  HideWindow(#AuthorWin,1)
EndProcedure

Flags.l = #PB_Window_SystemMenu|#PB_Window_TitleBar
MainWin = OpenWindow(#MainWindow, 100, 100, 200, 100, Flags, "Test")
If MainWin
  If CreateGadgetList(WindowID())
    ButtonGadget(#SearchAuthorSelect, 50, 50, 20, 20, "...")
  EndIf
EndIf

OpenAuthors()


run = #True
Repeat
  author_changed = 0
  
  Event = WaitWindowEvent()
  
  WindowID = EventWindowID()
  GadgetID = EventGadgetID()
  MenuID   = EventMenuID()
  EvTypeID = EventType()
  
  ;- Events MainWin
  If WindowID = #MainWindow
    ;- MainWin ExitEvent
    If Event = #PB_EventCloseWindow
      run = #False
      
    ElseIf Event = #PB_EventGadget
      If GadgetID = #SearchAuthorSelect
        ShowAuthors()
      EndIf
    EndIf
    
    ;- Events Authors
  ElseIf WindowID = #AuthorWin
    
    If Event = #PB_EventGadget
      
      If GadgetID = #AuthorWinQuit
        HideAuthors()
        
      ElseIf GadgetID = #AuthorWinCombo      ; Author choosen
        
        If author_changed
          Debug "Selected item: " + GetGadgetText(#AuthorWinCombo)+" "+Str(GetGadgetState(#AuthorWinCombo))
          HideAuthors()
        EndIf
      EndIf
      
    EndIf
    
    Select MenuID
    Case #AuthorWinExit
      Debug "cancelled author list"
      HideAuthors()
      
    Case #AuthorWinChoose
      Debug "Return selected item: " + GetGadgetText(#AuthorWinCombo)+" "+Str(GetGadgetState(#AuthorWinCombo))
      HideAuthors()
    EndSelect
    
  EndIf
  
Until run = #False
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Donald
Beiträge: 307
Registriert: 03.01.2005 02:21
Wohnort: Marl

Beitrag von Donald »

Andre hat geschrieben:... Hat jedoch einen kleinen Haken: bei Tastaturbedienung wird jetzt bereits beim Scrollen mit den Cursortasten ein Element ausgewählt.
versuche es mal damit

Code: Alles auswählen

; ********** Abfrage der Auswahlliste ********** 
      If event2 = 1  Or event2 = 13         ; LeftMouseButton or RETURN pressed 
      maus1=1
      EndIf
      If event2=0 And maus1=1
      maus1=0
        a = GetGadgetState(#AuthorWinCombo) 
        If a > 0 
          Debug "Selected item: " + GetGadgetText(#AuthorWinCombo) 
          HideAuthors() 
        EndIf 
      EndIf 
; **********************************************   
DONALD :D www.PureBasic-Donald.de gibt es im Moment nicht mehr
PureBasic - jaPBe - PureVisonXP - TailBite
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

@Donald: nützt leider nichts, damit tritt wieder das ursprüngliche Problem auf, dass bei einem Klick auf den Scrollbalken trotzdem ein Eintrag ausgewählt wird.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Donald
Beiträge: 307
Registriert: 03.01.2005 02:21
Wohnort: Marl

Beitrag von Donald »

Andre hat geschrieben:@Donald: nützt leider nichts, damit tritt wieder das ursprüngliche Problem auf, dass bei einem Klick auf den Scrollbalken trotzdem ein Eintrag ausgewählt wird.
ja hast recht, aber ein anderer "Fehler" wurde damit behoben.
Sobald man die linke Maustaste klickt und festhält wurde bei deiner
Routine sofort der Eintrag gewählt.
Nach dem ändern konnte dann mit der Maus bei gehaltender Maustaste
aus gescrollt werden.

Aber egal du hast was anderes gesucht. Sollte wohl etwas genauer
lesen und nicht so schnell überfliegen.
DONALD :D www.PureBasic-Donald.de gibt es im Moment nicht mehr
PureBasic - jaPBe - PureVisonXP - TailBite
Antworten