В хелпе не нашел.
Все прижимается к левому краю - а надо по центру и к правому.
Горизонтальное выравнивание в ячейках ListIconGadget ?
Сообщений 1 страница 8 из 8
Поделиться107.11.2013 07:40:14
Поделиться207.11.2013 11:56:18
http://www.purearea.net/pb/CodeArchiv/G … e+right.pb
#Gadget_ListView = 0
ListViewSpalte.LV_COLUMN
ListViewSpalte\mask = #LVCF_FMT
If OpenWindow(0,0,0,300,100, "",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListViewHandle = ListIconGadget(#Gadget_ListView,0,0,300,100, "1", 100, #PB_ListIcon_GridLines)
AddGadgetColumn(#Gadget_ListView, 1, "2", 80)
AddGadgetColumn(#Gadget_ListView, 2, "3", 80)
EndIf
Spalte = 1 ; Spalte festlegen
ListViewSpalte\fmt = #LVCFMT_RIGHT ; Ausrichtung festlegen
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, Spalte, @ListViewSpalte) ; Message senden
Spalte = 2 ; Spalte festlegen
ListViewSpalte\fmt = #LVCFMT_CENTER ; Ausrichtung festlegen
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, Spalte, @ListViewSpalte) ; Message senden
AddGadgetItem(#Gadget_ListView,0,"Links (standart)" + Chr(10) + "Rechts" + Chr(10) + "Mitte")
Repeat ;
EventID=WaitWindowEvent()
Until EventID=#PB_Event_CloseWindow
EndIf
EndПоделиться308.11.2013 03:16:52
OK.
Как работающий пример - Мое применение
- в таблице есть только выравнивание по прав.краю (кроме дефолтного по-левому)
Procedure Open_Window_0()
Protected ListViewHandle
Protected ListViewCol.LV_COLUMN ; для управления столбцом
ListViewCol\mask = #LVCF_FMT
If OpenWindow(#Window_0, ....)
;-
ListViewCol\fmt = #LVCFMT_RIGHT ; выравнивать по правому краю
ListViewHandle = ListIconGadget(#w0ListIcon_0, 20, 30, 700, 310, "ID", 50,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines )
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, 0, @ListViewCol) ; Message senden
AddGadgetColumn(#w0ListIcon_0, 1, "IP", 100)
AddGadgetColumn(#w0ListIcon_0, 2, "Watch", 60)
AddGadgetColumn(#w0ListIcon_0, 3, "CopyCounter", 80)
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, 3, @ListViewCol) ; Message senden
AddGadgetColumn(#w0ListIcon_0, 4, "MaxToner", 80)
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, 4, @ListViewCol) ; Message senden
AddGadgetColumn(#w0ListIcon_0, 5, "NowToner", 80)
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, 5, @ListViewCol) ; Message senden
AddGadgetColumn(#w0ListIcon_0, 6, "% Toner", 80)
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, 6, @ListViewCol) ; Message senden
....Поделиться409.11.2013 08:32:06
If OpenWindow(0,0,0,300,100, "",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListViewHandle = ListIconGadget(1,0,0,300,100, "1", 100, #PB_ListIcon_GridLines)
AddGadgetColumn(1, 1, "2", 80)
AddGadgetColumn(1, 2, "3", 80)
AddGadgetItem(1,0,"Links (standart)" + Chr(10) + "Rechts" + Chr(10) + "Mitte")
Repeat ;
EventID=WaitWindowEvent()
Until EventID=#PB_Event_CloseWindow
EndIf
Endв этом примере как убрать заголовки столбцов, чтоб при этом осталась строка не тронутым?
Поделиться509.11.2013 12:54:53
If OpenWindow(0,0,0,300,100, "",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListViewHandle = ListIconGadget(1,0,0,300,100, "1", 100, #PB_ListIcon_GridLines|#LVS_NOCOLUMNHEADER)
AddGadgetColumn(1, 1, "2", 80)
AddGadgetColumn(1, 2, "3", 80)
AddGadgetItem(1,0,"Links (standart)" + Chr(10) + "Rechts" + Chr(10) + "Mitte")
Repeat ;
EventID=WaitWindowEvent()
Until EventID=#PB_Event_CloseWindow
EndIf
EndПоделиться609.11.2013 23:51:52
Не подскажешь как без заголовок, можно растягивать столбцы?
Поделиться712.11.2013 14:43:19
вот так питаюсь но не знаю правильно ли делаю, будут ли дальнейшем проблемы
#ListIcon = 1
#LVM_GETSUBITEMRECT = #LVM_FIRST+56
Procedure IsWindowMouseOver(ID.l)
Protected hWnd.l
If IsGadget(ID); если Gadget работаем как с GadgetID
hWnd=GadgetID(ID)
Else
ProcedureReturn #False
EndIf
Protected rc.RECT
Protected cursorpos.q
If IsWindowVisible_(hWnd)
GetCursorPos_(@cursorpos)
GetWindowRect_(hWnd, @rc)
ProcedureReturn PtInRect_(@rc, cursorpos)
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure Callback(Window.l, Message.l, wParam.l, lParam.l)
result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_NOTIFY ; these events are send as notification messages
*pnmh.NMHDR = lParam ; lParam points to a structure with more info
If *pnmh\hwndFrom = GadgetID(#ListIcon) ; see if it is the right gadget
Select *pnmh\code ; code contains actual message
Case #LVN_COLUMNCLICK ; user clicked on the Header of a column
*pnmv.NMLISTVIEW = lParam ; another info structure
Column.l = *pnmv\iSubItem ; clicked column
Debug Str(Column)
Case #NM_CLICK ; user clicked in the ListView
*lpnmitem.NMITEMACTIVATE = lParam
Row.l = *lpnmitem\iItem
Column.l = *lpnmitem\iSubItem
rc.RECT
; there is also
; #NM_DBLCLK - doublecklick
; #NM_RCLICK - right button
; #NM_RDBLCLK - right doubleclick
; they work the same as #NM_CLICK
If Column=0
rc\top = Column+1
SendMessage_(*pnmh\hwndFrom, #LVM_GETSUBITEMRECT, Row, rc)
ResizeGadget(3,rc\left+5,rc\top,rc\right-rc\left,rc\bottom-rc\top)
ResizeGadget(5,rc\left,0,5,355)
Else
rc\top = Column
SendMessage_(*pnmh\hwndFrom, #LVM_GETSUBITEMRECT, Row, rc)
ResizeGadget(3,rc\left+5,rc\top,rc\right-rc\left,rc\bottom-rc\top)
;SendMessage_(*pnmh\hwndFrom,#LVM_SETCOLUMNWIDTH,0,#LVSCW_AUTOSIZE)
EndIf
EndSelect
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0,0,0,400,400, "Listicon test...",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ComboBoxGadget(3,0,0,0,0)
ContainerGadget(5,0,0,0,0,#PB_Container_Single)
CloseGadgetList()
ListIconGadget(#ListIcon, 10, 10, 380, 380, "Column0",100,#PB_ListIcon_FullRowSelect|#LVS_NOCOLUMNHEADER)
; Fullrowselect must be set, because otherwiese only the first
; column will be clickable
AddGadgetColumn(#ListIcon, 1, "Column1", 100)
AddGadgetItem(#ListIcon, 0, "Row0"+Chr(10)+"XXX"+Chr(10)+"XXX")
AddGadgetItem(#ListIcon, 1, "Row1"+Chr(10)+"XXX"+Chr(10)+"XXX")
AddGadgetItem(#ListIcon, 2, "Row2"+Chr(10)+"XXX"+Chr(10)+"XXX")
AddGadgetItem(#ListIcon, 3, "Row3"+Chr(10)+"XXX"+Chr(10)+"XXX")
SetParent_(GadgetID(3),GadgetID(#ListIcon))
SetParent_(GadgetID(5),GadgetID(#ListIcon))
SetCursor_( LoadCursor_(GadgetID(5),#IDC_UPARROW ))
SetWindowCallback(@Callback())
Repeat
e= WaitWindowEvent()
If e=#WM_MOUSEMOVE
If IsWindowMouseOver(5)
SetCursor_( LoadCursor_(0,#IDC_SIZEWE))
Debug "на разделителе"
SendMessage_(GadgetID(#ListIcon),#LVM_SETCOLUMNWIDTH,0,255)
EndIf
EndIf
Until e = #PB_Event_CloseWindow
EndIf
EndПоделиться826.01.2018 07:31:19
После долгого перерыва пришлось вернуться к этому вопросу.
Сделал процедуру чтобы забыть навсегда. И поместил ее в файл ListIconAlligment.pbi
Procedure ListIconAlligment(id, Alligment$)
;Alligment$ = "rrcll" ;[one character]=[one column]; R=Right, L=Left, C=Center
;id=GadgetID(#ListIcon_0)
Protected ListViewHandle=id, i
Protected ListViewCol.LV_COLUMN ; для управления столбцом
ListViewCol\mask = #LVCF_FMTAlligment$=UCase(Alligment$) ;большие буквы
For i=1 To Len(Alligment$)
Select Mid(Alligment$,i,1) ; одна буква
Case "R"
ListViewCol\fmt = #LVCFMT_RIGHT ; выравнивать по правому краю
Case "C"
ListViewCol\fmt = #LVCFMT_CENTER
Case "L"
ListViewCol\fmt = #LVCFMT_LEFT
Default
ListViewCol\fmt = #LVCFMT_LEFT
EndSelect
SendMessage_(ListViewHandle, #LVM_SETCOLUMN, i-1, @ListViewCol)
NextEndProcedure