Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

Listview Event Logger (for PB 9)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Listview Event Logger (for PB 9)

    In learning how to work with the Listview control, it is useful to write an event logger for the control to see how notification events are generated and in what order and by what actions.

    Here is a Listview Event Logger for use with PB 9.0:

    Code:
    ' ***************************************************************
    '   This code can be used Royalty Free and Freely Distributed !
    ' ***************************************************************
    #COMPILE EXE
    #REGISTER NONE
    #DIM ALL          '  This is helpful to prevent errors in coding
    
    #INCLUDE "win32api.inc"   ' Must come first before other include files !
    #INCLUDE "commctrl.inc"
    ' *************************************************************
    '                  Constants and Declares (#1)
    ' *************************************************************
    %FORM1_LV1                = 90
    %FORM1_TEXT1              = 100
    ' --------------------------------------------------
    DECLARE SUB ShowDialog_Form1(BYVAL hParent&)
    DECLARE CALLBACK FUNCTION Form1_DLGPROC
    ' --------------------------------------------------
    DECLARE CALLBACK FUNCTION CBF_FORM1_TEXT1()
    '
    GLOBAL hForm1&    ' Dialog handle
    '
    ' *************************************************************
    '                    Application Entrance
    ' *************************************************************
    FUNCTION PBMAIN
        LOCAL Count&
        ShowDialog_Form1 0
        DO
            DIALOG DOEVENTS TO Count&
        LOOP UNTIL Count&=0
    END FUNCTION
    '
    SUB ShowDialog_Form1(BYVAL hParent&)
        LOCAL Style&, ExStyle&, LVExStyle&
        LOCAL N&, CT&        '  Variables used for Reading Data in Arrays for Listbox and Combobox
        '   hParent& = 0 if no parent Dialog
        Style& = %WS_POPUP OR %DS_MODALFRAME OR %WS_CAPTION OR %WS_MINIMIZEBOX OR %WS_SYSMENU OR %DS_CENTER
        ExStyle& = 0
        DIALOG NEW hParent&, "Listview Control Event Logger", 0, 0,  500,  350, Style&, ExStyle& TO hForm1&
        '
        ' ---------------------------------------------------------------------------------------
        '  Experiment with the different Listview styles to see effects on notification events
        ' ---------------------------------------------------------------------------------------
        Style&     = %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %LVS_REPORT OR %LVS_SHOWSELALWAYS
        ExStyle&   = %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR %WS_EX_RIGHTSCROLLBAR
        LVExStyle& = %LVS_EX_FULLROWSELECT OR %LVS_EX_ONECLICKACTIVATE OR %LVS_EX_GRIDLINES
        ' ---------------------------------------------------------------------------------------
        '
        CONTROL ADD LISTVIEW, hForm1&, %FORM1_LV1, "FoxList", 15, 15, 240, 320, Style&, ExStyle& CALL CBF_FORM1_LV1
        LISTVIEW SET STYLE hForm1&, %FORM1_LV1, LVExStyle&
        LISTVIEW INSERT COLUMN hForm1&, %FORM1_LV1, 1, "Column 1", 80,0
        LISTVIEW INSERT COLUMN hForm1&, %FORM1_LV1, 2, "Column 2", 80,0
        LISTVIEW INSERT COLUMN hForm1&, %FORM1_LV1, 3, "Column 3", 80,0
        FOR N&=1 TO 50
             LISTVIEW INSERT ITEM hForm1&, %FORM1_LV1, N&, 0, "Item"+STR$(N&)+"-A"
             LISTVIEW SET TEXT hForm1&, %FORM1_LV1, N&, 2, "Item"+STR$(N&)+"-B"
             LISTVIEW SET TEXT hForm1&, %FORM1_LV1, N&, 3, "Item"+STR$(N&)+"-C"
        NEXT N&
        CONTROL ADD TEXTBOX, hForm1&,  %FORM1_TEXT1,  "", 270, 15, 225, 320, _
            %WS_CHILD OR %WS_VISIBLE OR %ES_AUTOHSCROLL OR %WS_TABSTOP OR %ES_MULTILINE OR %WS_VSCROLL OR %ES_AUTOVSCROLL OR %ES_WANTRETURN, _
            %WS_EX_CLIENTEDGE CALL CBF_FORM1_TEXT1
        LOCAL hFont&
        FONT NEW "System", 9, 0, 1, 1, 0 TO hFont&
        CONTROL SET FONT hForm1&,  %FORM1_TEXT1, hFont&
        DIALOG SHOW MODELESS hForm1& , CALL Form1_DLGPROC
    END SUB
    '
    ' *************************************************************
    '                             Dialog Callback Procedure
    '                             for Form Form1
    '                             uses Global Handle - hForm1&
    ' *************************************************************
    '
    CALLBACK FUNCTION Form1_DLGPROC
        SELECT CASE CBMSG
            CASE ELSE
        END SELECT
    END FUNCTION
    '
    ' *************************************************************
    '   Application Callback Functions (or Subs) for Controls (#4)
    ' *************************************************************
    CALLBACK FUNCTION CBF_FORM1_TEXT1
         SELECT CASE CB.CTLMSG
              CASE %EN_CHANGE
         END SELECT
    END FUNCTION
    CALLBACK FUNCTION CBF_FORM1_LV1
         IF CB.MSG=%WM_NOTIFY THEN
              SELECT CASE CB.NMCODE
                   CASE -12,-150, -121 ' %NM_CUSTOMDRAW, %LVN_GETDISPINFO, %LVN_HOTTRACK
                   CASE ELSE
                        LOCAL T$, E$, D$
                        SELECT CASE CB.NMCODE
                             CASE %LVN_ITEMCHANGING
                                  D$="%LVN_ITEMCHANGING"
                             CASE %LVN_ITEMCHANGED
                                  D$="%LVN_ITEMCHANGED"
                             CASE %LVN_INSERTITEM
                                  D$="%LVN_INSERTITEM"
                             CASE %LVN_DELETEITEM
                                  D$="%LVN_DELETEITEM"
                             CASE %LVN_DELETEALLITEMS
                                  D$="%LVN_DELETEALLITEMS"
                             CASE %LVN_BEGINLABELEDIT
                                  D$="%LVN_BEGINLABELEDIT"
                             CASE %LVN_ENDLABELEDIT
                                  D$="%LVN_ENDLABELEDIT"
                             CASE %LVN_COLUMNCLICK
                                  D$="%LVN_COLUMNCLICK"
                             CASE %LVN_BEGINDRAG
                                  D$="%LVN_BEGINDRAG"
                             CASE %LVN_BEGINRDRAG
                                  D$="%LVN_BEGINRDRAG"
                             CASE %LVN_ODCACHEHINT
                                  D$="%LVN_ODCACHEHINT"
                             CASE %LVN_ODFINDITEM
                                  D$="%LVN_ODFINDITEM"
                             CASE %LVN_ITEMACTIVATE
                                  D$="%LVN_ITEMACTIVATE"
                             CASE %LVN_ODSTATECHANGED
                                  D$="%LVN_ODSTATECHANGED"
                             CASE %LVN_HOTTRACK
                                  D$="%LVN_HOTTRACK"
                             CASE %LVN_GETDISPINFO
                                  D$="%LVN_GETDISPINFO"
                             CASE %LVN_SETDISPINFO
                                  D$="%LVN_SETDISPINFO"
                             CASE %LVN_KEYDOWN
                                  D$="%LVN_KEYDOWN"
                             CASE %LVN_MARQUEEBEGIN
                                  D$="%LVN_MARQUEEBEGIN"
                             CASE %LVN_GETINFOTIP
                                  D$="%LVN_GETINFOTIP"
                             CASE %LVN_BEGINSCROLL
                                  D$="%LVN_BEGINSCROLL"
                             CASE %LVN_ENDSCROLL
                                  D$="%LVN_ENDSCROLL"
                             CASE %NM_OUTOFMEMORY
                                  D$="%NM_OUTOFMEMORY"
                             CASE %NM_CLICK
                                  D$="%NM_CLICK"
                             CASE %NM_DBLCLK
                                  D$="%NM_DBLCLK"
                             CASE %NM_RETURN
                                  D$="%NM_RETURN"
                             CASE %NM_RCLICK
                                  D$="%NM_RCLICK"
                             CASE %NM_RDBLCLK
                                  D$="%NM_RDBLCLK"
                             CASE %NM_SETFOCUS
                                  D$="%NM_SETFOCUS"
                             CASE %NM_KILLFOCUS
                                  D$="%NM_KILLFOCUS"
                             CASE %NM_CUSTOMDRAW
                                  D$="%NM_CUSTOMDRAW"
                             CASE %NM_HOVER
                                  D$="%NM_HOVER"
                             CASE %NM_NCHITTEST
                                  D$="%NM_NCHITTEST"
                             CASE %NM_KEYDOWN
                                  D$="%NM_KEYDOWN"
                             CASE %NM_RELEASEDCAPTURE
                                  D$="%NM_RELEASEDCAPTURE"
                             CASE %NM_SETCURSOR
                                  D$="%NM_SETCURSOR"
                             CASE %NM_CHAR
                                  D$="%NM_CHAR"
                             CASE %NM_TOOLTIPSCREATED
                                  D$="%NM_TOOLTIPSCREATED"
                             CASE %NM_LDOWN
                                  D$="%NM_LDOWN"
                             CASE %NM_RDOWN
                                  D$="%NM_RDOWN"
                             CASE %NM_THEMECHANGED
                                  D$="%NM_THEMECHANGED"
                             CASE ELSE
                                  D$="UnKnown"
                        END SELECT
                        T$=" "+LEFT$(D$+STRING$(20," "),20)+"   "+RIGHT$("     "+TRIM$(STR$(CB.NMCODE)),5)+$CRLF
                        CONTROL GET TEXT hForm1&,  %FORM1_TEXT1 TO E$
                        IF LEN(E$)>32000 THEN E$=""
                        E$=E$+T$
                        CONTROL SET TEXT hForm1&,  %FORM1_TEXT1, E$
                        LOCAL LN&
                        CONTROL SEND hForm1&,  %FORM1_TEXT1, %EM_GETLINECOUNT,0,0 TO LN&
                        CONTROL SEND hForm1&,  %FORM1_TEXT1, %EM_LINESCROLL, 0, LN&
              END SELECT
         END IF
    END FUNCTION
    A zip file is attached with both the compiled program and the source code.
    Attached Files
    Chris Boss
    Computer Workshop
    Developer of "EZGUI"
    http://cwsof.com
    http://twitter.com/EZGUIProGuy

  • #2
    Modification for PB 9.01

    The new update of PB 9.01 has made a change in one DDT command syntax that affects this program.

    On line 53 Change:

    LISTVIEW SET STYLE hForm1&, %FORM1_LV1, LVExStyle&

    to

    LISTVIEW SET STYLEXX hForm1&, %FORM1_LV1, LVExStyle&

    This makes sense, since the command is setting the Listview extended style (not the same was extended window style) and not a window style.

    Make this one change and it will compile fine on the new PB 9.01 update.

    I am attaching a screenshot also.
    Attached Files
    Chris Boss
    Computer Workshop
    Developer of "EZGUI"
    http://cwsof.com
    http://twitter.com/EZGUIProGuy

    Comment

    Working...
    X