В хелпе не нашел.
Все прижимается к левому краю - а надо по центру и к правому.
Горизонтальное выравнивание в ячейках 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