Тогда нужно где-то хранить цвет каждой строки (например в SetGadgetItemData()) и раскрашивать все строки требуемым цветом.
SpinGadget
Сообщений 31 страница 39 из 39
Поделиться3230.09.2013 22:26:06
что то с размерами не разберусь
UsePNGImageDecoder()
Global top=45
Global PropertisWindow,PropertisWindowX,PropertisWindowY,PropertisWindowWidth,PropertisWindowHeight
Global PanelX, PanelY, PanelW, PanelH
;XIncludeFile "#PropertisWindowGadget.pb"
Enumeration #PB_Compiler_EnumerationValue
#PropertisWindow
#PropertisWindowListIcon
#PropertisWindowComboBox
#PropertisWindowComboBox_
#PropertisWindowComboBox_1
#PropertisWindowSpin
#PropertisWindowButtonImage
#PropertisWindowString
#PropertisWindowListIcon_
#Splitter
#PropertisWindowScrollArea
EndEnumeration
#LVM_SUBITEMHITTEST = #LVM_FIRST + 57
#LVM_GETSUBITEMRECT = #LVM_FIRST + 56
Global oldproc
Global currentitem, currentsubitem
; ------------------------------
;{- SpinGadget_
; ------------------------------
Declare ResizeSpinGadget_(Gadget,left,top,width,heigth)
Declare HideSpinGadget_(Gadget,param)
Procedure SpinGadget_(Gadget,left,top,width,heigth,min,max,pos=0,textpos=2 )
Global SpinGadget_,SpinGadget_String,SpinGadget_UpDown
UpDownWidth =18
SpinGadget_ =ContainerGadget(#PB_Any ,0,0,0,0); ,#PB_Container_Flat
SpinGadget_String =StringGadget(Gadget,0,0,0,0,"",textpos|#PB_String_Numeric)
SetParent_(GadgetID(Gadget),GadgetID(SpinGadget_))
SpinGadget_UpDown = CreateUpDownControl_(#WS_CHILD|#WS_VISIBLE|#UDS_SETBUDDYINT|#UDS_ARROWKEYS,0,0,0,0,GadgetID(SpinGadget_),1,GetModuleHandle_(0),GadgetID(Gadget),max,min,pos)
CloseGadgetList()
ResizeSpinGadget_(Gadget,0,0,100,20)
If Gadget=#PB_Any
ProcedureReturn SpinGadget_String
EndIf
EndProcedure
Procedure ResizeSpinGadget_(Gadget,left,top,width,heigth)
UpDownWidth =17
ResizeGadget(SpinGadget_ ,left,top,width,heigth)
ResizeGadget(gadget ,0,1,width-UpDownWidth,heigth-1)
MoveWindow_(SpinGadget_UpDown,GadgetWidth(gadget),0,UpDownWidth,heigth+1,1)
EndProcedure
Procedure HideSpinGadget_(Gadget,param)
If param =1
param=0
Else
param=1
EndIf
ShowWindow_(GadgetID(SpinGadget_),param)
ShowWindow_(GadgetID(Gadget),param)
ShowWindow_(SpinGadget_UpDown,param)
EndProcedure
;}------------------------------
; ------------------------------
Procedure.l PropertisWindowCallback(hWindow, iMessage, wParam, lParam)
Protected Result,PWindowX,PWindowY,PWindowWidth,PWindowHeight
PropertisWindowX=WindowX(#PropertisWindow)
PropertisWindowY=WindowY(#PropertisWindow)
PropertisWindowWidth=WindowWidth(#PropertisWindow)
PropertisWindowHeight=WindowHeight(#PropertisWindow)
Select iMessage
Case 799
Case #WM_SIZE,#WM_MOVE
If MainWindow=1 ; если запустили от главного окна
ResizeWindow(#PropertisWindow,MainWindowX+MainWindowWidth-PropertisWindowWidth-3,MainWindowY+(MenuWindowHeight*2-6),#PB_Ignore,MainWindowHeight-MenuWindowHeight*2+3)
EndIf
h =731
RedrawWindow_(WindowID(#PropertisWindow), 0, 0, #RDW_UPDATENOW|#RDW_ALLCHILDREN) ; с начало убирает мерцание Окна
RedrawWindow_(GadgetID(#PropertisWindowScrollArea), 0, 0, #RDW_UPDATENOW|#RDW_ALLCHILDREN) ; с начало убирает мерцание Окна
ResizeGadget(#PropertisWindowScrollArea,3,3, PropertisWindowWidth-6,PropertisWindowHeight-6)
ResizeGadget(#Splitter,#PB_Ignore,#PB_Ignore, GadgetWidth(#PropertisWindowScrollArea)-15,h+2)
SetGadgetAttribute(#PropertisWindowScrollArea, #PB_ScrollArea_InnerWidth, GadgetWidth(#PropertisWindowScrollArea)-19)
SetGadgetAttribute(#PropertisWindowScrollArea, #PB_ScrollArea_InnerHeight, h)
SetGadgetItemAttribute(#PropertisWindowListIcon_, 0,#PB_ListIcon_ColumnWidth , GadgetWidth(#PropertisWindowListIcon_)-4,0)
;InvalidateRect_(GadgetID(#PropertisWindowScrollArea),0,1)
;ResizeGadget(#PropertisWindowListIcon_,#PB_Ignore,#PB_Ignore, GadgetWidth(#ContainerTOP),GadgetHeight(#Container))
ResizeGadget(#PropertisWindowListIcon,#PB_Ignore,#PB_Ignore, 66,#PB_Ignore)
SetGadgetItemAttribute(#PropertisWindowListIcon, 0,#PB_ListIcon_ColumnWidth , GadgetWidth(#PropertisWindowListIcon)-4,0)
Case #WM_DRAWITEM
*lpdis.DRAWITEMSTRUCT = lparam
Dim itemrect.RECT(3)
For i = 0 To 3
RtlZeroMemory_(@itemrect(i),SizeOf(RECT))
itemrect(i)\top = i
SendMessage_(*lpdis\hwndItem, #LVM_GETSUBITEMRECT, *lpdis\itemid, @itemrect(i))
text$ = GetGadgetItemText(GetDlgCtrlID_(*lpdis\hwndItem), *lpdis\itemid, i)
If *lpdis\itemid=1 Or *lpdis\itemid=6 Or *lpdis\itemid=11 Or *lpdis\itemid=26
hpen = CreatePen_(#PS_SOLID, 1, $D0D0D0); цвет рамки
WhiteBrush = CreateSolidBrush_($D0D0D0) ; цвет строки
Else
hpen = CreatePen_(#PS_SOLID, 1, RGB(114, 151, 203)); цвет рамки
WhiteBrush = GetStockObject_(#HOLLOW_BRUSH) ; Прозрачная кисть.
;WhiteBrush = CreateSolidBrush_($00FFFF) ; цвет строк
EndIf
SetBkMode_(*lpdis\hDC, #TRANSPARENT) ;убрать белый фон
SelectObject_(*lpdis\hDC, hpen);
;SelectObject_(*lpdis\hDC, GetStockObject_(#NULL_PEN)) ; убрать рамку вокруг строки
SelectObject_(*lpdis\hDC, WhiteBrush)
Rectangle_(*lpdis\hDC, itemrect(i)\left+1, itemrect(i)\top+1, itemrect(i)\right, itemrect(i)\bottom)
TextOut_(*lpdis\hDC, itemrect(i)\left+4, itemrect(i)\top+5, text$, Len(text$))
DeleteObject_(hpen)
DeleteObject_(WhiteBrush)
Next
Case #WM_MEASUREITEM
*lpmis.MEASUREITEMSTRUCT = lparam
*lpmis\itemheight = 22
Default
Result = #PB_ProcessPureBasicEvents
EndSelect
ProcedureReturn Result
EndProcedure
Procedure Resize(hwnd)
RtlZeroMemory_(@itemrect.RECT,SizeOf(RECT))
itemrect\top = currentsubitem
SendMessage_(hwnd,#LVM_GETSUBITEMRECT, currentitem, @itemrect)
ResizeGadget(#PropertisWindowComboBox,itemrect\left+1,itemrect\top+2,itemrect\right-itemrect\left-2,itemrect\bottom-itemrect\top-1)
ResizeSpinGadget_(#PropertisWindowSpin, itemrect\left+1,itemrect\top+1,itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top)
InvalidateRect_(GadgetID(#PropertisWindowComboBox),0,1)
InvalidateRect_(GadgetID(#PropertisWindowSpin),0,1)
EndProcedure
Procedure SubClass_LV(hwnd, msg, wparam, lparam)
result = CallWindowProc_(oldproc, hwnd, msg, wparam, lparam)
If msg = #WM_RBUTTONDOWN Or msg = #WM_LBUTTONDOWN ;Or msg = #WM_CREATE
GetCursorPos_(@cp.POINT)
MapWindowPoints_(0,hwnd,@cp,1)
HitInfo.LVHITTESTINFO
Hitinfo\pt\x = cp\x
HitInfo\pt\y = cp\y
SendMessage_(hwnd,#LVM_SUBITEMHITTEST ,0,@HitInfo)
If hitinfo\isubitem = 1 And HitInfo\iItem >= 0 ;если шелкнули по 1 стольбцу
currentitem = hitinfo\iitem
currentsubitem = hitinfo\isubitem+1
RtlZeroMemory_(@itemrect.RECT,SizeOf(RECT))
itemrect\top = hitinfo\iSubItem+1
SendMessage_(hwnd,#LVM_GETSUBITEMRECT, hitinfo\iitem, @itemrect)
ElseIf hitinfo\isubitem = 0 And HitInfo\iItem >= 0 ;если шелкнули по 2 стольбцу
currentitem = hitinfo\iitem
currentsubitem = hitinfo\isubitem
RtlZeroMemory_(@itemrect.RECT,SizeOf(RECT))
itemrect\top = hitinfo\iSubItem
SendMessage_(hwnd,#LVM_GETSUBITEMRECT, hitinfo\iitem, @itemrect)
;StringGadget
If currentitem =0 Or currentitem =12
ResizeGadget(#PropertisWindowString, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(#PropertisWindowString,GetGadgetItemText(#PropertisWindowListIcon,currentitem,currentsubitem))
SetFocus_(GadgetID(#PropertisWindowString))
HideGadget(#PropertisWindowString,0)
HideSpinGadget_(#PropertisWindowSpin,1)
HideGadget(#PropertisWindowComboBox,1)
HideGadget(#PropertisWindowComboBox_,1)
HideGadget(#PropertisWindowComboBox_1,1)
HideGadget(#PropertisWindowButtonImage,1)
ElseIf currentitem =1
;SpinGadget
ElseIf currentitem =2 Or currentitem =3 Or currentitem =4 Or currentitem =5
ResizeSpinGadget_(#PropertisWindowSpin, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(#PropertisWindowSpin,GetGadgetItemText(#PropertisWindowListIcon,currentitem,currentsubitem))
SetFocus_(GadgetID(#PropertisWindowSpin))
HideSpinGadget_(#PropertisWindowSpin,0)
HideGadget(#PropertisWindowString,1)
HideGadget(#PropertisWindowComboBox,1)
HideGadget(#PropertisWindowComboBox_,1)
HideGadget(#PropertisWindowComboBox_1,1)
HideGadget(#PropertisWindowButtonImage,1)
ElseIf currentitem =6
;ButtonGadget
ElseIf currentitem =7 Or currentitem =8 Or currentitem =9 Or currentitem =10 Or currentitem =21 Or currentitem =24
ResizeGadget(#PropertisWindowButtonImage, itemrect\left+77, itemrect\top+2, itemrect\right-itemrect\left-78, itemrect\bottom-itemrect\top-3)
SetGadgetText(#PropertisWindowButtonImage,"...")
SetFocus_(GadgetID(#PropertisWindowButtonImage))
HideGadget(#PropertisWindowButtonImage,0)
HideGadget(#PropertisWindowString,1)
HideSpinGadget_(#PropertisWindowSpin,1)
HideGadget(#PropertisWindowComboBox,1)
HideGadget(#PropertisWindowComboBox_,1)
HideGadget(#PropertisWindowComboBox_1,1)
;откючаем эти строки
ElseIf currentitem =11
ElseIf currentitem =26
;Combobox
ElseIf currentitem =28
ResizeGadget(#PropertisWindowComboBox_1, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(#PropertisWindowComboBox_1,GetGadgetItemText(#PropertisWindowListIcon,currentitem,currentsubitem))
SetFocus_(GadgetID(#PropertisWindowComboBox_1))
HideGadget(#PropertisWindowComboBox_1,0)
HideGadget(#PropertisWindowString,1)
HideSpinGadget_(#PropertisWindowSpin,1)
HideGadget(#PropertisWindowComboBox,1)
HideGadget(#PropertisWindowComboBox_,1)
HideGadget(#PropertisWindowButtonImage,1)
;Combobox
ElseIf currentitem =29
ResizeGadget(#PropertisWindowComboBox_, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(#PropertisWindowComboBox_,GetGadgetItemText(#PropertisWindowListIcon,currentitem,currentsubitem))
SetFocus_(GadgetID(#PropertisWindowComboBox_))
HideGadget(#PropertisWindowComboBox_,0)
HideGadget(#PropertisWindowString,1)
HideSpinGadget_(#PropertisWindowSpin,1)
HideGadget(#PropertisWindowComboBox,1)
HideGadget(#PropertisWindowComboBox_1,1)
HideGadget(#PropertisWindowButtonImage,1)
;ComboboxGadget
Else
ResizeGadget(#PropertisWindowComboBox, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(#PropertisWindowComboBox,GetGadgetItemText(#PropertisWindowListIcon,currentitem,currentsubitem))
SetFocus_(GadgetID(#PropertisWindowComboBox))
HideGadget(#PropertisWindowComboBox,0)
HideGadget(#PropertisWindowString,1)
HideSpinGadget_(#PropertisWindowSpin,1)
HideGadget(#PropertisWindowComboBox_,1)
HideGadget(#PropertisWindowComboBox_1,1)
HideGadget(#PropertisWindowButtonImage,1)
EndIf
Else
HideGadget(#PropertisWindowString,1)
HideSpinGadget_(#PropertisWindowSpin,1)
HideGadget(#PropertisWindowComboBox,1)
HideGadget(#PropertisWindowComboBox_,1)
HideGadget(#PropertisWindowComboBox_1,1)
HideGadget(#PropertisWindowButtonImage,1)
EndIf
ElseIf msg=#WM_HSCROLL Or msg=#WM_VSCROLL
Resize(hwnd)
ElseIf msg=#WM_NOTIFY
*nmHEADER.HD_NOTIFY = lParam
Select *nmHEADER\hdr\code
Case #HDN_ITEMCHANGING
Resize(hwnd)
EndSelect
EndIf
ProcedureReturn result
EndProcedure
Procedure PropertisWindow()
If MainWindow=0 :OpenWindow(#PropertisWindow, 0,0,200, 600, "Propertis",#PB_Window_SystemMenu|#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
#MainWindow=0
Else
OpenWindow(#PropertisWindow, 0,0,185, 600, "Propertis",#PB_Window_TitleBar | #PB_Window_Invisible , WindowID(#MainWindow))
DeleteMenu_(GetSystemMenu_(WindowID(#PropertisWindow),#False),1,#MF_BYPOSITION) ;запрешаем таскат за заголовок.
EndIf
;SetWindowIcon(WindowID(#PropertisWindow),ExtractIcon_(0,"shell32.dll",130))
PropertisWindowX=WindowX(#PropertisWindow)
PropertisWindowY=WindowY(#PropertisWindow)
PropertisWindowWidth=WindowWidth(#PropertisWindow)
PropertisWindowHeight=WindowHeight(#PropertisWindow)
ScrollAreaGadget(#PropertisWindowScrollArea, 0,0,0,0, 0,0,0,#PB_ScrollArea_Flat)
; ContainerGadget(#ContainerTOP, 0,0,0,0,#PB_Container_BorderLess )
ListIconGadget(#PropertisWindowListIcon_, 0, 0, 0, 0, "Название", 111,#LVS_OWNERDRAWFIXED)
SetGadgetColor(#PropertisWindowListIcon_,#PB_Gadget_BackColor, RGB(239,239,239)) ; установить цветь фона
AddGadgetItem(#PropertisWindowListIcon_, -1, "Name" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "РАЗМЕРЫ ОКНА" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Left" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Top" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Width" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Height" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "ВИД ОКНА " + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "BackColor" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "BackgraundImage" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "Cursor" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "Font" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "СТИЛЬ ОКНА " + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Caption" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Visible" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Enable" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "ControlBox" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "CloseBox" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "MaximizeBox" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "MinimizeBox" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "HelpBox" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "SizeBox" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Icon" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "ShowIcon" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "ShowInTaskbar" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "Opacity" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "RighttoLeft" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "ПОВЕДЕНИЕ ОКНА " + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "TopMost" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "StartPosition" + Chr(10))
AddGadgetItem(#PropertisWindowListIcon_, -1, "WindowState" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "AllowDrop" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon_, -1, "AutoScroll" + Chr(10) )
;CloseGadgetList()
;ContainerGadget(#ContainerBOTTOM, 0,0,0,0,#PB_Container_BorderLess )
ListIconGadget(#PropertisWindowListIcon, 0, 0, 0, 0, "Значение", 94,#LVS_OWNERDRAWFIXED);, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_List)
SetGadgetColor(#PropertisWindowListIcon,#PB_Gadget_BackColor, RGB(239,239,239)) ; установить цветь фона
;SetClassLongPtr_(GadgetID(#PropertisWindowListIcon),#GCL_HBRBACKGROUND,CreateSolidBrush_(RGB(0, 239, 0))) ; установить цветь фона
oldproc = SetWindowLongPtr_(GadgetID(#PropertisWindowListIcon), #GWL_WNDPROC, @SubClass_LV())
AddGadgetItem(#PropertisWindowListIcon, -1, "Window" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "5" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "5" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "350" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "200" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "Default" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "Window" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "False" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "True" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "100%" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "False" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "False" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "CenterScreen" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "Normal" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "False" + Chr(10) )
AddGadgetItem(#PropertisWindowListIcon, -1, "False" + Chr(10) )
ComboBoxGadget(#PropertisWindowComboBox, 0,0,0,0,#PB_ComboBox_Editable)
SetParent_(GadgetID(#PropertisWindowComboBox),GadgetID(#PropertisWindowListIcon))
AddGadgetItem(#PropertisWindowComboBox,0,"True")
AddGadgetItem(#PropertisWindowComboBox,1,"False")
SpinGadget_(#PropertisWindowSpin,0, 0, 0, 0, 0, 2000,13,0)
SetParent_(GadgetID(SpinGadget_),GadgetID(#PropertisWindowListIcon))
StringGadget(#PropertisWindowString,0, 0, 0, 0, "")
SetParent_(GadgetID(#PropertisWindowString),GadgetID(#PropertisWindowListIcon))
ButtonImageGadget(#PropertisWindowButtonImage,0, 0, 0, 0,0)
SetParent_(GadgetID(#PropertisWindowButtonImage),GadgetID(#PropertisWindowListIcon))
ComboBoxGadget(#PropertisWindowComboBox_, 0,0,0,0,#PB_ComboBox_Editable)
SetParent_(GadgetID(#PropertisWindowComboBox_),GadgetID(#PropertisWindowListIcon))
AddGadgetItem(#PropertisWindowComboBox_,0,"Normal")
AddGadgetItem(#PropertisWindowComboBox_,0,"Minimized")
AddGadgetItem(#PropertisWindowComboBox_,1,"Maximized")
ComboBoxGadget(#PropertisWindowComboBox_1, 0,0,0,0,#PB_ComboBox_Editable)
SetParent_(GadgetID(#PropertisWindowComboBox_1),GadgetID(#PropertisWindowListIcon))
AddGadgetItem(#PropertisWindowComboBox_1,0,"CenterScreen")
AddGadgetItem(#PropertisWindowComboBox_1,1,"CenterParent")
HideGadget(#PropertisWindowString,1)
HideSpinGadget_(#PropertisWindowSpin,1)
HideGadget(#PropertisWindowComboBox,1)
HideGadget(#PropertisWindowComboBox_,1)
HideGadget(#PropertisWindowComboBox_1,1)
HideGadget(#PropertisWindowButtonImage,1)
; CloseGadgetList()
SplitterGadget(#Splitter, -1,-1,0,0, #PropertisWindowListIcon_, #PropertisWindowListIcon,#PB_Splitter_Vertical|#PB_Splitter_Separator);)
SetGadgetAttribute(#Splitter, #PB_Splitter_FirstMinimumSize, 100) ; 1 ограничиваем минимальный размер
SetGadgetAttribute(#Splitter, #PB_Splitter_SecondMinimumSize, 80) ; 2 ограничиваем минимальный размер
CloseGadgetList()
SetWindowCallback(@PropertisWindowCallback() , #PropertisWindow )
EndProcedure
Procedure Event_PropertisWindow(Event)
WindowID = EventWindow()
GadgetID = EventGadget()
MenuID = EventMenu()
TypeID = EventType()
Select Event
Case #PB_Event_Gadget
Select GadgetID ; событие на вкладках
EndSelect
EndSelect
EndProcedure
If MainWindow=0 ; Если запустили отдельно
PropertisWindow() :HideWindow(#PropertisWindow,0) ; отображаем окно
Repeat :Event = WaitWindowEvent()
Event_PropertisWindow(Event)
Select Event
Case #PB_Event_CloseWindow
If EventWindow() = #PropertisWindow
End
EndIf
EndSelect
ForEver
EndIfи как убрать рамку у listicongadget
Поделиться3330.09.2013 22:47:35
а здесь почему нету событие на кнопке никак не пойму?
;================================================================
; Program: ListIcon FillByGadget Sample
; Author: netmaestro
; Date: January 7, 2007
; Target OS: Windows All
; Target Compiler: PureBasic 4.02
; License: Free, Unrestricted, Credit appreciated
; but not required
;================================================================
#LVM_SUBITEMHITTEST = #LVM_FIRST + 57
#LVM_GETSUBITEMRECT = #LVM_FIRST + 56
Global oldproc
Global currentitem, currentsubitem
; ------------------------------
;{- SpinGadget_
; ------------------------------
Declare ResizeSpinGadget_(Gadget,left,top,width,heigth)
Declare HideSpinGadget_(Gadget,param)
Procedure SpinGadget_(Gadget,left,top,width,heigth,min,max,pos=0,textpos=2 )
Global SpinGadget_,SpinGadget_String,SpinGadget_UpDown
UpDownWidth =17
SpinGadget_ =ContainerGadget(#PB_Any ,0,0,0,0); ,#PB_Container_Flat
SpinGadget_String =StringGadget(Gadget,0,0,0,0,"",textpos|#PB_String_Numeric)
SpinGadget_UpDown = CreateUpDownControl_(#WS_CHILD|#WS_VISIBLE|#UDS_SETBUDDYINT|#UDS_ARROWKEYS,0,0,0,0,GadgetID(SpinGadget_),1,GetModuleHandle_(0),GadgetID(Gadget),max,min,pos)
CloseGadgetList()
ResizeSpinGadget_(Gadget,0,0,100,20)
If Gadget=#PB_Any
ProcedureReturn SpinGadget_String
EndIf
EndProcedure
Procedure ResizeSpinGadget_(Gadget,left,top,width,heigth)
UpDownWidth =17
ResizeGadget(SpinGadget_ ,left,top,width,heigth)
ResizeGadget(gadget ,0,0,width-UpDownWidth+1,heigth)
MoveWindow_(SpinGadget_UpDown,GadgetWidth(gadget),-1,UpDownWidth,heigth+2,1)
EndProcedure
Procedure HideSpinGadget_(Gadget,param)
If param =1
param=0
Else
param=1
EndIf
ShowWindow_(GadgetID(SpinGadget_),param)
ShowWindow_(GadgetID(Gadget),param)
ShowWindow_(SpinGadget_UpDown,param)
EndProcedure
;}------------------------------
; ------------------------------
Procedure MainWindowCallBack(hwnd, msg, wparam, lparam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_SIZE
RedrawWindow_(WindowID(0), 0, 0, #RDW_UPDATENOW|#RDW_ALLCHILDREN) ; с начало убирает мерцание Окна
ResizeGadget(10,3,3, WindowWidth(0)-6,WindowHeight(0)-6)
ResizeGadget(0,-2,-26, GadgetWidth(10)+1,GadgetHeight(10)+1+26)
;SetGadgetItemAttribute(0, 1,#PB_ListIcon_ColumnWidth , GadgetWidth(5)-232,0)
;SetGadgetItemAttribute(0, 2,#PB_ListIcon_ColumnWidth , 100,0)
Case #WM_DRAWITEM
Global *lpdis.DRAWITEMSTRUCT = lparam
Global Dim itemrect.RECT(3)
For i = 0 To 3
RtlZeroMemory_(@itemrect(i),SizeOf(RECT))
itemrect(i)\top = i
SendMessage_(*lpdis\hwndItem, #LVM_GETSUBITEMRECT, *lpdis\itemid, @itemrect(i))
text$ = GetGadgetItemText(GetDlgCtrlID_(*lpdis\hwndItem), *lpdis\itemid, i)
If *lpdis\itemid=1 Or *lpdis\itemid=6 Or *lpdis\itemid=11 Or *lpdis\itemid=26
hpen = CreatePen_(#PS_SOLID, 1, $D0D0D0); цвет рамки
WhiteBrush = CreateSolidBrush_($D0D0D0) ; цвет строки
Else
hpen = CreatePen_(#PS_SOLID, 1, RGB(114, 151, 203)); цвет рамки
WhiteBrush = GetStockObject_(#HOLLOW_BRUSH) ; Прозрачная кисть.
;WhiteBrush = CreateSolidBrush_($00FFFF) ; цвет строк
EndIf
SetBkMode_(*lpdis\hDC, #TRANSPARENT) ;убрать белый фон
SelectObject_(*lpdis\hDC, hpen);
;SelectObject_(*lpdis\hDC, GetStockObject_(#NULL_PEN)) ; убрать рамку вокруг строки
SelectObject_(*lpdis\hDC, WhiteBrush)
Rectangle_(*lpdis\hDC, itemrect(i)\left+1, itemrect(i)\top+1, itemrect(i)\right, itemrect(i)\bottom)
TextOut_(*lpdis\hDC, itemrect(i)\left+4, itemrect(i)\top+5, text$, Len(text$))
DeleteObject_(hpen)
DeleteObject_(WhiteBrush)
Next
Case #WM_MEASUREITEM
*lpmis.MEASUREITEMSTRUCT = lparam
*lpmis\itemheight = 22
EndSelect
ProcedureReturn result
EndProcedure
Procedure Resize(hwnd)
RtlZeroMemory_(@itemrect.RECT,SizeOf(RECT))
itemrect\top = currentsubitem
SendMessage_(hwnd,#LVM_GETSUBITEMRECT, currentitem, @itemrect)
ResizeGadget(1,itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
ResizeSpinGadget_(2, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
InvalidateRect_(GadgetID(1),0,1)
InvalidateRect_(GadgetID(SpinGadget_),0,1)
EndProcedure
Procedure SubClass_LV(hwnd, msg, wparam, lparam)
result = CallWindowProc_(oldproc, hwnd, msg, wparam, lparam)
If msg = #WM_RBUTTONDOWN Or msg = #WM_LBUTTONDOWN ;Or msg = #WM_CREATE
GetCursorPos_(@cp.POINT)
MapWindowPoints_(0,hwnd,@cp,1)
HitInfo.LVHITTESTINFO
Hitinfo\pt\x = cp\x
HitInfo\pt\y = cp\y
SendMessage_(hwnd,#LVM_SUBITEMHITTEST ,0,@HitInfo)
If hitinfo\isubitem = 1 And HitInfo\iItem >= 0 ;если шелкнули по 1 стольбцу
currentitem = hitinfo\iitem
currentsubitem = hitinfo\isubitem+1
RtlZeroMemory_(@itemrect.RECT,SizeOf(RECT))
itemrect\top = hitinfo\iSubItem+1
SendMessage_(hwnd,#LVM_GETSUBITEMRECT, hitinfo\iitem, @itemrect)
ElseIf hitinfo\isubitem = 2 And HitInfo\iItem >= 0 ;если шелкнули по 2 стольбцу
currentitem = hitinfo\iitem
currentsubitem = hitinfo\isubitem
RtlZeroMemory_(@itemrect.RECT,SizeOf(RECT))
itemrect\top = hitinfo\iSubItem
SendMessage_(hwnd,#LVM_GETSUBITEMRECT, hitinfo\iitem, @itemrect)
;StringGadget
If currentitem =0 Or currentitem =12
ResizeGadget(3, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(3,GetGadgetItemText(0,currentitem,currentsubitem))
SetFocus_(GadgetID(3))
HideGadget(3,0)
HideSpinGadget_(2,1)
HideGadget(1,1)
HideGadget(4,1)
ElseIf currentitem =1
;SpinGadget
ElseIf currentitem =2 Or currentitem =3 Or currentitem =4 Or currentitem =5
ResizeSpinGadget_(2, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(2,GetGadgetItemText(0,currentitem,currentsubitem))
SetFocus_(GadgetID(2))
HideSpinGadget_(2,0)
HideGadget(1,1)
HideGadget(3,1)
HideGadget(4,1)
ElseIf currentitem =6
;ButtonGadget
ElseIf currentitem =7 Or currentitem =8 Or currentitem =9 Or currentitem =10 Or currentitem =21 Or currentitem =24
ResizeGadget(8, itemrect\left+77, itemrect\top+2, itemrect\right-itemrect\left-78, itemrect\bottom-itemrect\top-3)
SetGadgetText(8,"...")
SetFocus_(GadgetID(8))
HideGadget(8,0)
HideSpinGadget_(2,1)
HideGadget(1,1)
HideGadget(3,1)
;откючаем эти строки
ElseIf currentitem =11
ElseIf currentitem =26
;Combobox
ElseIf currentitem =28
ResizeGadget(5, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(5,GetGadgetItemText(0,currentitem,currentsubitem))
SetFocus_(GadgetID(5))
HideGadget(5,0)
HideSpinGadget_(2,1)
HideGadget(3,1)
HideGadget(4,1)
HideGadget(6,1)
;Combobox
ElseIf currentitem =29
ResizeGadget(6, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(6,GetGadgetItemText(0,currentitem,currentsubitem))
SetFocus_(GadgetID(6))
HideGadget(6,0)
HideSpinGadget_(2,1)
HideGadget(3,1)
HideGadget(4,1)
HideGadget(5,1)
;ComboboxGadget
Else
ResizeGadget(1, itemrect\left+1, itemrect\top+1, itemrect\right-itemrect\left-1, itemrect\bottom-itemrect\top-1)
SetGadgetText(1,GetGadgetItemText(0,currentitem,currentsubitem))
SetFocus_(GadgetID(1))
HideGadget(1,0)
HideSpinGadget_(2,1)
HideGadget(3,1)
HideGadget(4,1)
EndIf
Else
;Debug currentsubitem
HideGadget(1,1)
HideSpinGadget_(2,1)
HideGadget(3,1)
HideGadget(4,1)
HideGadget(5,1)
HideGadget(6,1)
EndIf
ElseIf msg=#WM_HSCROLL Or msg=#WM_VSCROLL
Resize(hwnd)
ElseIf msg=#WM_NOTIFY
*nmHEADER.HD_NOTIFY = lParam
Select *nmHEADER\hdr\code
Case #HDN_ITEMCHANGING
Resize(hwnd)
EndSelect
EndIf
ProcedureReturn result
EndProcedure
OpenWindow(0,0,0,259,760,"",$CF0001)
ContainerGadget(10, 0,0,0,0, #PB_Container_Flat)
ListIconGadget(0,0,0,0,0,"",0,#LVS_OWNERDRAWFIXED)
;SetGadgetItemColor(0, 5, #PB_Gadget_BackColor, $00FFFF, -1)
oldproc = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @SubClass_LV())
AddGadgetColumn(0,1,"Название",130)
AddGadgetColumn(0,2,"Значение",100)
SetGadgetColor(0,#PB_Gadget_BackColor, RGB(239, 239, 239)) ; установить цветь фона
AddGadgetItem(0, -1, Chr(10) + "Name" + Chr(10) + "Window" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "РАЗМЕРЫ ОКНА" + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Left" + Chr(10) + "5" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Top" + Chr(10) + "5" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Width" + Chr(10) + "350" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Height" + Chr(10) + "200" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "ВИД ОКНА " + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "BackColor" + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "BackgraundImage" + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Cursor" + Chr(10) + "Default" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Font" + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "СТИЛЬ ОКНА " + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Caption" + Chr(10) + "Window" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Visible" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Enable" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "ControlBox" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "CloseBox" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "MaximizeBox" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "MinimizeBox" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "HelpBox" + Chr(10) + "False" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "SizeBox" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Icon" + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "ShowIcon" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "ShowInTaskbar" + Chr(10) + "True" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "Opacity" + Chr(10) + "100%" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "RighttoLeft" + Chr(10) + "False" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "ПОВЕДЕНИЕ ОКНА " + Chr(10) + "" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "TopMost" + Chr(10) + "False" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "StartPosition" + Chr(10) + "CenterScreen" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "WindowState" + Chr(10) + "Normal" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "AllowDrop" + Chr(10) + "False" + Chr(10) )
AddGadgetItem(0, -1, Chr(10) + "AutoScroll" + Chr(10) + "False" + Chr(10) )
ComboBoxGadget(1, 0,0,0,0,#PB_ComboBox_Editable)
SetParent_(GadgetID(1),GadgetID(0))
AddGadgetItem(1,0,"True")
AddGadgetItem(1,1,"False")
SpinGadget_(2,5, 183, 100, 20, 0, 2000,13,0)
SetParent_(GadgetID(SpinGadget_),GadgetID(0))
StringGadget(3,5, 183, 100, 20, "")
SetParent_(GadgetID(3),GadgetID(0))
ButtonImageGadget(8,5, 183, 100, 20,0)
SetParent_(GadgetID(8),GadgetID(0))
ComboBoxGadget(6, 0,0,0,0,#PB_ComboBox_Editable)
SetParent_(GadgetID(6),GadgetID(0))
AddGadgetItem(6,0,"Normal")
AddGadgetItem(6,0,"Minimized")
AddGadgetItem(6,1,"Maximized")
ComboBoxGadget(5, 0,0,0,0,#PB_ComboBox_Editable)
SetParent_(GadgetID(5),GadgetID(0))
AddGadgetItem(5,0,"CenterScreen")
AddGadgetItem(5,1,"CenterParent")
HideGadget(1,1)
HideSpinGadget_(2,1)
HideGadget(3,1)
HideGadget(8,1)
HideGadget(5,1)
HideGadget(6,1)
CloseGadgetList()
SetWindowCallback(@MainWindowCallBack())
;SetGadgetItemAttribute(0, 1,#PB_ListIcon_ColumnWidth , GadgetWidth(0)-232,-1)
ResizeGadget(0,-2,-26, GadgetWidth(10)+1,GadgetHeight(10)+1+26)
ResizeGadget(10,3,3, WindowWidth(0)-6,WindowHeight(0)-6)
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
;Debug EventGadget()
If currentitem <>1 And currentitem <>6 And currentitem <>11 And currentitem <>26 And currentsubitem>1
Select EventGadget()
Case 1
SetGadgetItemText(0, currentitem, GetGadgetText(1), currentsubitem)
Case 2
SetGadgetItemText(0, currentitem, GetGadgetText(2), currentsubitem)
Case 3
SetGadgetItemText(0, currentitem, GetGadgetText(3), currentsubitem)
Case 4
Debug currentitem;SetGadgetItemText(0, currentitem, GetGadgetText(4), currentsubitem)
If currentitem=7
EndIf
Case 5
SetGadgetItemText(0, currentitem, GetGadgetText(5), currentsubitem)
Case 6
SetGadgetItemText(0, currentitem, GetGadgetText(6), currentsubitem)
EndSelect
EndIf
EndSelect
Until EventID = #WM_CLOSEПоделиться3430.09.2013 22:50:21
Тогда нужно где-то хранить цвет каждой строки (например в SetGadgetItemData())
без примера пока сложно для меня, потом вернусь к нему.
Поделиться3501.10.2013 00:59:22
и как убрать рамку у listicongadget
Стандартных методов нет.
Можно изменить стиль контрола (используя SetwindowLongPtr_()).
OpenWindow(0, 100, 100, 300, 100, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) hWnd=ListIconGadget(0, 5, 5, 290, 90, "Name", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection) AddGadgetColumn(0, 1, "Address", 250) AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay") AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity") SetWindowLongPtr_(hWnd, #GWL_EXSTYLE, GetWindowLongPtr_(hWnd, #GWL_EXSTYLE)&~#WS_EX_CLIENTEDGE) Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow
а здесь почему нету событие на кнопке никак не пойму?
У меня встречный вопрос. Почему прога так написана что падает? Зачем скрывать несуществующие гаджеты?
Поделиться3604.10.2013 18:43:48
У меня встречный вопрос. Почему прога так написана что падает? Зачем скрывать несуществующие гаджеты?
раньше под номером 4 был а теперь переделал на 8 вот почему.
раньше работало в 5.11
CreateImage(1,32,32,32|#PB_Image_Transparent )
а теперь в справке вот так
CreateImage(1,32,32,32,#PB_Image_Transparent )
но не работает, что делать?
Вот у меня разные вопросы, мне для них новые темы создавать, или можно здесь писать?
Поделиться3704.10.2013 22:45:48
а теперь в справке вот так
Версия PB?
Поделиться3905.10.2013 10:49:31
Все работает.
If OpenWindow(0, 0, 0, 200, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateImage(0, 200, 200, 32, #PB_Image_Transparent) And
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_Outlined|#PB_2DDrawing_AllChannels)
y = 0
For x = 0 To 95 Step 10
Box(x, y, 200-2*x, 200-2*y, RGBA(Random(255), Random(255), Random(255), Random(255)))
y + 10 ; the same as y = y + 10
Next x
StopDrawing()
ImageGadget(0, 0, 0, 200, 200, ImageID(0))
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIfПохожие темы
| RTSP PureBasic | PureBasic для Windows | 13.07.2022 |
| Вопросы новичка | Вопросы по PureBasic | 23.12.2010 |