ListiconGadget: Event bei Änderung der Spaltenbreite

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von ProgOldie »

Ich möchte eine ggf. geänderte Spaltenbreite abspeichern. Mit GetGadgetItemAttribute() kann man die aktuelle Breite einer Spalte zwar ermitteln. Aber wie merkt man, dass die Spaltenbreite geändert wurde? Ich möchte ja nicht ständig die aktuelle Spaltenbreite abfragen und mit den abgespeicherten Einstellungen vergleichen.
Wie generiert man ein Event bei Änderung der Spaltenbreite?
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Benutzeravatar
Bisonte
Beiträge: 2474
Registriert: 01.04.2007 20:18

Re: ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von Bisonte »

Da bei der Änderung kein #PB_EventType_Change ausgelöst wird, bleibt wohl nur noch das "dauernde" Abfragen.
Am besten mit einem AddWindowTimer() .... Es sei denn, es gäbe da ein API Konstrukt, was das ganze dann allerdings
auf ein OS "fixiert".
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von RSBasic »

Code: Alles auswählen

EnableExplicit

Define a
Global ListCB

Procedure ListCB(hWnd, Message, wParam, lParam)
  Protected *HD_NOTIFY.HD_NOTIFY
  Protected Result = CallWindowProc_(ListCB, hWnd, Message, wParam, lParam)
  
  Select Message
    Case #WM_NOTIFY
      *HD_NOTIFY = lParam
      If *HD_NOTIFY\hdr\code = #HDN_ITEMCHANGED
        Debug "Breite der Spalte " + Str(*HD_NOTIFY\iItem+1) + " hat sich geändert"
      EndIf
  EndSelect
  
  ProcedureReturn Result
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(1, 0, 0, WindowWidth(0), WindowHeight(0), "Spalte 1", 150, 0)
  AddGadgetColumn(1, 1, "Spalte 2", 150)
  AddGadgetColumn(1, 2, "Spalte 3", 150)
  
  For a=1 To 10
    AddGadgetItem(1, -1, "Eintrag " + Str(a), 0, 0)
  Next
  
  ListCB = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @ListCB())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Re: ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von ProgOldie »

Danke RSBasic, genau das war's.
Habe auch gleich aus deiner WinAPI noch den Klick auf den Header darin untergebracht.
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Benutzeravatar
HeX0R
Beiträge: 3056
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von HeX0R »

Ich mache sowas üblicherweise beim Beenden des Programms.
Welchen Sinn macht es, das on-the-fly zu überwachen?
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

Re: ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von ts-soft »

HeX0R hat geschrieben:Ich mache sowas üblicherweise beim Beenden des Programms.
Welchen Sinn macht es, das on-the-fly zu überwachen?
Dasselbe, hab ich mich auch gefragt <)
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
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Re: ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von ProgOldie »

@ts-soft, @HeXOR

o.K., das macht man sinnvollerweise in aller Regel erst am Ende. Manchmal hat man halt ein Brett vor dem Kopf.... :o
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
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

Re: ListiconGadget: Event bei Änderung der Spaltenbreite

Beitrag von ts-soft »

ProgOldie hat geschrieben:Manchmal hat man halt ein Brett vor dem Kopf.... :o
Das gehört beim Programmieren einfach dazu :D
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
Antworten