ListIcon Header centering

Just starting out? Need help? Post your questions and find answers here.
bafometto
New User
New User
Posts: 2
Joined: Fri Sep 06, 2019 12:47 pm

ListIcon Header centering

Post by bafometto »

This simple procedure allows you to center the header of a column of the ListIconGadget.

Code: Select all

; ********************************************************
;		 Center the Header of a column
; ********************************************************
#List=0

Procedure.s Header_Center(Column, font)
	lc=SendMessage_(GadgetID(#List),#LVM_GETCOLUMNWIDTH,Column,0)	; DPI of the Column
	Text$=GetGadgetItemText(#List, -1, Column)	; text of the header
	StartDrawing(WindowOutput(0)) 
	DrawingFont(FontID(font))				; the header's 'font' 
	lt = TextWidth(Text$)					; DPI of Text$
	ls= TextWidth(" ")						; DPI of one space
	StopDrawing()
	k= ((lc-lt)/2)/ls : s$=Space(k)			; calculate the right space to insert before the Text$
	SetGadgetItemText(#List, -1, s$+Text$, Column)
EndProcedure

OpenWindow(0,0,0,718,300,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

LoadFont(0, "Arial", 8, #PB_Font_HighQuality)	
LoadFont(1, "Arial", 16, #PB_Font_Italic | #PB_Font_HighQuality)
LoadFont(2, "Nina",12, #PB_Font_HighQuality)	

ListIconGadget(#List,5,5,706,280,"Column 1",200)
AddGadgetColumn(#List,1,"Column 2",300)
AddGadgetColumn(#List,2,"Column 3",200) 
SendMessage_(SendMessage_(GadgetID(#List),#LVM_GETHEADER,0,0),#WM_SETFONT,FontID(2),0)

For x=0 To 15
	AddGadgetItem(#List,-1,"Text 1"+Chr(10)+"Text 2"+Chr(10)+"Text 3"+Chr(10)+"Text 4"+Chr(10)+"Text 5",0,0)
Next x

Header_Center(1, 2)	; Column (1) and Font nr. (2)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
diskay
User
User
Posts: 25
Joined: Sun Aug 02, 2015 7:17 pm

Re: ListIcon Header centering

Post by diskay »

Code: Select all

Procedure ListIconGadget_JustifyColumn(Gadget, Item, Align.s = "left")
    Protected lvc.LVCOLUMN\mask = #LVCF_FMT
    Select LCase(Trim(Align))
        Case "left"
            lvc\fmt = #LVCFMT_LEFT
        Case "right"
            lvc\fmt = #LVCFMT_RIGHT
        Case "center"
            lvc\fmt = #LVCFMT_CENTER
        Default
            lvc\fmt = #LVCFMT_LEFT
    EndSelect
    SendMessage_(GadgetID(Gadget), #LVM_SETCOLUMN, Item, @lvc)
EndProcedure
Post Reply