Seite 1 von 2

Fragen zu ListIconGadget()

Verfasst: 23.07.2019 18:19
von SturerEsel
Guten Tag,

neu im Forum habe ich doch gleich mal eine Frage an die werten Programmierer:

Wie ändere ich die Farbe der Überschrift in einer Tabelle, bzw. wie fange ich einen Mausklick aus der Überschrift ab?

Mit dem Eintrag (0, 0) ändere ich nur die Farbe in bzw. erhalte ich nur Ergebnisse aus der ersten Datenzeile, aber - wie gesagt - wie mache ich das mit der Überschrift?

Außerdem: wie fange ich den Klick aus einer Spalte in der Überschrift ab? Damit möchte ich später die Einträge meiner eigenen Tabelle sortieren.

Code: Alles auswählen

If OpenWindow(0, 1, 1, 795, 300, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
  ListIconGadget(0, 5, 5, 790, 290, "Name", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection |  #PB_ListIcon_GridLines )
  AddGadgetColumn(0, 1, "Address", 250)
  AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
  AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
  
  SetGadgetItemColor (0, 0, #PB_Gadget_BackColor, $CDB79E, #PB_All)  ;ändert nur die Farbe der ersten Datenzeile
 
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Gadget  
        If GetGadgetItemState(0, 0) & #PB_ListIcon_Selected  ;bringt nur Ergebnisse aus der ersten Datenzeile
          Debug "erste Zeile ausgewählt"
        EndIf 
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
Vielen Dank und beste Grüße,
Chris

Re: Fragen zu ListIconGadget()

Verfasst: 23.07.2019 19:41
von mk-soft

Re: Fragen zu ListIconGadget()

Verfasst: 23.07.2019 20:05
von SturerEsel
Hallo mk-soft,

danke für den Link, so kann man wenigstens die Textfarbe der Überschrift einstellen.
Hast du auch noch einen Tipp für meine anderen Fragen?

- wie fange ich einen Mausklick aus der Überschrift ab?
- wie fange ich den Klick aus einer Spalte in der Überschrift ab?


LG

Re: Fragen zu ListIconGadget()

Verfasst: 23.07.2019 20:14
von Kiffi
Das hier könnte auch ganz interessant sein: ListEx Gadget - Module

Ich könnte mir auch vorstellen, dass Thorsten fehlende Features ergänzen würde, wenn man ihn ganz lieb darum fragt.

Grüße ... Peter

Re: Fragen zu ListIconGadget()

Verfasst: 23.07.2019 20:17
von Bisonte
RSBasic's WinAPI Library durchforsten... da waren auch einige Beispiele drin.

Edit : Link nachreich .... https://www.rsbasic.de/winapi-library/

Re: Fragen zu ListIconGadget()

Verfasst: 23.07.2019 22:45
von SturerEsel
Hallo,

vielen Dank für die Links, da finde ich etwas. Ich hätte nicht gedacht, dass ein so einfaches Problem einen solchen Rattenschwanz nach sich zieht!

LG, Chris

Re: Fragen zu ListIconGadget()

Verfasst: 24.07.2019 11:22
von Thorsten1867
Kiffi hat geschrieben:Das hier könnte auch ganz interessant sein: ListEx Gadget - Module

Ich könnte mir auch vorstellen, dass Thorsten fehlende Features ergänzen würde, wenn man ihn ganz lieb darum fragt.

Grüße ... Peter
Ich habe mal vorsorglich "individuelle Farben für die Spalten der Kopfzeile" in das ListEx-Module eingefügt, falls jemand auf die Idee kommen sollte, mich "ganz lieb zu fragen". :mrgreen:

z.B.: Text in Spalte 1 der Kopfzeile in ROT:

Code: Alles auswählen

ListEx::SetItemColor(#List, ListEx::#Header, ListEx::#FrontColor, $0000FF, 1)
PS: Sortierung mittels Spaltenklick funktioniert bereits (Sortierung für Deutsch!)

Re: Fragen zu ListIconGadget()

Verfasst: 24.07.2019 11:43
von SturerEsel
Moin Thorsten,

ich hätte dich sicher noch ganz lieb gefragt! :-D Vielen Dank für das Update, das Programm ist sehr professionell und ich kann sicher einige Dinge daraus herausziehen (und viel davon lernen).

LG, Chris

Re: Fragen zu ListIconGadget()

Verfasst: 24.07.2019 12:20
von Kiffi
Thorsten1867 hat geschrieben:Ich habe mal vorsorglich "individuelle Farben für die Spalten der Kopfzeile" in das ListEx-Module eingefügt, falls jemand auf die Idee kommen sollte, mich "ganz lieb zu fragen". :mrgreen:
:lol: :allright:

Re: Fragen zu ListIconGadget()

Verfasst: 27.07.2019 14:42
von SturerEsel
Moin,

Respekt an Thorsten für seinen Code - aber der ist viel zu mächtig und umfangreich für mich. Ich brauche nur die Abfrage für den Mausklick in der ersten Reihe.

Bei RSBasic habe ich genau das richtige gefunden:

Code: Alles auswählen

EnableExplicit

Global MyOldList
Declare ListCB(hWnd, Message, wParam, lParam)
Declare GetListColumnClicked()

Procedure ListCB(hWnd, Message, wParam, lParam)
  Protected *Header.HD_NOTIFY
  Protected Result=CallWindowProc_(MyOldList, hWnd, Message, wParam, lParam)
  Protected ListCB_Column_Clicked
  
  Select Message
    Case #WM_NOTIFY
      *Header=lParam
      If *Header\hdr\code=#HDN_ITEMCLICK
         ListCB_Column_Clicked=*Header\iItem
         MessageRequester("","Spalte "+Str(ListCB_Column_Clicked)+" wurde geklickt.",0)
      EndIf
  EndSelect

  ProcedureReturn Result
EndProcedure

If OpenWindow(0, 0, 0, 500, 250, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(1, 10, 10, 480, 230, "Spalte 0", 100, 0)
  AddGadgetColumn(1, 1, "Spalte 1", 100)
  AddGadgetColumn(1, 2, "Spalte 2", 100)
  
  MyOldList = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @ListCB())
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; IDE Options = PureBasic 5.10 Beta 5 (Windows - x64)
; CursorPosition = 14
; Folding = -
; EnableXP
; EnableUser
Aber ich bin zu dumm! Was muss denn jetzt drinstehen in der Procedure "GetListColumnClicked()", die bereits oben deklariert ist. Entschuldigt meine Unwissenheit :(

LG, Chris

PS Beim Einfügen wurde die Einrückung nicht übernommen

__________________________________________________
Quote-Tags>Code-Tags
27.07.2019
RSBasic