Fragen zu ListIconGadget()

Anfängerfragen zum Programmieren mit PureBasic.
SturerEsel
Beiträge: 11
Registriert: 26.02.2015 15:47

Fragen zu ListIconGadget()

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Fragen zu ListIconGadget()

Beitrag von mk-soft »

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
SturerEsel
Beiträge: 11
Registriert: 26.02.2015 15:47

Re: Fragen zu ListIconGadget()

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fragen zu ListIconGadget()

Beitrag 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
Hygge
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Fragen zu ListIconGadget()

Beitrag von Bisonte »

RSBasic's WinAPI Library durchforsten... da waren auch einige Beispiele drin.

Edit : Link nachreich .... https://www.rsbasic.de/winapi-library/
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
SturerEsel
Beiträge: 11
Registriert: 26.02.2015 15:47

Re: Fragen zu ListIconGadget()

Beitrag 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
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: Fragen zu ListIconGadget()

Beitrag 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!)
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
SturerEsel
Beiträge: 11
Registriert: 26.02.2015 15:47

Re: Fragen zu ListIconGadget()

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fragen zu ListIconGadget()

Beitrag 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:
Hygge
SturerEsel
Beiträge: 11
Registriert: 26.02.2015 15:47

Re: Fragen zu ListIconGadget()

Beitrag 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
Antworten