Aktuelle Zeit: 30.05.2020 22:40

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 09.01.2020 13:51 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo Leute,

möchte beim ListIconGadget Spaltenüberschrift zentrieren!

Keine Ahnung wie das geht!

Code:
If OpenWindow(0, 100, 100, 300, 100, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 5, 5, 290, 90, "Name", 290, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
   ; Hier der EINTRAG den ich zentrieren möchte
   SetGadgetItemText(0, -1, "EINTRAG", 0 )
   Repeat
     Event = WaitWindowEvent()
   Until Event = #PB_Event_CloseWindow
 EndIf


Jemand vielleicht eine Ahnung?


Gruss ... Velindos!

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 09.01.2020 14:33 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
Velindos hat geschrieben:
möchte beim ListIconGadget Spaltenüberschrift zentrieren!

Bei solchen Fragen sollte man als erstes einen Blick in RSBasics WinAPI-Bibliothek werfen. Dort kann man dann dieses Beispiel finden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 09.01.2020 15:15 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo,

Hatte ich vergessen - Danke für deinen Tip!

Hab nur ein Problem das die ganze Spalte jetzt zentriert ist.

Wollte jedoch
Zitat:
das nur die Spaltenüberschrift

zentriert ist!

Gruss .. Velindos!

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 09.01.2020 16:59 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
viewtopic.php?f=8&t=31330

_________________
Download der Module
Download der Programme

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 10.01.2020 11:04 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
Velindos hat geschrieben:
Wollte jedoch
Zitat:
das nur die Spaltenüberschrift

zentriert ist!

Gruss .. Velindos!

Code:
EnableExplicit

#ColumnOfCenteredHeader = 1

Define DefaultListIconCallback.I

Procedure CustomListIconCallback(WindowHandle.I, Msg.I, WParam.I, LParam.I)
  Shared DefaultListIconCallback.I

  Protected HeaderText.S
  Protected *NMCustomDraw.NMCUSTOMDRAW
  Protected *NMHdr.NMHDR
  Protected Result.I

  Result = CallWindowProc_(DefaultListIconCallback, WindowHandle.I, Msg.I,
    WParam.I, LParam.I)

  If Msg = #WM_NOTIFY
    *NMHdr = LParam

    If *NMHdr\code = #NM_CUSTOMDRAW
      *NMCustomDraw = LParam

      Select *NMCustomDraw\dwDrawStage
        Case #CDDS_PREPAINT
          Result = #CDRF_NOTIFYITEMDRAW
        Case #CDDS_ITEMPREPAINT
          If *NMCustomDraw\dwItemSpec = #ColumnOfCenteredHeader
            SetBkMode_(*NMCustomDraw\hdc, #TRANSPARENT)
            HeaderText = GetGadgetItemText(0, -1, *NMCustomDraw\dwItemSpec)
            DrawText_(*NMCustomDraw\hdc, @HeaderText, Len(HeaderText),
              *NMCustomDraw\rc,
              #DT_CENTER | #DT_VCENTER | #DT_SINGLELINE)
            Result = #CDRF_SKIPDEFAULT
          EndIf
      EndSelect
    EndIf
  EndIf

  ProcedureReturn Result
EndProcedure

OpenWindow(0, 200, 100, 400, 100,
  "ListIconGadget mit zentriertem Titeltext in 2.Spalte")
ListIconGadget(0, 10, 10, WindowWidth(0) - 20, WindowHeight(0) - 20,
  "Name", 110, #PB_ListIcon_GridLines)
AddGadgetColumn(0, 1, "Address", GadgetWidth(0) - GetGadgetItemAttribute(0, 0,
  #PB_ListIcon_ColumnWidth) - 4)
AddGadgetItem(0, -1, "Harry Rannit" + #LF$ +
  "12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit" + #LF$ +
  "130 PureBasic Road, BigTown, CodeCity")
AddGadgetItem(0, -1, "Didi Foundit" + #LF$ +
  "321 Logo Drive, Mouse House, Downtown")

DefaultListIconCallback = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC,
  @CustomListIconCallback())

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 10.01.2020 15:53 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo Leute,

Danke für eure Unterstützung. Hab mal das auf mein Beispiel gebracht!

Code:
EnableExplicit
; Define *DefaultListIconCallback.I
Global *DefaultListIconCallback
Enumeration
EndEnumeration
#ColumnOfCenteredHeader = 0
Global Work_L_ListIcon

Global b

Procedure Callback_Work_ListIcon(WindowHandle.I, Msg.I, WParam.I, LParam.I)
;   Shared *DefaultListIconCallback.I
 
  Protected HeaderText.S
  Protected *NMCustomDraw.NMCUSTOMDRAW
  Protected *NMHdr.NMHDR
  Protected Result.I
 
  Result = CallWindowProc_(*DefaultListIconCallback, WindowHandle.I, Msg.I,WParam.I, LParam.I)
 
  If Msg = #WM_NOTIFY
    *NMHdr = LParam
   
    If *NMHdr\code = #NM_CUSTOMDRAW
      *NMCustomDraw = LParam
     
      Select *NMCustomDraw\dwDrawStage
        Case #CDDS_PREPAINT
          Result = #CDRF_NOTIFYITEMDRAW
        Case #CDDS_ITEMPREPAINT
          If *NMCustomDraw\dwItemSpec = #ColumnOfCenteredHeader
            SetBkMode_(*NMCustomDraw\hdc, #TRANSPARENT)
            HeaderText = GetGadgetItemText(Work_L_ListIcon, -1, *NMCustomDraw\dwItemSpec)
            DrawText_(*NMCustomDraw\hdc, @HeaderText, Len(HeaderText),
                      *NMCustomDraw\rc,
                      #DT_CENTER | #DT_VCENTER | #DT_SINGLELINE)
            Result = #CDRF_SKIPDEFAULT
          EndIf
      EndSelect
    EndIf
  EndIf
 
  ProcedureReturn Result
EndProcedure
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  Work_L_ListIcon = ListIconGadget(#PB_Any,10,10,480,230,"Test-Überschrift",400,0)
  For b = 0 To 14         
    AddGadgetItem(Work_L_ListIcon, b,  "Column " + Str(b) )
  Next
  *DefaultListIconCallback = SetWindowLongPtr_(GadgetID(Work_L_ListIcon), #GWL_WNDPROC,@Callback_Work_ListIcon())
 
 
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


Da ich bereits einen ListiconCallback habe, habe ich die Sache anschliessend
integriert und getest. Was zu Folge hatte das mein Windowsfenster nur teilweise angezeigt wird!

Keine Ahnung was jetzt falsch ist, wobei Demo läuft!

Gruss ... Velindos!

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Zuletzt geändert von Velindos am 11.01.2020 12:52, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 10.01.2020 18:32 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
Ich kann Dir nur weiterhelfen, wenn Du Dir die Mühe machst, ein kleines, zusammengestrichenes Beispiel zu erstellen, das lauffähig ist oder zumindest auf einen Fehler läuft. Nur mit der Prozedur Callback_Work_ListIcon() alleine komme ich nicht weiter, z.B. wo ist die wahrscheinlich globale Variable VelindosModus definiert, welche Gadgets werden verwendet, wie sieht die Event-Schleife aus, wie erfolgt das Subclassing des ListIconGadgets usw.?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 11.01.2020 15:49 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo Leute,

habe die Sache verworfen und einfach Leerzeichen eingefügt zur Zentrierung!
Danke für eure Unterstützung!

Gruss ... Velindos!

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 14.01.2020 09:56 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
Ich habe Dir einmal eine Alternativlösung mit WindowCallback erstellt, die nicht mit dem schon vorhandenen Subclassing Deines ListIconGadget kollidiert:
Code:
EnableExplicit

#ColumnOfCenteredHeader = 1

Procedure WindowCallback(WindowHandle.I, Msg.I, WParam.I, LParam.I)
  Protected HeaderHandle.I
  Protected HeaderText.S
  Protected *NMCustomDraw.NMCUSTOMDRAW
  Protected *NMHeader.NMHEADER
  Protected Result.I = #PB_ProcessPureBasicEvents

  If Msg = #WM_NOTIFY
    *NMHeader = LParam
    HeaderHandle = SendMessage_(GadgetID(0), #LVM_GETHEADER, 0, 0)

    If *NMHeader\hdr\hwndFrom = HeaderHandle
      *NMCustomDraw = LParam

      Select *NMCustomDraw\dwDrawStage
        Case #CDDS_PREPAINT
          Result = #CDRF_NOTIFYITEMDRAW
        Case #CDDS_ITEMPREPAINT
          If *NMCustomDraw\dwItemSpec = #ColumnOfCenteredHeader
            SetBkMode_(*NMCustomDraw\hdc, #TRANSPARENT)
            HeaderText = GetGadgetItemText(0, -1, *NMCustomDraw\dwItemSpec)
            DrawText_(*NMCustomDraw\hdc, @HeaderText, Len(HeaderText),
              *NMCustomDraw\rc, #DT_CENTER | #DT_VCENTER | #DT_SINGLELINE)
            Result = #CDRF_SKIPDEFAULT
          EndIf
      EndSelect
    EndIf
  EndIf

  ProcedureReturn Result
EndProcedure

OpenWindow(0, 200, 100, 400, 100,
  "ListIconGadget mit zentriertem Titeltext in 2.Spalte")
ListIconGadget(0, 10, 10, WindowWidth(0) - 20, WindowHeight(0) - 20,
  "Name", 110, #PB_ListIcon_GridLines)
AddGadgetColumn(0, 1, "Address", GadgetWidth(0) - GetGadgetItemAttribute(0, 0,
  #PB_ListIcon_ColumnWidth) - 4)
AddGadgetItem(0, -1, "Harry Rannit" + #LF$ +
  "12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit" + #LF$ +
  "130 PureBasic Road, BigTown, CodeCity")
AddGadgetItem(0, -1, "Didi Foundit" + #LF$ +
  "321 Logo Drive, Mouse House, Downtown")

SetWindowCallback(@WindowCallback(), 0)

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget Spaltenüberschrift zentrieren
BeitragVerfasst: 14.01.2020 10:58 
Offline

Registriert: 21.01.2008 19:11
Shardik hat geschrieben:
Ich habe Dir einmal eine Alternativlösung mit WindowCallback erstellt, die nicht mit dem schon vorhandenen Subclassing Deines ListIconGadget kollidiert:
Code:
...
Ich sehe da keinen zentrierten Text im ColumnHeader.
"Select *NMCustomDraw\dwDrawStage" hat nie den Wert "#CDDS_ITEMPREPAINT".

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye