Seite 1 von 1

Im ListIconGadget die erste Zeile markieren

Verfasst: 20.04.2019 09:41
von legion
Hallo !
Ich habe eine Möglichkeit gesucht beim Start die erste Zeile eines ListIconGadget unter
Linux zu markieren. In diesem Beispiel wird ein Tastendruck auf die Pfeil nach Rechts Taste
simuliert. Ich nehme an es gibt eine elegantere Lösung ?!

Code: Alles auswählen

ImportC ""
  XOpenDisplay(*display)
  XFlush(display)
EndImport

ImportC "/usr/lib/x86_64-linux-gnu/libXtst.so.6"
  XTestFakeKeyEvent(display, keycode, is_press, delay)
EndImport

Procedure SendKey()
  Protected *display = XOpenDisplay(0)
  XTestFakeKeyEvent(*display, 114, #True, 0) ; 114 = Pfeil nach rechts
  XTestFakeKeyEvent(*display, 114, #False, 0)
  XFlush(*display)
EndProcedure

Procedure OpenWindow_0(x = 0, y = 0, width = 1000, height = 600)
    OpenWindow(#PB_Any, x, y, width, height, "ListIcon", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ListIconGadget(0, 0, 0, 1750, 950, "ID", 80, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(0, 1, "Datum", 150)
    AddGadgetColumn(0, 2, "Uhrzeit", 150)
    AddGadgetColumn(0, 3, "Temperatur °C", 200)
    AddGadgetColumn(0, 4, "Luftfeuchte %", 200)
    AddGadgetColumn(0, 5, "Luftdruck hPa", 200)
    AddGadgetItem(0, -1, "1" +Chr(10)+"14.06.2018"+Chr(10)+"23:15:46"+Chr(10)+"16.2"+Chr(10)+"68"+Chr(10)+"1024")
    AddGadgetItem(0, -1, "2" +Chr(10)+"14.06.2018"+Chr(10)+"23:17:22"+Chr(10)+"16.5"+Chr(10)+"68"+Chr(10)+"1024")
    SetActiveGadget(0)
    SendKey()
EndProcedure

OpenWindow_0()
Repeat 
Until WaitWindowEvent() = #PB_Event_CloseWindow

Re: Im ListIconGadget die erste Zeile markieren

Verfasst: 20.04.2019 09:59
von Sicro
Da hast du dir zu viel Aufwand gemacht. Das reicht aus:

Code: Alles auswählen

SetGadgetState(0, 0) ; Markiert die erste Zeile
Bei mir reicht aber schon der Aufruf von SetActiveGadget(0), damit die erste Zeile markiert ist (gtk3/gtk2), außer mit Qt.

Re: Im ListIconGadget die erste Zeile markieren

Verfasst: 20.04.2019 10:20
von legion
Danke für den Tipp !
Hab den Fehler in meiner Anwendung gefunden !
Nach dem Schreiben ins ListIconGadget muss SetGadgetState aufgerufen werden !
So funktioniert es nicht ...

Code: Alles auswählen

Procedure OpenWindow_0(x = 0, y = 0, width = 1000, height = 600)
    OpenWindow(#PB_Any, x, y, width, height, "ListIcon", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ListIconGadget(0, 0, 0, 1750, 950, "ID", 80, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(0, 1, "Datum", 150)
    AddGadgetColumn(0, 2, "Uhrzeit", 150)
    AddGadgetColumn(0, 3, "Temperatur °C", 200)
    AddGadgetColumn(0, 4, "Luftfeuchte %", 200)
    AddGadgetColumn(0, 5, "Luftdruck hPa", 200)
    SetActiveGadget(0)
    SetGadgetState(0,0)
EndProcedure

OpenWindow_0()
AddGadgetItem(0, -1, "1" +Chr(10)+"14.06.2018"+Chr(10)+"23:15:46"+Chr(10)+"16.2"+Chr(10)+"68"+Chr(10)+"1024")
AddGadgetItem(0, -1, "2" +Chr(10)+"14.06.2018"+Chr(10)+"23:17:22"+Chr(10)+"16.5"+Chr(10)+"68"+Chr(10)+"1024")
;SetGadgetState(0,0)
Repeat 
Until WaitWindowEvent() = #PB_Event_CloseWindow