Seite 1 von 1

Zelle aus ListIconGadget auslesen

Verfasst: 18.01.2020 22:26
von kmais
Guten Abend, Leute ....

Trotz intensiver Suche nichts gefunden ... :-(, außer für Windows.

Also, meine Frage ist, gibt es eine Möglichkeit unter Linux bei einem mehrspaltigen ListIconGadget eine Zelle durch Anklicken zu identifizieren? Also deren Spaltenindex und Zeilenindex (Eintrag) zu ermitteln?
Seitens des Gadgets selber scheint das nicht vorgesehen zu sein. Verstehe ich eigentlich nicht. Ein GridView existiert ja leider auch nicht.

Danke für jede Hilfe, Anregung, etc ....

.....Peter .....

Re: Zelle aus ListIconGadget auslesen

Verfasst: 18.01.2020 22:49
von mk-soft

Re: Zelle aus ListIconGadget auslesen

Verfasst: 19.01.2020 08:54
von Omi
Hallo kmais.

Ein (etwas schlampiges älteres) Beispiel für das Ermitteln der ListIconGadget-Zelle unter Linux-Gtk wäre hier.

http://www.chabba.de/Linux/ListIconGadg ... &Column.pb

Die Ausgabe erfolgt dort auf Doppel-Linksklick. Bei anderen Wünschen müsste man etwas rumtüfteln, da das Klickverhalten ins ListIconGadget unter Linux-Gtk anders als auf Windows ist. Für das gtk_tree_view_get_cursor_() muss die Zeile selektiert sein was z.B. unter Gtk bei einem Rechtsklick nicht automatisch geschieht wie bei Windows!

Vielleicht hat ja Shardik auch noch was OS-übergreifendes im Angebot. Schau Dich mal hier um:
https://www.purebasic.fr/english/viewto ... 3&start=11


Gruß Charly

Re: Zelle aus ListIconGadget auslesen

Verfasst: 19.01.2020 09:21
von ccode_new
Hallo Leute,
da ich noch keine Lösung für QT gefunden habe
spreche ich jetzt eine Empfehlung für die tollen Module von "Thorsten1867" aus.

Meine aktuelle Empfehlung: ListEx

Nutze dabei die beiden Methoden: EventRow und EventColumn

Re: Zelle aus ListIconGadget auslesen

Verfasst: 19.01.2020 17:56
von ccode_new
..
Und für den Start reicht auch das GridEx-Modul zu.

Das funktioniert auch sehr gut unter Linux mit Qt.

Hier einmal ein schnelles kleines Beispiel:

Code: Alles auswählen

Enumeration
    #Win
    #Grid
  EndEnumeration
  
  Global row, column, Event
  

  If OpenWindow(#Win, 0, 0, 800, 470, "GridEX - Gadget - Test", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
    
    row = 10 : column = 3
    GridEx::Gadget(#Win, #Grid, 10, 10, 780, 450, row, column, GridEx::#Border|GridEx::#ScrollBars)
    
    GridEx::SetCellAlign(#Grid,  1, 1, GridEx::#Center)
    GridEx::SetCellType(#Grid,  1, 1, GridEx::#Edit) ;Editierbar
    GridEx::SetCellColor(#Grid,  1, 1, #PB_Gadget_BackColor,  $00FFFF) ;BGR
    
    GridEx::SetCellFont(#Grid, 2, 2, "Arial", 16)
    GridEx::SetCellColor(#Grid,  2, 2, #PB_Gadget_FrontColor,  $0000FF) ;BGR
    GridEx::SetCellText(#Grid, 2, 2, "Hallo kmais!")
    
    GridEx::SetColumnWidth(#Grid, 2, 200)
    GridEx::SetRowHeight(#Grid, 2, 100)
    
    GridEx::Refresh(#Grid)
    
    Repeat
      Event = WaitWindowEvent()
      
      Select Event
        Case #PB_Event_Gadget
          Select EventGadget()
            Case #Grid
              If EventType() = #PB_EventType_LeftClick
                Debug "aktuelle Zeile: " + Str(GridEx::GetCurrentCell(#Grid, GridEx::#Row))
                Debug "aktuelle Spalte: " + Str(GridEx::GetCurrentCell(#Grid, GridEx::#Column))
              EndIf
          EndSelect
              
        Case #PB_Event_Menu

      EndSelect
    Until  Event = #PB_Event_CloseWindow
   
  EndIf