Page 2 of 3

Posted: Mon Aug 08, 2005 10:17 pm
by thefool
looks nice! Code code code!

Posted: Mon Aug 08, 2005 11:28 pm
by localmotion34
Henrik wrote: it would be even more perfect if "you = the user", could ad other gadgets but addDUIlink's

Henrik
i didnt want to try that at first, but in working with CorelDraw12 today, i saw EXACTLY what you were talking about. on the right hand side of the MDI, there is sort of like a DUIhwnd where you click the top of a group, and a tabcontrol, or listbox, or whatever is on a window is hidden an shown. its pretty much like an outlook gadget for GADGETS.

i thought it was really cool, so i guess i will go ahead and make a DUIhwnd for that too. i think it will go something like this:

duipane(number,x,y,width,height,TYPE) where TYPE would be

#DUI_Link or #DUI_GADGET

then ill add an IF condition based on the TYPE that will either give you a DUIlink or DUI_gadget type of window, and each of the subwindows between the types will look a little different.

@NUM3 can you post the code of HOW you modified my LIB. i like the gradient look, so can you just shoot the code back at me and ill work further and re-compile.

Posted: Tue Aug 09, 2005 2:53 pm
by Num3
localmotion34 wrote:@NUM3 can you post the code of HOW you modified my LIB. i like the gradient look, so can you just shoot the code back at me and ill work further and re-compile.
Eheheh...

No problem, i'll post it tonight!

I just changed 3 lines of code in a procedure and added the gradient code....

Posted: Tue Aug 09, 2005 6:35 pm
by Num3
Here's my code (sorry no comments on the changes)

Code: Select all



DataSection
up1:IncludeBinary "up.bmp"
down:IncludeBinary "down.bmp"
EndDataSection 


Procedure InitDUI()
  ;UseJPEGImageDecoder()
  #duiup=$FF06
  #duidown=$FF07
  #WM_MOUSEHOVER = $2A1
  #WM_MOUSELEAVE = $2A3
  #BS_FLAT=$8000
  #TME_HOVER = 1
  #TME_LEAVE = 2
  #clnavy=$00800000
  Dim image.l(2)
  Structure inf
    gadgethght.l
    scrollgadget.l
    parent.l
    duinum.l[10]
    State.l[10]
    hwnd.l[10]
    parenthwnd.l[10]
    imagehwnd.l[10]
    button.l[10]
    buttonstate.l[10]
    width.l
    height.l[10]
    hyperlink.l[50]
    textgad.l[10]
    yvalue.l[10]
    scrollheight.l
  EndStructure
  image(0)=CatchImage(#PB_Any,?up1)
  image(1)=CatchImage(#PB_Any,?down)
  NewList dui.inf()
  Dim icon.l(100)
EndProcedure

Procedure checkscrollheight(DUIpane)
  scrollmax=20
  SelectElement(dui(),DUIpane)
  For a=0 To 9
    If dui()\height[a]=0
      scrollmax=dui()\yvalue[a-1]+dui()\height[a-1]
      Break
    EndIf
  Next
  If scrollmax>dui()\scrollheight
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,scrollmax+10)
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+30,dui()\gadgethght,#SWP_NOMOVE)
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN)
  Else
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,dui()\scrollheight)
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+13,dui()\gadgethght,#SWP_NOMOVE)
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN)
  EndIf
EndProcedure

Procedure moveproc(hwnd,msg,wParam,lParam)
  Select msg
    Case #duiup
      SelectElement(dui(),lParam)
      heighttomove=dui()\height[wParam]-20
      For a=wParam+1 To 9
        height=dui()\height[a]-20
        yval=dui()\yvalue[a]-heighttomove
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE)
        dui()\yvalue[a]=yval
      Next
      checkscrollheight(lParam)
      ProcedureReturn 0
    Case #duidown
      SelectElement(dui(),lParam)
      heighttomove=dui()\height[wParam]-20
      For a=wParam+1 To 9
        height=dui()\height[a]
        yval=dui()\yvalue[a]+heighttomove
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE)
        dui()\yvalue[a]=yval
      Next
      checkscrollheight(lParam)
      ProcedureReturn 0
  EndSelect
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc2"),hwnd,msg,wParam,lParam)
EndProcedure

Procedure clickproc(hwnd,msg,wParam,lParam)
  Select msg
    Case #WM_MOUSEMOVE
      Structure myTRACKMOUSEEVENT
        cbSize.l
        dwFlags.l
        hwndTrack.l
        dwHoverTime.l
      EndStructure
      mte.myTRACKMOUSEEVENT
      mte\cbSize = SizeOf(myTRACKMOUSEEVENT)
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_DEFPUSHBUTTON,#True)
      mte\dwFlags = #TME_LEAVE
      mte\hwndTrack = hwnd
      TrackMouseEvent_(mte)
    Case #WM_MOUSELEAVE 
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_PUSHBUTTON,#True)
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc3"),hwnd,msg,wParam,lParam)
EndProcedure 

Procedure buttonproc(hwnd,msg,wParam,lParam)
  Select msg
    Case #WM_CTLCOLORSTATIC
      SetBkMode_(wParam,#TRANSPARENT	)
      blue = CreatePatternBrush_(UseImage(200))
      ForEach dui()
        For a=0 To 9
          If IsGadget(dui()\textgad[a])And lParam=GadgetID(dui()\textgad[a])
            SetTextColor_(wParam,#White) ;Text colour
             EndIf
        Next
      Next
      ProcedureReturn blue
    Case #WM_COMMAND
      parent=GetParent_(hwnd)
      ForEach dui()
        For a=0 To 9
          If parent=dui()\hwnd[a]
            currentdui=ListIndex(dui())
            scrollparent=GetParent_(dui()\hwnd[a])
            If dui()\State[a]=1
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,22,#SWP_NOMOVE)
              dui()\State[a]=0
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui()))
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(1)))
            ElseIf dui()\State[a]=0
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE)
              dui()\State[a]=1
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui()))
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
            EndIf
            Break
          EndIf
        Next
      Next
      ProcedureReturn 0
    Case #WM_LBUTTONDBLCLK
      parent=GetParent_(hwnd)
      ForEach dui()
        For a=0 To 9
          If parent=dui()\hwnd[a]
            currentdui=ListIndex(dui())
            scrollparent=GetParent_(dui()\hwnd[a])
            If dui()\State[a]=1
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,20,#SWP_NOMOVE)
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_UNCHECKED,0)
              dui()\State[a]=0
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui()))
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(1)))
            ElseIf dui()\State[a]=0
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE)
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_CHECKED,0)
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui()))
              dui()\State[a]=1
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
            EndIf
            Break
          EndIf
        Next
      Next
  EndSelect
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc1"),hwnd,msg,wParam,lParam)
EndProcedure

Procedure DUIpane(number,x,y,panewidth,height,border); Creates A Pane To House DUIhwnd's
  If border=0
    border=#PB_ScrollArea_Single
  EndIf
  AddElement(dui())
  SelectElement(dui(),number)
  dui()\gadgethght=height
  dui()\width=panewidth-10
  scroll=ScrollAreaGadget(#PB_Any,x,y,panewidth,height,panewidth-5,height-20,30,border )
  dui()\scrollgadget=scroll
  dui()\scrollheight=height-20
  child=GetWindow_(GadgetID(scroll),#GW_CHILD)
  dui()\parent=child
  SetProp_(child,"OldProc2",SetWindowLong_(child, #GWL_WNDPROC, @moveproc()))
  icon(number)=CreateImage(number+200,dui()\width,22)
  
  i = dui()\width
  Color1=RGB($80,$80,$80)
  Color2=GetSysColor_(4)
  sRed.f   = Red(Color1)   : r.f = (Red  (Color1) - Red  (Color2))/i 
  sGreen.f = Green(Color1) : g.f = (Green(Color1) - Green(Color2))/i 
  sBlue.f  = Blue(Color1)  : b.f = (Blue (Color1) - Blue (Color2))/i 
  
  StartDrawing(ImageOutput()) 
  For a = 0 To i-1 
    xx.f = sRed   - a*r 
    yy.f = sGreen - a*g 
    zz.f = sBlue  - a*b 
    Line(a,0,0,25,RGB(xx,yy,zz)) 
  Next a 
  
  StopDrawing()
  
  ProcedureReturn scroll
EndProcedure

Procedure AddDUIhwnd(DUIpane,Position,text.s); Add A DUIhwnd that Can Contain Links To Commands
  SelectElement(dui(),DUIpane)
  dui()\duinum[Position]=Position
  dui()\height[Position]=50
  totalheight=20
  If Position=0
    dui()\yvalue[Position]=20
  ElseIf Position<>0
    For a=0 To Position-1
      totalheight=totalheight+dui()\height[a]+20
    Next
    dui()\yvalue[Position]=totalheight
  EndIf
  mainhandle=OpenWindow(#PB_Any,5,dui()\yvalue[Position],dui()\width,50,#PB_Window_Invisible,"")
  dui()\hwnd[Position]=WindowID(mainhandle)
  SetWindowLong_(dui()\hwnd[Position],#GWL_STYLE, #WS_CHILD|#WS_BORDER|#WS_CLIPCHILDREN|#WS_CLIPSIBLINGS )
  SetParent_(dui()\hwnd[Position],dui()\parent)
  CreateGadgetList(dui()\hwnd[Position])
  dui()\imagehwnd[Position]=ImageGadget(#PB_Any,0,0,dui()\width,20,0)
  SetGadgetState(dui()\imagehwnd[Position],icon(DUIpane))
  If region
    SetWindowRgn_(dui()\hwnd[Position],region,#True)
  EndIf 
  dui()\button[Position]=ButtonGadget(#PB_Any,dui()\width-22,2,16,16,"^")
  style = GetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE)
  toggleStyle=style|$1083|$8000|#BS_BITMAP	
  SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE, toggleStyle)
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
  SetProp_(GadgetID(dui()\button[Position]),"OldProc3",SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_WNDPROC, @clickproc()))
  SetParent_(GadgetID(dui()\button[Position]),GadgetID(dui()\imagehwnd[Position]))
  dui()\textgad[Position]=TextGadget(#PB_Any,0,4,dui()\width-19,20,text,#PB_Text_Center)
  SetParent_(GadgetID(dui()\textgad[Position]),GadgetID(dui()\imagehwnd[Position]))
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETCHECK,#BST_CHECKED,0)
  SetProp_(GadgetID(dui()\imagehwnd[Position]),"OldProc1",SetWindowLong_(GadgetID(dui()\imagehwnd[Position]), #GWL_WNDPROC, @buttonproc()))
  ; region=Createroundrectrgn_(0,0,dui()\width+1,56,9,9)
  ; If region
    ; SetWindowRgn_(dui()\hwnd[Position],region,#True)
  ; EndIf 
  ShowWindow_(dui()\hwnd[Position],#SW_SHOW)
  SetWindowPos_(dui()\hwnd[Position],0,0,0,dui()\width,50,#SWP_NOMOVE)
  RedrawWindow_(dui()\hwnd[Position],0,0,#RDW_ALLCHILDREN   )
  UpdateWindow_(dui()\hwnd[Position])
  dui()\State[Position]=1
  checkscrollheight(DUIpane)
EndProcedure

Procedure addDUIlink(DUIpane,DuiHwnd,Position,text.s,color.l); Add A Link To Execute A Command Or List An Item You Want To Display
  SelectElement(dui(),DUIpane)
  UseGadgetList(dui()\hwnd[DuiHwnd])
  hyperlink=HyperLinkGadget(#PB_Any, 5, (Position*20) +25,dui()\width,20,text, color)
  RedrawWindow_(dui()\hwnd[DuiHwnd],0,0,#RDW_ALLCHILDREN   )
  ShowWindow_(dui()\hwnd[DuiHwnd],#SW_SHOWNORMAL)
  UpdateWindow_(dui()\hwnd[DuiHwnd])
  If Position =0
    dui()\height[DuiHwnd]=50
  ElseIf Position>0
    dui()\height[DuiHwnd]=50+(Position*20)
    ; region=Createroundrectrgn_(0,0,dui()\width+1,dui()\height[DuiHwnd]+5,9,9)
    ; If region
      ; SetWindowRgn_(dui()\hwnd[DuiHwnd],region,#True)
    ; EndIf 
    SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE)
    If Position>=1
      For a=DuiHwnd+1 To 9
        SetWindowPos_(dui()\hwnd[a],0,5,dui()\yvalue[a]+(20),0,0,#SWP_NOSIZE)
        dui()\yvalue[a]=dui()\yvalue[a]+(20)
      Next
    EndIf 
  EndIf
  checkscrollheight(DUIpane)
  ProcedureReturn hyperlink
EndProcedure

Procedure HideDUI(DUIpane,DuiHwnd,State);Hide Or Show And Individial DUIhwnd
  If State=0
    If dui()\State[DuiHwnd]=0
      SelectElement(dui(),DUIpane)
      parent=GetParent_(dui()\hwnd[DuiHwnd])
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE)
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_CHECKED,0)
      dui()\State[DuiHwnd]=1
      PostMessage_(parent,#duidown,DuiHwnd,ListIndex(dui()))
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(0)))
    EndIf
  ElseIf State=1
    If dui()\State[DuiHwnd]=1
      SelectElement(dui(),DUIpane)
      parent=GetParent_(dui()\hwnd[DuiHwnd])
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,20,#SWP_NOMOVE)
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_UNCHECKED,0)
      dui()\State[DuiHwnd]=0
      PostMessage_(parent,#duiup,DuiHwnd,ListIndex(dui()))
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,UseImage(image(1)))
    EndIf
  EndIf
EndProcedure

Procedure GetDUIstate(duinumber);Determine Whether a DUIhwnd is Expanded Or Collapsed
  SelectElement(dui(),duinumber)
  returnvalue=dui()\State[duinumber]
  ProcedureReturn returnvalue
EndProcedure

; Procedure DUIExpand(DUIpane,State)
  ; If State= 0 Or State=1
  ; SelectElement(dui(),DUIpane)
  ; For a=0 To 9
    ; If IsWindow_(dui()\hwnd[a])
      ; HideDUI(DUIpane,a,State)
    ; EndIf 
  ; Next 
; EndIf 
; EndProcedure 



Posted: Tue Aug 09, 2005 9:09 pm
by thefool
did the dropping of jpeglib help on filesize?

Posted: Tue Aug 09, 2005 9:29 pm
by Henrik
Indeed TF in my case about from 71k to 31k only with num3 changes. :wink:

@localmotion34 i was thinkink maybe you should let the user have some more options in the AddDUIhwnd
Like #Dui_Color the shape 'n and some other stuff, i forgot now cus i too tired think straight. :?

About support for other gadgets he. he.., sounds very cool indeed.. :D

Best regrads
Henrik

Posted: Wed Aug 10, 2005 11:54 am
by Pantcho!!
First of all great lib localmotion34 !!

it looks very good with num3 addon!

i have few suggestions and i think it will be perfect lib

- the gardient like num3 made would be from a selection of 2 colors, for example blue and white...
- Background color of the DUI
- Background color of the Links
- color of the DUIWND title text!
- maybe a small 16x16 icon option on the left side of the DUIWND title

this will be perfect!! hehe

thats it :)

looking forward for re-packing btw...

Posted: Wed Aug 10, 2005 5:32 pm
by fsw
Nice work.

One thought though (if you want this Gadget to be really usable):
the over all size of the Gadget should not change if the vertical scroll shows up.

This said, the vertical scroll should not make the Gadget wider, the size should remain the same.

Posted: Wed Dec 28, 2005 11:46 am
by pure_wishmaster
I have a problem,
Image
my gradient in the menu isn´t correctly.
i have seen by num3 its right but my menu isn´t correct!

sorry for my english!

Posted: Wed Dec 28, 2005 2:49 pm
by srod
I can't seem to download the zip file. Well I can download it, but not open it! Seems to think it's a text file!

Posted: Wed Dec 28, 2005 3:29 pm
by PB
Winzip says it's corrupted when I download it, too.

Posted: Mon Jan 30, 2006 2:31 am
by SFSxOI
My winzip says its corrupted also

Posted: Fri Mar 24, 2006 11:22 pm
by radtke.i.j
[quote="Num3"]Here's my code (sorry no comments on the changes)

who can optimize the code of Num3 for PB4 ????

Thank you me now already !!

Posted: Sat Mar 25, 2006 12:27 am
by netmaestro
who can optimize the code of Num3 for PB4 ????
I guess I can:

Code: Select all


Procedure InitDUI() 
  #duiup=$FF06 
  #duidown=$FF07 
  #WM_MOUSEHOVER = $2A1 
  #WM_MOUSELEAVE = $2A3 
  #BS_FLAT=$8000 
  #TME_HOVER = 1 
  #TME_LEAVE = 2 
  #clnavy=$00800000 
  Global Dim image.l(2) 
  Structure inf 
    gadgethght.l 
    scrollgadget.l 
    parent.l 
    duinum.l[10] 
    State.l[10] 
    hwnd.l[10] 
    parenthwnd.l[10] 
    imagehwnd.l[10] 
    button.l[10] 
    buttonstate.l[10] 
    width.l 
    height.l[10] 
    hyperlink.l[50] 
    textgad.l[10] 
    yvalue.l[10] 
    scrollheight.l 
  EndStructure 
  image(0)=CatchImage(#PB_Any,?up) 
  image(1)=CatchImage(#PB_Any,?down) 
  Global NewList dui.inf() 
  Global Dim icon.l(100) 
EndProcedure 

Procedure checkscrollheight(DUIpane) 
  scrollmax=20 
  SelectElement(dui(),DUIpane) 
  For a=0 To 9 
    If dui()\height[a]=0 
      scrollmax=dui()\yvalue[a-1]+dui()\height[a-1] 
      Break 
    EndIf 
  Next 
  If scrollmax>dui()\scrollheight 
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,scrollmax+10) 
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+30,dui()\gadgethght,#SWP_NOMOVE) 
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN) 
  Else 
    SetGadgetAttribute(dui()\scrollgadget,#PB_ScrollArea_InnerHeight,dui()\scrollheight) 
    SetWindowPos_(GadgetID(dui()\scrollgadget),0,0,0,dui()\width+13,dui()\gadgethght,#SWP_NOMOVE) 
    RedrawWindow_(GadgetID(dui()\scrollgadget),0,0,#RDW_ALLCHILDREN) 
  EndIf 
EndProcedure 

Procedure moveproc(hwnd,msg,wParam,lParam) 
  Select msg 
    Case #duiup 
      SelectElement(dui(),lParam) 
      heighttomove=dui()\height[wParam]-20 
      For a=wParam+1 To 9 
        height=dui()\height[a]-20 
        yval=dui()\yvalue[a]-heighttomove 
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE) 
        dui()\yvalue[a]=yval 
      Next 
      checkscrollheight(lParam) 
      ProcedureReturn 0 
    Case #duidown 
      SelectElement(dui(),lParam) 
      heighttomove=dui()\height[wParam]-20 
      For a=wParam+1 To 9 
        height=dui()\height[a] 
        yval=dui()\yvalue[a]+heighttomove 
        SetWindowPos_(dui()\hwnd[a],0,5,yval,0,0,#SWP_NOSIZE) 
        dui()\yvalue[a]=yval 
      Next 
      checkscrollheight(lParam) 
      ProcedureReturn 0 
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc2"),hwnd,msg,wParam,lParam) 
EndProcedure 

Procedure clickproc(hwnd,msg,wParam,lParam) 
  Select msg 
    Case #WM_MOUSEMOVE 
      Structure myTRACKMOUSEEVENT 
        cbSize.l 
        dwFlags.l 
        hwndTrack.l 
        dwHoverTime.l 
      EndStructure 
      mte.myTRACKMOUSEEVENT 
      mte\cbSize = SizeOf(myTRACKMOUSEEVENT) 
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_DEFPUSHBUTTON,#True) 
      mte\dwFlags = #TME_LEAVE 
      mte\hwndTrack = hwnd 
      TrackMouseEvent_(mte) 
    Case #WM_MOUSELEAVE 
      SendMessage_(hwnd,#BM_SETSTYLE,#BS_PUSHBUTTON,#True) 
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc3"),hwnd,msg,wParam,lParam) 
EndProcedure 

Procedure buttonproc(hwnd,msg,wParam,lParam) 
  Select msg 
    Case #WM_CTLCOLORSTATIC 
      SetBkMode_(wParam,#TRANSPARENT   ) 
      blue = CreatePatternBrush_(ImageID(200)) 
      ForEach dui() 
        For a=0 To 9 
          If IsGadget(dui()\textgad[a])And lParam=GadgetID(dui()\textgad[a]) 
            SetTextColor_(wParam,#White) ;Text colour 
             EndIf 
        Next 
      Next 
      ProcedureReturn blue 
    Case #WM_COMMAND 
      parent=GetParent_(hwnd) 
      ForEach dui() 
        For a=0 To 9 
          If parent=dui()\hwnd[a] 
            currentdui=ListIndex(dui()) 
            scrollparent=GetParent_(dui()\hwnd[a]) 
            If dui()\State[a]=1 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,22,#SWP_NOMOVE) 
              dui()\State[a]=0 
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui())) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(1))) 
            ElseIf dui()\State[a]=0 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE) 
              dui()\State[a]=1 
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui())) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
            EndIf 
            Break 
          EndIf 
        Next 
      Next 
      ProcedureReturn 0 
    Case #WM_LBUTTONDBLCLK 
      parent=GetParent_(hwnd) 
      ForEach dui() 
        For a=0 To 9 
          If parent=dui()\hwnd[a] 
            currentdui=ListIndex(dui()) 
            scrollparent=GetParent_(dui()\hwnd[a]) 
            If dui()\State[a]=1 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,20,#SWP_NOMOVE) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_UNCHECKED,0) 
              dui()\State[a]=0 
              PostMessage_(scrollparent,#duiup,a,ListIndex(dui())) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(1))) 
            ElseIf dui()\State[a]=0 
              SetWindowPos_(dui()\hwnd[a],0,0,0,dui()\width,dui()\height[a],#SWP_NOMOVE) 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETCHECK,#BST_CHECKED,0) 
              PostMessage_(scrollparent,#duidown,a,ListIndex(dui())) 
              dui()\State[a]=1 
              SendMessage_(GadgetID(dui()\button[a]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
            EndIf 
            Break 
          EndIf 
        Next 
      Next 
  EndSelect 
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc1"),hwnd,msg,wParam,lParam) 
EndProcedure 

Procedure DUIpane(number,x,y,panewidth,height,border); Creates A Pane To House DUIhwnd's 
  If border=0 
    border=#PB_ScrollArea_Single 
  EndIf 
  AddElement(dui()) 
  SelectElement(dui(),number) 
  dui()\gadgethght=height 
  dui()\width=panewidth-10 
  scroll=ScrollAreaGadget(#PB_Any,x,y,panewidth,height,panewidth-5,height-20,30,border ) 
  dui()\scrollgadget=scroll 
  dui()\scrollheight=height-20 
  child=GetWindow_(GadgetID(scroll),#GW_CHILD) 
  dui()\parent=child 
  SetProp_(child,"OldProc2",SetWindowLong_(child, #GWL_WNDPROC, @moveproc())) 
  icon(number)=CreateImage(number+200,dui()\width,22) 
  
  i = dui()\width 
  Color1=RGB($80,$80,$80) 
  Color2=GetSysColor_(4) 
  sRed.f   = Red(Color1)   : r.f = (Red  (Color1) - Red  (Color2))/i 
  sGreen.f = Green(Color1) : g.f = (Green(Color1) - Green(Color2))/i 
  sBlue.f  = Blue(Color1)  : b.f = (Blue (Color1) - Blue (Color2))/i 
  
  StartDrawing(ImageOutput(number+200)) 
  For a = 0 To i-1 
    xx.f = sRed   - a*r 
    yy.f = sGreen - a*g 
    zz.f = sBlue  - a*b 
    Line(a,0,0,25,RGB(xx,yy,zz)) 
  Next a 
  
  StopDrawing() 
  
  ProcedureReturn scroll 
EndProcedure 

Procedure AddDUIhwnd(DUIpane,Position,text.s); Add A DUIhwnd that Can Contain Links To Commands 
  SelectElement(dui(),DUIpane) 
  dui()\duinum[Position]=Position 
  dui()\height[Position]=50 
  totalheight=20 
  If Position=0 
    dui()\yvalue[Position]=20 
  ElseIf Position<>0 
    For a=0 To Position-1 
      totalheight=totalheight+dui()\height[a]+20 
    Next 
    dui()\yvalue[Position]=totalheight 
  EndIf 
  mainhandle=OpenWindow(#PB_Any,5,dui()\yvalue[Position],dui()\width,50,"",#PB_Window_Invisible) 
  dui()\hwnd[Position]=WindowID(mainhandle) 
  SetWindowLong_(dui()\hwnd[Position],#GWL_STYLE, #WS_CHILD|#WS_BORDER|#WS_CLIPCHILDREN|#WS_CLIPSIBLINGS ) 
  SetParent_(dui()\hwnd[Position],dui()\parent) 
  CreateGadgetList(dui()\hwnd[Position]) 
  dui()\imagehwnd[Position]=ImageGadget(#PB_Any,0,0,dui()\width,20,0) 
  SetGadgetState(dui()\imagehwnd[Position],icon(DUIpane)) 
  If region 
    SetWindowRgn_(dui()\hwnd[Position],region,#True) 
  EndIf 
  dui()\button[Position]=ButtonGadget(#PB_Any,dui()\width-22,2,16,16,"^") 
  style = GetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE) 
  toggleStyle=style|$1083|$8000|#BS_BITMAP    
  SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_STYLE, toggleStyle) 
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
  SetProp_(GadgetID(dui()\button[Position]),"OldProc3",SetWindowLong_(GadgetID(dui()\button[Position]), #GWL_WNDPROC, @clickproc())) 
  SetParent_(GadgetID(dui()\button[Position]),GadgetID(dui()\imagehwnd[Position])) 
  dui()\textgad[Position]=TextGadget(#PB_Any,0,4,dui()\width-19,20,text,#PB_Text_Center) 
  SetParent_(GadgetID(dui()\textgad[Position]),GadgetID(dui()\imagehwnd[Position])) 
  SendMessage_(GadgetID(dui()\button[Position]),#BM_SETCHECK,#BST_CHECKED,0) 
  SetProp_(GadgetID(dui()\imagehwnd[Position]),"OldProc1",SetWindowLong_(GadgetID(dui()\imagehwnd[Position]), #GWL_WNDPROC, @buttonproc())) 
  ; region=Createroundrectrgn_(0,0,dui()\width+1,56,9,9) 
  ; If region 
    ; SetWindowRgn_(dui()\hwnd[Position],region,#True) 
  ; EndIf 
  ShowWindow_(dui()\hwnd[Position],#SW_SHOW) 
  SetWindowPos_(dui()\hwnd[Position],0,0,0,dui()\width,50,#SWP_NOMOVE) 
  RedrawWindow_(dui()\hwnd[Position],0,0,#RDW_ALLCHILDREN   ) 
  UpdateWindow_(dui()\hwnd[Position]) 
  dui()\State[Position]=1 
  checkscrollheight(DUIpane) 
EndProcedure 

Procedure addDUIlink(DUIpane,DuiHwnd,Position,text.s,color.l); Add A Link To Execute A Command Or List An Item You Want To Display 
  SelectElement(dui(),DUIpane) 
  UseGadgetList(dui()\hwnd[DuiHwnd]) 
  hyperlink=HyperLinkGadget(#PB_Any, 5, (Position*20) +25,dui()\width,20,text, color) 
  RedrawWindow_(dui()\hwnd[DuiHwnd],0,0,#RDW_ALLCHILDREN   ) 
  ShowWindow_(dui()\hwnd[DuiHwnd],#SW_SHOWNORMAL) 
  UpdateWindow_(dui()\hwnd[DuiHwnd]) 
  If Position =0 
    dui()\height[DuiHwnd]=50 
  ElseIf Position>0 
    dui()\height[DuiHwnd]=50+(Position*20) 
    ; region=Createroundrectrgn_(0,0,dui()\width+1,dui()\height[DuiHwnd]+5,9,9) 
    ; If region 
      ; SetWindowRgn_(dui()\hwnd[DuiHwnd],region,#True) 
    ; EndIf 
    SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE) 
    If Position>=1 
      For a=DuiHwnd+1 To 9 
        SetWindowPos_(dui()\hwnd[a],0,5,dui()\yvalue[a]+(20),0,0,#SWP_NOSIZE) 
        dui()\yvalue[a]=dui()\yvalue[a]+(20) 
      Next 
    EndIf 
  EndIf 
  checkscrollheight(DUIpane) 
  ProcedureReturn hyperlink 
EndProcedure 

Procedure HideDUI(DUIpane,DuiHwnd,State);Hide Or Show And Individial DUIhwnd 
  If State=0 
    If dui()\State[DuiHwnd]=0 
      SelectElement(dui(),DUIpane) 
      parent=GetParent_(dui()\hwnd[DuiHwnd]) 
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,dui()\height[DuiHwnd],#SWP_NOMOVE) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_CHECKED,0) 
      dui()\State[DuiHwnd]=1 
      PostMessage_(parent,#duidown,DuiHwnd,ListIndex(dui())) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(0))) 
    EndIf 
  ElseIf State=1 
    If dui()\State[DuiHwnd]=1 
      SelectElement(dui(),DUIpane) 
      parent=GetParent_(dui()\hwnd[DuiHwnd]) 
      SetWindowPos_(dui()\hwnd[DuiHwnd],0,0,0,dui()\width,20,#SWP_NOMOVE) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETCHECK,#BST_UNCHECKED,0) 
      dui()\State[DuiHwnd]=0 
      PostMessage_(parent,#duiup,DuiHwnd,ListIndex(dui())) 
      SendMessage_(GadgetID(dui()\button[DuiHwnd]),#BM_SETIMAGE,#IMAGE_BITMAP,ImageID(image(1))) 
    EndIf 
  EndIf 
EndProcedure 

Procedure GetDUIstate(duinumber);Determine Whether a DUIhwnd is Expanded Or Collapsed 
  SelectElement(dui(),duinumber) 
  returnvalue=dui()\State[duinumber] 
  ProcedureReturn returnvalue 
EndProcedure 

; Procedure DUIExpand(DUIpane,State) 
  ; If State= 0 Or State=1 
  ; SelectElement(dui(),DUIpane) 
  ; For a=0 To 9 
    ; If IsWindow_(dui()\hwnd[a]) 
      ; HideDUI(DUIpane,a,State) 
    ; EndIf 
  ; Next 
; EndIf 
; EndProcedure 

;************************************************
;            Test program - remove this 
;************************************************

OpenWindow(0,0,0,800,600,"")
CreateGadgetList(WindowID(0))
InitDUI()
DUIPane(0,20,20,100,200,0)
addDUIHwnd(0,0,"test")
link=addDUIlink(0,0,0,"Message Box",$FF0000) 

Repeat
  ev=WaitWindowEvent()
  If ev=#PB_Event_Gadget
    If EventGadget()=link
      MessageRequester("Notice", "You pressed a link that works!",$C0)
    EndIf
  EndIf
Until ev=#PB_Event_CloseWindow

;*************************************************
;               End Test Program
;*************************************************

DataSection
up:
Data.b $42,$4D,$38,$03,$00,$00,$00,$00,$00,$00,$36,$00,$00,$00,$28,$00
Data.b $00,$00,$10,$00,$00,$00,$10,$00,$00,$00,$01,$00,$18,$00,$00,$00
Data.b $00,$00,$02,$03,$00,$00,$12,$0B,$00,$00,$12,$0B,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3D,$4D,$20,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$36,$45,$1C,$3D,$4D,$23,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$41,$51,$23,$3D,$49,$20,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$32,$3D,$1C,$45,$55,$23,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$41,$51,$23,$3D,$4D,$20,$41,$51,$23,$2E,$3A
Data.b $19,$3A,$49,$20,$3D,$4D,$23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$49,$59,$27,$41,$51,$23,$3A,$49
Data.b $20,$32,$3D,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$3A,$45,$1C,$3A,$49
Data.b $20,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$45,$20,$32,$41,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$45,$55,$23,$3A,$49,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$45,$20,$32,$3D,$1C,$3A,$45,$20,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$4D,$61,$2B,$41,$51,$23,$3A,$49,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$32,$3D,$1C,$32,$3D,$19,$32,$41,$1C,$45,$55
Data.b $27,$3A,$49,$20,$3D,$49,$20,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$2B,$36,$19,$49,$59,$27,$49,$59
Data.b $27,$32,$3D,$19,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$41,$51,$23,$45,$55
Data.b $23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00
down:
Data.b $42,$4D,$38,$03,$00,$00,$00,$00,$00,$00,$36,$00,$00,$00,$28,$00
Data.b $00,$00,$10,$00,$00,$00,$10,$00,$00,$00,$01,$00,$18,$00,$00,$00
Data.b $00,$00,$02,$03,$00,$00,$12,$0B,$00,$00,$12,$0B,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$45,$55,$23,$41,$51
Data.b $23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$32,$3D,$19,$49,$59,$27,$49,$59
Data.b $27,$2B,$36,$19,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$3D,$49,$20,$3A,$49,$20,$45,$55,$27,$32,$41
Data.b $1C,$32,$3D,$19,$32,$3D,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$49,$20,$41,$51,$23,$4D,$61,$2B,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$3A,$45,$20,$32,$3D,$1C,$3A,$45,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3A,$49,$20,$45,$55,$23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$32,$41,$1C,$3A,$45,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$3A,$49,$20,$3A,$45
Data.b $1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$32,$3D,$1C,$3A,$49,$20,$41,$51
Data.b $23,$49,$59,$27,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$3D,$4D,$23,$3A,$49,$20,$2E,$3A,$19,$41,$51
Data.b $23,$3D,$4D,$20,$41,$51,$23,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3D,$4D,$20,$45,$55,$23,$32,$3D,$1C,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$3D,$4D,$20,$3D,$49,$20,$41,$51,$23,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$3D,$4D,$23,$36,$45,$1C,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$3D,$4D,$20,$3D,$4D,$20,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9,$B9
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00
EndDataSection

Posted: Sat Mar 25, 2006 5:02 pm
by radtke.i.j
netmaestro wrote:
who can optimize the code of Num3 for PB4 ????
I guess I can:

Code: Select all


Procedure InitDUI() 
  #duiup=$FF06 
  .....
thank you netmaestro !!!!

Greetings from old Europe, Germany