Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23

ListIcon, иконки во всех столбцах (по центру колонки)

19.02.2018, 11:07. Показов 980. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется вот такой код:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
;Autor: Kurzer
;http://www.purebasic.fr/german/viewtopic.php?p=250562#p250562
 
;EnableExplicit
 
Procedure SetGadgetItemIcon(iGadgetNr.i, iRow.i, iCol.i, iIcon.i, iSet.i)
  Protected lvi.lv_item
  lvi\mask     = #LVIF_IMAGE
  lvi\iItem    = iRow     ; row number for change
  lvi\iSubItem = iCol     ; 2nd subitem
  lvi\pszText  = #Null   ; text to change to
   If iSet
     lvi\iImage   = iIcon   ; Icon setzen
   Else
     lvi\iImage   = -1            ; Icon lцschen
   EndIf
  SendMessage_(GadgetID(iGadgetNr), #LVM_SETITEM, 0, @lvi)
EndProcedure
 
Define iGadgetNr.i, hListIconGadget.i, hImlImages.i, iStyle.i, Event.i, Center.LV_COLUMN, Column
Define sText.s
  
If OpenWindow(0, 100, 100, 450, 200, "Icons in allen ListIcon-Spalten, nicht nur in der ersten.", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
   ; ListIconGadget anlegen
   iGadgetNr = ListIconGadget(#PB_Any, 5, 5, 440, 190, "Dummy", 50, #PB_ListIcon_GridLines|#PB_ListIcon_HeaderDragDrop|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
 
   ; 4 weitere Spalten zufьgen
   AddGadgetColumn(iGadgetNr, 1, "1", 16)
   AddGadgetColumn(iGadgetNr, 2, "2", 100)
   AddGadgetColumn(iGadgetNr, 3, "3", 80)
   AddGadgetColumn(iGadgetNr, 4, "4", 80)
   
   ; Und drei Beispiel-Zeilen erzeugen
   AddGadgetItem(iGadgetNr, -1, #LF$ + "" + #LF$ + " Ernst" + #LF$ + " hungrig")
   AddGadgetItem(iGadgetNr, -1, #LF$ + "" + #LF$ + " Karl" + #LF$ + " faul")
   AddGadgetItem(iGadgetNr, -1, #LF$ + "" + #LF$ + " Gabi" + #LF$ + " schцn")
 
    hListIconGadget = GadgetID(iGadgetNr)
 
   ; Eine Imagelist aufbauen
   CatchImage(0, ?Test)
   hImlImages = ImageList_Create_(16, 16, #ILC_COLOR32 | #ILC_MASK, 0, 8)   ; | #ILC_MASK
    ImageList_AddMasked_(hImlImages, ImageID(0), #CLR_NONE)
    
   ; Das "PB-eigenen" Image ist jetzt nicht mehr nцtig, weil es in die ImageList kopiert wurde
   FreeImage(0)
 
   ; Die Imagelist dem ListIconGadget zuordnen
   SendMessage_(hListIconGadget, #LVM_SETIMAGELIST, #LVSIL_SMALL, hImlImages)
   
   ; Jetzt dem ListIconGadget sagen, daЯ es auch in SubItems Icons anzeigel soll/darf
  iStyle = SendMessage_(hListIconGadget, #LVM_GETEXTENDEDLISTVIEWSTYLE , 0, 0) | #LVS_EX_SUBITEMIMAGES
  SendMessage_(hListIconGadget, #LVM_SETEXTENDEDLISTVIEWSTYLE , 0, iStyle)
 
;   SendMessage_(hListIconGadget, #LVM_SETTEXTBKCOLOR , 0, #White)
;   SendMessage_(hListIconGadget, #LVM_SETBKCOLOR, 0, #White)
 
   ;Die blцden, per default gesetzen Icons in Spalte 0 entfernen
    SetGadgetItemIcon(iGadgetNr, 0, 0, 0, #False)
    SetGadgetItemIcon(iGadgetNr, 1, 0, 0, #False)
    SetGadgetItemIcon(iGadgetNr, 2, 0, 0, #False)
 
   ;Jetzt die Icons nachtrдglich in die Spalten setzen
    SetGadgetItemIcon(iGadgetNr, 0, 1, 2, #True)
    SetGadgetItemIcon(iGadgetNr, 1, 1, 2, #True)
    SetGadgetItemIcon(iGadgetNr, 2, 1, 2, #True)
    
    SetGadgetItemIcon(iGadgetNr, 0, 2, 1, #True)
    SetGadgetItemIcon(iGadgetNr, 1, 2, 1, #True)
    SetGadgetItemIcon(iGadgetNr, 2, 2, 0, #True)
    
    SetGadgetItemIcon(iGadgetNr, 0, 4, 2, #True)
    SetGadgetItemIcon(iGadgetNr, 1, 4, 2, #True)
    SetGadgetItemIcon(iGadgetNr, 2, 4, 2, #True)
    
    ;;;;;;;;;;;;;;;; Center
    Center.LV_COLUMN\mask=#LVCF_FMT
    Center\fmt=#LVCFMT_CENTER
    For i=0 To 4
      SendMessage_(GadgetID(iGadgetNr), #LVM_SETCOLUMN,i,@Center)
    Next
    ;;;;;;;;;;;;;;;;
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
    
    ; Am Ende die Imagelist wieder freigeben
    ImageList_Destroy_(hImlImages)
EndIf
 
DataSection
   ; Dies ist ein 16 Farben BMP Image mit 48 x 16 Pixeln AusmaЯe (also quasi drei 16 x 16 Pixel groЯe Images nebeneinander)
   Test:
   ; IncludeBinary "test.bmp"
  Data.l $01F64D42,$00000000,$00760000,$00280000,$00300000,$00100000,$00010000,$00000004,$01800000,$00000000
  Data.l $00000000,$00000000,$00000000,$02040000,$FEFC00FC,$02FC00FC,$00000004,$FC820000,$3A00002D,$3C0000FF
  Data.l $00000091,$5500007C,$01000001,$02000000,$00000000,$E9910000,$43B10061,$003700AC,$007E0080,$1111007C
  Data.l $11111111,$11111111,$11111111,$11111111,$11111111,$11111111,$11111111,$11111111,$11111111,$11111111
  Data.l $11111111,$11111111,$11111111,$10111111,$10111101,$11111101,$11111111,$11111111,$11222211,$11111111
  Data.l $00111100,$11111111,$11111111,$11111111,$21222212,$11111111,$01000010,$11111111,$11111111,$11111111
  Data.l $22111122,$11111111,$11000011,$11111111,$11881811,$12111111,$12111121,$11111121,$11111111,$11111111
  Data.l $81888811,$11111111,$11211211,$11111111,$11011011,$11111111,$88888818,$11111111,$11211211,$11111111
  Data.l $11011011,$11111111,$88888818,$11111111,$11211211,$11111111,$11011011,$11111111,$88888818,$12111111
  Data.l $12111121,$10111121,$10111101,$11111101,$81888811,$22111111,$22111122,$00111122,$00111100,$11111100
  Data.l $11881811,$22111111,$22111122,$00111122,$00111100,$11111100,$11111111,$12111111,$12111121,$10111121
  Data.l $10111101,$11111101,$11111111,$11111111,$11111111,$11111111,$11111111,$11111111,$11111111,$11111111
  Data.l $11111111,$11111111,$11111111,$11111111,$11111111
  Data.b $11,$11
  TestEnd:
EndDataSection
Помогите расположить иконки по центру колонки.
То есть в колонке будет только картинка, без текста.
Я только смог расположить текст по центру, вписав код выделенный текстом ;;;;;;;;;;;;;;;; Center
И если возможно, то вместо bmp изображения, хотелось бы использовать png с прозрачным фоном.

Добавлено через 15 часов 50 минут
Вот ещё код, но тоже картинки переместить в центр колонок не выходит...
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Enumeration
  #MainWindow  
EndEnumeration
 
Enumeration
  #MC_red
  #MC_blue
  #MC_green
EndEnumeration
 
;{ рисуем три иконки
;  красный
color=$0000ff
CreateImage(#MC_red,16,16,32,#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_red))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()
 
;  синий
color=$ff0000
CreateImage(#MC_blue,16,16,32,#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_blue))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()
 
;  зеленый
color=$008000
CreateImage(#MC_green,16,16,32,#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_green))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()
;}
 
Hwnd = ImageList_Create_(16,16,#ILC_COLOR32|#ILC_MASK, 0, 100)
 
; помещаем в список
ImageList_Add_(Hwnd, ImageID(#MC_red), 0)   ; 0
ImageList_Add_(Hwnd, ImageID(#MC_blue), 0)  ; 1
ImageList_Add_(Hwnd, ImageID(#MC_green), 0) ; 2
 
If OpenWindow(#MainWindow,0,0,405,300,"Окно",#PB_Window_ScreenCentered |#PB_Window_SystemMenu)  
  ; собственно ListIconGadget
  LIG=ListIconGadget(#PB_Any,20,20,365,260,"Колонка 1", 120 ,#PB_ListIcon_MultiSelect|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
  AddGadgetColumn(LIG, 1, "Колонка 2",120) 
  AddGadgetColumn(LIG, 2, "Колонка 3",120) 
  
  SendMessage_(GadgetID(LIG), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd)
  SendMessage_(GadgetID(LIG), #LVM_SETEXTENDEDLISTVIEWSTYLE , #LVS_EX_SUBITEMIMAGES, #LVS_EX_SUBITEMIMAGES)
  Var.lv_item 
  For i = 0 To 2
    
    AddGadgetItem(LIG, -1, ""+Chr(10)+ "abc"+Chr(10)+"def")
    
 
    
    ; структура с параметрами
       
    Var\mask     = #LVIF_IMAGE | #LVIF_TEXT
    Var\iItem    = i  ; номер строки
    Var\iSubItem = 0  ; номер колонки
    Var\pszText  = @""; замена текста
    Var\iImage   = i  ; номер картинки в списке      
    
    ; первая колонка
    SendMessage_(GadgetID(LIG), #LVM_SETITEM, 0, @Var) 
  Next i  
  
  For i = 0 To 2
  ; структура с параметрами
        
    Var\mask     = #LVIF_IMAGE | #LVIF_TEXT
    Var\iItem    = i  ; номер строки
    Var\iSubItem = 1  ; номер колонки
    Var\pszText  = @""; замена текста
    Var\iImage   = i  ; номер картинки в списке    
     SendMessage_(GadgetID(LIG), #LVM_SETITEM, 0, @Var) 
   Next
   
   ;;;;;;;;;;;;;;;; Center
    Center.LV_COLUMN\mask=#LVCF_FMT
    Center\fmt=#LVCFMT_CENTER
    SendMessage_(GadgetID(LIG), #LVM_SETCOLUMN,1,@Center)
    ;;;;;;;;;;;;;;;; Center
  
EndIf 
 
Repeat 
  Select WaitWindowEvent()      
    Case #PB_Event_CloseWindow 
      Quit = 1 
  EndSelect  
Until Quit 
End
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2018, 11:07
Ответы с готовыми решениями:

Выравнивание колонки по центру, Bootstrap
Привет . Есть сайт Есть верхнее меню колонка №1 Подскажите пожалуйста как его выровнять по центру так что бы другие элементы...

Как выравнять текст по центру относительно иконки fontawesome
Добрый вечер! Подскажите плз как выравнять текст по центру относительно иконки fontawesome, а то у меня все на одной линии <a...

Flex выровнить контент левой колонки по центру
Подскажите, контент левой колонки как то по центру можно через flex выровнить? <div class="work_item"> <span...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2018, 11:07
Помогаю со студенческими работами здесь

3 колонки - 2 резиновые по бокам одна фиксированная по центру
Нужно сделать вот такую вот штуку | Резиновая колонка (50% от оставшейся ширины) | Container Bootstrap (1170px) | Резиновая колонка (50%...

Найти разность между суммой всех элементов стоящих в столбцах счетными номерами, и суммой всех элементов стоящих в столбцах с нечетными номерами.
Здравствуйте! Дан двумерный массив целых чисел. Найти разность между суммой всех элементов стоящих в столбцах счетными номерами, и суммой...

Переставить колонки матрицы согласно росту максимальных элементов в столбцах
Заданная матрица целых чисел размером (M, N). Переставить колонки матрицы согласно росту максимальных элементов в столбцах. Все входные...

Переставить колонки матрицы согласно росту максимальных элементов в столбцах
Заданная матрица целых чисел размером (M, N). Переставить колонки матрицы согласно росту максимальных элементов в столбцах.

Как в футере сделать две колонки по центру и интервал между ними
Как в футере сделать эти две колонки по центру и между ними интервал 20 пикселей? http://airkuban.ru/ На каждый вопрос создавайте по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru