Code: Select all
#LVSICF_NOINVALIDATEALL = 1
#LVSICF_NOSCROLL = 2
#LVN_ODCACHEHINT = #LVN_FIRST - 13
#HDS_CHECKBOXES = $0400
#HDF_CHECKBOX = $0040
#HDF_CHECKED = $0080
Prototype.i p_PrintWindow(hWnd, hdc, flags)
OpenLibrary(1, "User32.dll")
Global PrintWindow.p_PrintWindow = GetFunction(1, "PrintWindow")
Global start,finish,selno
Structure Licon Align 4 ;#PB_Structure_AlignC
index.i
imgID.i
item1.s
item2.f
item3.s
EndStructure
Global NewList myItems.licon() ,NewList state() ,Dim ssort(5,1)
Global oldproc,oldliCB ,styleflag,header, header_h,sort ,editflag ,row,col,crow,ccol,rowed,coled
Global start,finish,brush,chkcol ,chkno,popt1,sopt1
Global HitInfo.LVHITTESTINFO ,cbox.HDITEM,titem ,dpix.d,dpiy.d
titem = 350000
ExamineDesktops()
olddesktop = DesktopWidth(0)
dpix = DesktopResolutionX()
dpiy = DesktopResolutionY()
cbox\mask = #HDI_FORMAT
cbox\fmt = #HDF_CHECKBOX | #HDF_STRING | #HDF_BITMAP_ON_RIGHT
sort = 1
brush=CreateSolidBrush_($CCFFFF)
ssort(1,0) = OffsetOf(Licon\index)
ssort(1,1) = TypeOf(Licon\index)
ssort(3,0) = OffsetOf(Licon\item1)
ssort(3,1) = TypeOf(Licon\item1)
ssort(4,0) = OffsetOf(Licon\item2)
ssort(4,1) = TypeOf(Licon\item2)
ssort(5,0) = OffsetOf(Licon\item3)
ssort(5,1) = TypeOf(Licon\item3)
Procedure LoadData()
StandardFile$ = "C:\*.txt"
Pattern$ = "Text (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|All files (*.*)|*.*"
Pattern = 0 ; use the first of the three possible patterns as standard
File$ = OpenFileRequester("Please choose file to load", StandardFile$, Pattern$, Pattern)
If File$
ReadFile(0,File$)
ReadStringFormat(0)
While Eof(0) = 0
AddElement(state())
AddElement(myItems())
txt$ = ReadString(0,#PB_UTF8)
result$ = StringField(txt$, 1, ";")
myItems()\index = Val(result$)
result$ = StringField(txt$, 2, ";")
myItems()\item1 = result$
result$ = StringField(txt$, 3, ";")
myItems()\item2 = ValF(result$)
result$ = StringField(txt$, 4, ";")
myItems()\item3 = result$
Wend
CloseFile(0)
MessageRequester("Information", "You have selected following file:"+Chr(10)+File$, 0)
Else
MessageRequester("Information", "The requester was canceled.", 0)
EndIf
EndProcedure
Procedure SaveListIconGadget(Gadget)
StandardFile$ = "C:\Licontest.txt"
Pattern$ = "Text (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|All files (*.*)|*.*"
Pattern = 0 ; use the first of the three possible patterns as standard
File$ = SaveFileRequester("Please choose file to save", StandardFile$, Pattern$, Pattern)
If File$
If GetGadgetState(sopt1) = 1
finish = titem
EndIf
OpenFile(0,File$)
For item = start To finish
SelectElement(myItems(),item)
WriteStringN(0,Str(myItems()\index)+";"+myItems()\item1+";"+StrD(myItems()\item2)+";"+myItems()\item3,#PB_UTF8 )
If GetAsyncKeyState_(#VK_ESCAPE) & $8000 = $8000
Break
EndIf
Next
CloseFile(0)
MessageRequester("Information", "You have selected following file:"+Chr(10)+File$, 0)
Else
MessageRequester("Information", "The requester was canceled.", 0)
EndIf
EndProcedure
Procedure PrintListIconGadget (Gadget)
ColumnCount = SendMessage_(Header, #HDM_GETITEMCOUNT, 0, 0)
RowCount = SendMessage_(GadgetID(Gadget),#LVM_GETITEMCOUNT, 0, 0)
SendMessage_(GadgetID(gadget), #LVM_ENSUREVISIBLE, RowCount - 1, #True)
For CC = 0 To ColumnCount - 1
SendMessage_(GadgetID(gadget), #LVM_SETCOLUMNWIDTH,CC,#LVSCW_AUTOSIZE_USEHEADER & #LVSCW_AUTOSIZE)
Next
SendMessage_(GadgetID(gadget), #LVM_ENSUREVISIBLE, 0, #True)
header_h = 35
SetWindowTheme_(header, "", "")
SetGadgetColor(gadget,#PB_Gadget_LineColor,0)
x = GadgetX(gadget)
y = GadgetY(gadget)
w = GadgetWidth(gadget)
h = GadgetHeight(gadget)
SendMessage_(GadgetID(gadget), #LVM_GETITEMRECT, RowCount - 1,r.RECT)
NoPages = RowCount/30
SetGadgetState(gadget,-1)
PrintRequester()
If StartPrinting("ListIcon")
SendMessage_(GadgetID(gadget), #LVM_SCROLL, 0,start*1000)
ResizeGadget(gadget,x,y,r\right-12,1025)
CreateImage(1,r\right-12,1025, 24)
If GetGadgetState(popt1) = 1
start = 0
finish = RowCount
EndIf
For sc = start To finish
ShowScrollBar_(GadgetID(gadget),#SB_BOTH,0)
hdc = StartDrawing(ImageOutput(1))
If hdc
If sc >= start And sc <= finish
PrintWindow(GadgetID(gadget), hdc, 0)
EndIf
StopDrawing()
EndIf
If StartDrawing(PrinterOutput())
DrawImage(ImageID(1), 400, 400 ,ImageWidth(1)*6,ImageHeight(1)*6)
If sc < finish
NewPrinterPage()
EndIf
StopDrawing()
EndIf
InvalidateRect_(GadgetID(gadget),0,#True)
SendMessage_(GadgetID(gadget), #LVM_SCROLL, 0,1000)
If GetAsyncKeyState_(#VK_ESCAPE) & $8000 = $8000
Break
EndIf
Next
StopPrinting()
EndIf
If IsImage(1)
FreeImage(1)
EndIf
ResizeGadget(gadget,x,y,w,h)
SendMessage_(GadgetID(gadget), #LVM_ENSUREVISIBLE, 0, #True)
SetGadgetColor(gadget,#PB_Gadget_LineColor,#PB_Default)
SetWindowTheme_(header, "", 0)
EndProcedure
Procedure Hheight(hWnd, uMsg, wParam, lParam)
result = CallWindowProc_(oldproc, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #HDM_LAYOUT
*hdlayout.HD_LAYOUT = lParam
If *hdlayout\prc <> 0
*rect.RECT = *hdlayout\prc
*rect\top = header_h
EndIf
If *hdlayout\pwpos <> 0
*windowpos.WINDOWPOS = *hdlayout\pwpos
*windowpos\cy = header_h
EndIf
EndSelect
ProcedureReturn result
EndProcedure
Procedure liCB(hWnd, uMsg, wParam, lParam)
Protected hdi.hd_item
result = CallWindowProc_(oldliCB, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_NOTIFY
*pnmh.NMHDR = lparam
If *pnmh\code = #NM_CUSTOMDRAW
*pnmcd.NMCUSTOMDRAW = lparam
Select *pnmcd\dwDrawStage
Case #CDDS_PREPAINT
result = #CDRF_NOTIFYITEMDRAW
Case #CDDS_ITEMPREPAINT
text$=GetGadgetItemText(0, -1, *pnmcd\dwItemSpec)
If *pnmcd\uItemState & #CDIS_SELECTED
DrawFrameControl_(*pnmcd\hdc, *pnmcd\rc, #DFC_BUTTON, #DFCS_BUTTONPUSH|#DFCS_PUSHED)
*pnmcd\rc\left+2 : *pnmcd\rc\top+1
Else
DrawFrameControl_(*pnmcd\hdc, *pnmcd\rc, #DFC_BUTTON, #DFCS_BUTTONPUSH)
EndIf
*pnmcd\rc\bottom-1 : *pnmcd\rc\right-1
SetBkMode_(*pnmcd\hdc,#TRANSPARENT)
If *pnmcd\dwItemSpec&1
FillRect_(*pnmcd\hdc, *pnmcd\rc, brush)
SetTextColor_(*pnmcd\hdc, #Blue)
Else
FillRect_(*pnmcd\hdc, *pnmcd\rc, brush)
SetTextColor_(*pnmcd\hdc, #Red)
EndIf
If *pnmcd\rc\right>*pnmcd\rc\left
DrawText_(*pnmcd\hdc, @text$, Len(text$), *pnmcd\rc, #DT_CENTER|#DT_VCENTER|#DT_SINGLELINE|#DT_END_ELLIPSIS)
EndIf
result = #CDRF_SKIPDEFAULT
EndSelect
EndIf
EndSelect
ProcedureReturn result
EndProcedure
Procedure winCB(hWnd, uMsg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select uMsg
; Case #WM_CTLCOLORSTATIC
; Select GetProp_(lParam, "PB_ID")
; Case opt1,opt2,opt3
; SetBkMode_(wParam,#TRANSPARENT)
; SetTextColor_(wParam,$FFFFFF)
; ProcedureReturn Bkgcolor_1
; EndSelect
Case #WM_PRINTCLIENT ;Transparent Trackbars windows 7 to 10
Result = 0
Case #WM_NOTIFY
*pnmh.NMHEADER = lParam
; If *pnmh\hdr\hwndFrom = header
; If *pnmh\iItem = 0
; ProcedureReturn 1
; EndIf
; EndIf
Select *pnmh\hdr\code
Case #NM_CUSTOMDRAW
*LVCDHeader.NMLVCUSTOMDRAW = lParam
Select *LVCDHeader\nmcd\dwDrawStage ;
Case #CDDS_PREPAINT
Case #CDDS_ITEMPREPAINT
result = #CDRF_NOTIFYSUBITEMDRAW
Case #CDDS_SUBITEMPREPAINT
Row = *LVCDHeader\nmcd\dwItemSpec
Col = *LVCDHeader\iSubItem
If Row & 1 And styleflag = 1
If GetDlgItem_(hwnd,wParam) = GadgetID(0)
*LVCDHeader\clrTextBk = $BAEEE8
EndIf
EndIf
result = #CDRF_DODEFAULT
EndSelect
Case #HDN_ITEMCHANGED
If editflag = 1
r.RECT\top = coled
r.RECT\left = #LVIR_BOUNDS
SendMessage_(GadgetID(0), #LVM_GETSUBITEMRECT, rowed, r)
If coled = 0
r\left+trimx + 2
r\right = r\left + SendMessage_(GadgetID(0),#LVM_GETCOLUMNWIDTH,0,0)
EndIf
HideGadget(100,1)
EndIf
Case #HDN_DIVIDERDBLCLICK
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE)
EndIf
editflag = 0
Case #LVN_ODCACHEHINT
result = 0
; Case #LVN_ODFINDITEM
; result = -1
Case #LVN_GETDISPINFO ;
*pnmlvdi.NMLVDISPINFO = lParam
row = *pnmlvdi\item\iItem
col = *pnmlvdi\item\iSubItem
If col = 0 And *pnmlvdi\item\mask & #LVIF_STATE
*pnmlvdi\item\stateMask = #LVIS_STATEIMAGEMASK
If SelectElement(state(),myItems()\index)
If state() = 0 And chkcol = 0
*pnmlvdi\item\state = 1<<12
Else
*pnmlvdi\item\state = 2<<12
EndIf
EndIf
EndIf
If SelectElement(myItems(), row) <> 0
If *pnmlvdi\item\mask & #LVIF_IMAGE And *pnmlvdi\item\iSubItem = 2
*pnmlvdi\item\mask & #LVIF_IMAGE
*pnmlvdi\item\iImage = PeekI(@myItems()\imgID)
EndIf
If *pnmlvdi\item\mask & #LVIF_TEXT
Select *pnmlvdi\item\iSubItem
Case 1
PokeS(*pnmlvdi\item\pszText ,Str(PeekI(@myItems()\index)))
Case 3
PokeS(*pnmlvdi\item\pszText , PeekS(@myItems()\item1),-1, #PB_Unicode)
Case 4
PokeS(*pnmlvdi\item\pszText ,StrF(PeekF(@myItems()\item2)))
Case 5
PokeS(*pnmlvdi\item\pszText , PeekS(@myItems()\item3),-1, #PB_Unicode)
EndSelect
EndIf
EndIf
Case #LVN_BEGINSCROLL
editflag = 0
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE)
EndIf
Case #LVN_COLUMNCLICK ;Click Header item
SendMessage_(GadgetID(0), #LVM_HITTEST, 0, @HitInfo)
*nmlv.NM_LISTVIEW = lParam
sortcol = *nmlv\iSubItem
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE)
EndIf
If sortcol <> 0 And sortcol <> 2
SortStructuredList(myItems(),sort, ssort(sortcol,0), ssort(sortcol,1))
RedrawWindow_(GadgetID(0),#Null,#Null,#RDW_INVALIDATE|#RDW_UPDATENOW | #RDW_ERASE)
cbox\fmt = #HDF_CHECKBOX | #HDF_STRING
SendMessage_(Header, #HDM_SETITEM, 1, @cbox)
For index = 0 To 5
cbox\fmt = #HDF_STRING
SendMessage_(Header, #HDM_SETITEM, index, @cbox)
Next
sort ! 1
If sort = 0
cbox\fmt = #HDF_STRING | #HDF_SORTUP
Else
cbox\fmt = #HDF_STRING | #HDF_SORTDOWN
EndIf
SendMessage_(Header, #HDM_SETITEM, sortcol, @cbox)
cbox\fmt = #HDF_CHECKBOX
SendMessage_(Header, #HDM_SETITEM, 0, @cbox)
RedrawWindow_(GadgetID(0),#Null,#Null,#RDW_INVALIDATE|#RDW_UPDATENOW | #RDW_ERASE )
EndIf
Case #NM_DBLCLK ;LV Cell Double Click
Hitinfo\pt\x = WindowMouseX(0)
HitInfo\pt\y = WindowMouseY(0) - GadgetY(0)
SendMessage_(GadgetID(0), #LVM_SUBITEMHITTEST, 0, @HitInfo)
rowed = hitinfo\iItem
coled = hitinfo\iSubItem
r.RECT\top = coled
r.RECT\left = #LVIR_BOUNDS
SendMessage_(GadgetID(0), #LVM_GETSUBITEMRECT, rowed, r)
If coled > 2
ShowWindow_(GadgetID(100),#SW_SHOW)
MoveWindow_(GadgetID(100),r\left+16,r\top+16,r\right-r\left,r\bottom-r\top,1)
SetGadgetText(100,GetGadgetItemText(0,rowed,coled))
SetFocus_(GadgetID(100))
editflag = 1
Else
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE)
EndIf
EndIf
Case #NM_CLICK ;LV Row Click
Hitinfo\pt\x = WindowMouseX(0)
HitInfo\pt\y = WindowMouseY(0) - GadgetY(0)
SendMessage_(GadgetID(0), #LVM_SUBITEMHITTEST, 0, @HitInfo)
crow = Hitinfo\iItem
ccol = Hitinfo\iSubItem
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE )
EndIf
SelectElement(state(), myItems()\index)
If ccol = 0
If state() = 0
state() = 1
selno + 1
Else
state() = 0
selno - 1
EndIf
EndIf
SendMessage_(GadgetID(0), #LVM_REDRAWITEMS ,crow,crow)
EndSelect
Case #WM_SIZE,#WM_MOVE
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE )
EndIf
MoveWindow_(GadgetID(0),10*dpix,10*dpiy,(WindowWidth(0)-20)*dpix,(WindowHeight(0)-45)*dpiy,1)
MoveWindow_(GadgetID(2),10*dpix,(WindowHeight(0)-30)*dpiy,120*dpix,24*dpiy,1)
If IsWindow(1) And IsWindowVisible_(WindowID(1))
ResizeWindow(1,WindowX(0)+WindowWidth(0)/2-125,WindowY(0)+WindowHeight(0)/2-90,250,210)
EndIf
If IsWindow(2) And IsWindowVisible_(WindowID(2))
ResizeWindow(2,WindowX(0)+WindowWidth(0)/2-125,WindowY(0)+WindowHeight(0)/2-90,250,210)
EndIf
; Case #WM_EXITSIZEMOVE
; If IsWindowVisible_(WindowID(3))
; ResizeWindow(3,(WindowWidth(0)/2-125)*dpix,(WindowHeight(0)/2-90)*dpiy,250*dpix,180*dpiy)
; EndIf
EndSelect
ProcedureReturn result
EndProcedure
LoadFont(0,"Tahoma",14)
;LoadFont(1,"consolas",16,#PB_Font_Bold )
If OpenWindow(0, 0, 0, 700*dpix, 450*dpiy, "Virtual ListIconGadget", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If CreatePopupImageMenu(0)
MenuItem(1, "Add before ")
MenuItem(2, "Get Full Text ")
MenuItem(3, "Delete")
MenuBar()
MenuItem(4, "Save")
MenuItem(5, "Print")
MenuBar()
MenuItem(6, "Find")
MenuItem(7, "Scroll to")
MenuItem(10, "Quit")
EndIf
ListIconGadget(0,10*dpix,10*dpiy,680*dpix,390*dpiy,"*",30,#LVS_OWNERDATA| #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect |#PB_ListIcon_MultiSelect| #PB_ListIcon_CheckBoxes)
SendMessage_(GadgetID(0), #LVM_SETEXTENDEDLISTVIEWSTYLE , #LVS_EX_SUBITEMIMAGES, #LVS_EX_SUBITEMIMAGES)
SetGadgetFont(0,FontID(0))
AddGadgetColumn(0,2,"Index",70)
AddGadgetColumn(0,3,"Image",80)
AddGadgetColumn(0,4,"TEST2",150)
AddGadgetColumn(0,5,"TEST3",150)
AddGadgetColumn(0,6,"TEST4",150)
ButtonGadget(2,10*dpix,415*dpiy,120*dpix,24*dpiy,"List Style")
SetGadgetFont(2,FontID(0))
li = ImageList_Create_(32,32,#ILC_COLOR32| #ILC_MASK, 0, titem)
file$ = "Shell32.dll"
nimg = ExtractIconEx_(file$, -1, 0 ,0, 0)
Dim sicon(nimg)
ExtractIconEx_(file$, 0, 0 ,sicon(), nimg)
For icon = 0 To nimg
ImageList_AddIcon_(li,sicon(icon))
Next
FreeArray(sicon())
SendMessage_(GadgetID(0), #LVM_SETIMAGELIST, #LVSIL_SMALL, li)
header_h = 45
Header = SendMessage_(GadgetID(0), #LVM_GETHEADER, 0, 0)
SetWindowLongPtr_(Header, #GWL_STYLE, GetWindowLongPtr_(Header, #GWL_STYLE) | #HDS_CHECKBOXES)
SendMessage_(header,#HDM_SETBITMAPMARGIN,-2,0)
SendMessage_(header,#WM_SETFONT,FontID(0),0)
SendMessage_(Header, #HDM_SETITEM, 0, @cbox)
oldproc = SetWindowLongPtr_(Header, #GWL_WNDPROC, @Hheight())
SendMessage_(GadgetID(0), #LVM_SETITEMCOUNT, titem, #LVSICF_NOINVALIDATEALL| #LVSICF_NOSCROLL)
LoadData()
; For i = 0 To titem
; AddElement(state())
; AddElement(myItems())
; myItems()\index = i
; myItems()\imgID = i
; myItems()\item1 = "PureBasic " + Str(i)
; myItems()\item2 = Random(titem)/14
; myItems()\item3 = "TEST3 " + Str(i)
; Next
SetWindowCallback(@winCB())
StringGadget(100,0,0,0,0,"")
SetGadgetFont(100,FontID(0))
SetGadgetColor(100,#PB_Gadget_FrontColor,$0000FF)
;****************** Save LI ***************************
OpenWindow(1,WindowX(0)+WindowWidth(0)/2-125,WindowY(0)+WindowHeight(0)/2-90,250,210,"",#WS_BORDER|#PB_Window_BorderLess,WindowID(0))
UseGadgetList(WindowID(1))
FrameGadget(#PB_Any,2,2,WindowWidth(1)-4,WindowHeight(1)-4,"",#PB_Frame_Flat)
sopt1 = OptionGadget(#PB_Any,10,10,100,18,"All LI :")
SetGadgetState(sopt1,1)
; spt2 = OptionGadget(#PB_Any,10,40,100,18,"Pages :")
sopt2 = OptionGadget(#PB_Any,10,40,100,18,"Selected :")
stx1 = TextGadget(#PB_Any,20,65,100,24," From Row :")
;SetGadgetColor(stx1,#PB_Gadget_BackColor,$BCBCBD)
fromp = SpinGadget(#PB_Any,160,65,80,24,0,1000,#PB_Spin_Numeric)
SetGadgetState(fromp,0)
stx2 = TextGadget(#PB_Any,20,90,100,24," To Row :")
;SetGadgetColor(stx2,#PB_Gadget_BackColor,$BCBCBD)
stop = SpinGadget(#PB_Any,160,90,80,24,1,1000,#PB_Spin_Numeric)
SetGadgetState(stop,0)
sokb = ButtonGadget(#PB_Any,10,145,60,24,"Save")
scancelb = ButtonGadget(#PB_Any,80,145,60,24,"Cancel")
struncate = TextGadget(#PB_Any,2,180,250,24,"Escape to truncate",#SS_CENTER|#SS_CENTERIMAGE)
SetGadgetColor(struncate,#PB_Gadget_FrontColor ,$0000FF)
HideWindow(1,1)
;***********************************************************
;****************** Print LI ***************************
OpenWindow(2,WindowX(0)+WindowWidth(0)/2-125,WindowY(0)+WindowHeight(0)/2-90,250,210,"",#WS_BORDER|#PB_Window_BorderLess,WindowID(0))
UseGadgetList(WindowID(2))
FrameGadget(#PB_Any,2,2,WindowWidth(2)-4,WindowHeight(2)-4,"",#PB_Frame_Flat)
popt1 = OptionGadget(#PB_Any,10,10,100,18,"Document :")
SetGadgetState(popt1,1)
popt2 = OptionGadget(#PB_Any,10,40,100,18,"Pages :")
popt3 = OptionGadget(#PB_Any,10,120,100,18,"Selected :")
ptx1 = TextGadget(#PB_Any,20,65,100,24," From page :")
;SetGadgetColor(ptx1,#PB_Gadget_BackColor,$BCBCBD)
pfromp = SpinGadget(#PB_Any,160,65,80,24,0,1000,#PB_Spin_Numeric)
SetGadgetState(pfromp,0)
ptx2 = TextGadget(#PB_Any,20,90,100,24," To page :")
;SetGadgetColor(ptx2,#PB_Gadget_BackColor,$BCBCBD)
ptop = SpinGadget(#PB_Any,160,90,80,24,1,1000,#PB_Spin_Numeric)
SetGadgetState(ptop,0)
pokb = ButtonGadget(#PB_Any,10,145,60,24,"Print")
pcancelb = ButtonGadget(#PB_Any,80,145,60,24,"Cancel")
ptruncate = TextGadget(#PB_Any,2,180,250,24,"Escape to truncate",#SS_CENTER|#SS_CENTERIMAGE)
SetGadgetColor(ptruncate,#PB_Gadget_FrontColor ,$0000FF)
HideWindow(2,1)
;***********************************************************
UseGadgetList(WindowID(0))
;********************** Find Window ************************
;***********************************************************
;********************** Scroll To **************************
;***********************************************************
AddKeyboardShortcut(0,#PB_Shortcut_Return,50)
AddKeyboardShortcut(0,#PB_Shortcut_Escape,60)
;AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_A,70)
styleflag = 1
SetGadgetColor(0,#PB_Gadget_BackColor,$DEFEFE)
oldliCB = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @liCB())
InvalidateRect_(GadgetID(0),0,1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
If IsLibrary(1)
CloseLibrary(1)
EndIf
Quit = 1
Case #WM_LBUTTONUP
HdItem.HDITEM
HdItem\mask = #HDI_FORMAT
SendMessage_(Header, #HDM_GETITEM, 0, @HdItem)
If HdItem\mask & #HDI_FORMAT And HdItem\fmt & #HDF_CHECKED
chkcol = 1
chkno = 1
Else
chkcol = 0
chkno = 0
EndIf
Case #WM_RBUTTONDOWN
;SetActiveGadget(-1)
DisplayPopupMenu(0, WindowID(0))
Case #PB_Event_Menu
Select EventMenu()
Case 1 ;Add
If SelectElement(myItems(), GetGadgetState(0)-1) <> 0
titem + 1
AddElement(myItems())
AddElement(state())
myItems()\imgID = 0
myItems()\index = titem
myItems()\item1 = "PureBasic " + Str(titem)
myItems()\item2 = Random(titem)/14
myItems()\item3 = "TEST3 " + Str(titem)
RedrawWindow_(WindowID(0),#Null,#Null,#RDW_INVALIDATE|#RDW_UPDATENOW| #RDW_ERASE)
EndIf
Case 2 ;Get full text
draw = GetGadgetState(0)
SelectElement(myItems(),draw)
Debug Str(myItems()\index)+" "+myItems()\item1+" "+StrD(myItems()\item2)+" "+myItems()\item3
Case 3 ;Delete
draw = GetGadgetState(0)
SetGadgetState(0,-1)
SelectElement(myItems(),draw)
DeleteElement(myItems())
;SelectElement(state(), draw)
;DeleteElement(state())
RemoveGadgetItem(0,draw)
titem - 1
RedrawWindow_(GadgetID(0),#Null,#Null,#RDW_INVALIDATE|#RDW_UPDATENOW| #RDW_ERASE)
Case 4
HideWindow(1,0)
Case 5 ;Print
HideWindow(2,0)
Case 6 ;Find
Input$ = InputRequester("Find", "Please make your input:", "")
If Input$ > ""
frow = 0
Repeat
ForEach myItems() ; Process all the elements...
input1$ = myItems()\item1
input2$ = StrF(myItems()\item2)
input3$ = myItems()\item3
If (FindString(input1$,Input$) > 0 Or FindString(input2$,Input$) > 0 Or FindString(input3$,Input$) > 0) And myItems()\index > frow
frow = myItems()\index
SendMessage_(GadgetID(0), #LVM_GETITEMRECT, frow-1, r.RECT)
SendMessage_(GadgetID(0), #LVM_SCROLL, 0, r\top)
SetGadgetItemState(0,frow,#PB_ListIcon_Selected)
If frow > 0
Result = MessageRequester("Info","Found at Index :"+Str(frow)+#CRLF$+"Next find ?",#MB_YESNO|#MB_ICONINFORMATION)
If Result = #PB_MessageRequester_Yes
nomore = frow
Else
Break
EndIf
EndIf
EndIf
Next
Until Result = #PB_MessageRequester_No Or frow = nomore
MessageRequester("Info","Finished",#MB_OK|#MB_ICONINFORMATION)
Else
MessageRequester("Info","Nothing to find",#MB_OK|#MB_ICONINFORMATION)
EndIf
Case 7 ;Scroll to
;SendMessage_(GadgetID(0),#LVM_ENSUREVISIBLE,100000,1)
SendMessage_(GadgetID(gadget), #LVM_GETITEMRECT, 99999, r.RECT)
SendMessage_(GadgetID(gadget), #LVM_SCROLL, 0, r\top)
Case 10 ;Quit
If IsLibrary(1)
CloseLibrary(1)
EndIf
End
Case 50 ;Return to accept
If GetActiveGadget() = 100
SelectElement(myItems(), rowed)
edit$ = GetGadgetText(100)
Select coled
Case 3
myItems()\item1 = edit$
Case 4
myItems()\item2 = ValF(edit$)
Case 5
myItems()\item3 = edit$
EndSelect
;RedrawWindow_(WindowID(0),#Null,#Null,#RDW_INVALIDATE|#RDW_UPDATENOW| #RDW_ERASE)
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE)
EndIf
SetGadgetText(100,"")
editflag = 0
EndIf
Case 60 ;Esc to dismiss
If GetActiveGadget() = 100
If IsWindowVisible_(GadgetID(100))
ShowWindow_(GadgetID(100),#SW_HIDE)
EndIf
SetGadgetText(100,"")
editflag = 0
EndIf
; Case 70 ;Select all
; HitInfo.LVHITTESTINFO
; SendMessage_(GadgetID(0), #LVM_HITTEST, 0, @HitInfo)
; SetGadgetItemState(0, HitInfo\iItem, #PB_ListIcon_Selected)
; selno =10000000
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 0
draw = myItems()\index
Case 2
styleflag ! 1
If styleflag = 0
SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, 0)
SetGadgetColor(0,#PB_Gadget_BackColor,$0)
SetGadgetColor(0,#PB_Gadget_FrontColor,$FFFFFF)
Else
SetGadgetColor(0,#PB_Gadget_BackColor,$DEFEFE)
SetGadgetColor(0,#PB_Gadget_FrontColor,#PB_Default)
oldliCB = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @liCB())
EndIf
InvalidateRect_(GadgetID(0),0,1)
Case sfrom
start = GetGadgetState(sfromp)
Case stop
finish = GetGadgetState(stop)
Case sokb ;Save
DisableGadget(0,0)
SaveListIconGadget(0)
HideWindow(1,1)
Case scancelb
HideWindow(1,1)
DisableGadget(0,0)
Case pfromp ;From Page
start = GetGadgetState(pfromp)
Case ptop ;To Page
finish = GetGadgetState(ptop)
Case pokb ;Print
DisableGadget(0,0)
PrintListIconGadget(0)
HideWindow(2,1)
Case pcancelb ;Cancel printing
HideWindow(2,1)
DisableGadget(0,0)
EndSelect
EndSelect
Until Quit = 1
If IsLibrary(1)
CloseLibrary(1)
EndIf
EndIf