Announcement

Collapse
No announcement yet.

Question/Help

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

  • Question/Help

    Question: Does PBEDIT accept command-line parameters? If so, what is the syntax?

    Help:

    The following code is a pseudo-tab control. It works pretty well except that on the first pass the "View Code" tab shows the "Title" listbox instead of the code textbox. After that it seems to work fine. I've tried a variety of different code in the callback but I can't get it to work properly. Any suggestions would be appreciated.

    Code:
    #COMPILE EXE
    DEFLNG A - Z
    
    #INCLUDE "WIN32API.INC"
    #INCLUDE "PBForms.INC"
    #INCLUDE "COMMCTRL.INC"
    #INCLUDE "Comdlg32.inc"
    
    %IDD_DIALOG1        =  101
    %IDD_DIALOG2        =  102
    %IDD_DIALOG3        =  103
    %IDD_DIALOG4        =  104
    %IDC_CatLbl         = 1000
    %IDC_SubjectLbl     = 1001
    %IDC_TitleLbl       = 1002
    %IDC_ViewCodeLbl    = 1003
    %IDC_ExtractCodeLbl = 1004
    %IDC_AddCodeLbl     = 1005
    %IDC_SearchLbl      = 1006
    
    %IDC_CatLstBx       = 2000
    %IDC_SubjectLstBx   = 2001
    %IDC_TitleLstBx     = 2002
    
    %IDC_ViewCodeTxtbx  = 3000
    
    %WM_DLG_MESS           = %WM_USER + 500
    
    TYPE DialogStruct
      Hndl    AS DWORD
      Order   AS BYTE
      Visable AS BYTE
    END TYPE
    
    TYPE LabelStruct
      ID      AS DWORD
      Clicked AS BYTE
    END TYPE
    
    GLOBAL tDlg() AS DialogStruct
    GLOBAL tLbl() AS LabelStruct
    
    DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
    DECLARE CALLBACK FUNCTION ShowDIALOG2Proc()
    DECLARE CALLBACK FUNCTION ShowDIALOG3Proc()
    DECLARE CALLBACK FUNCTION ShowDIALOG4Proc()
    DECLARE CALLBACK FUNCTION ShowDialog5proc()
    
    DECLARE FUNCTION SampleListBox(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, BYVAL _
      lCount AS LONG) AS LONG
    DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
    DECLARE FUNCTION ShowDIALOG2(BYVAL hParent AS DWORD) AS LONG
    DECLARE FUNCTION ShowDIALOG3(BYVAL hParent AS DWORD) AS LONG
    DECLARE FUNCTION ShowDIALOG4(BYVAL hParent AS DWORD) AS LONG
    DECLARE FUNCTION ShowDialog5(BYVAL hParent AS DWORD) AS LONG
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    FUNCTION PBMAIN()
    
    DIM tDlg(1 TO 5)
    DIM tLbl(1 TO 6)
    
    FOR I = 0 TO 6
      tLbl(I + 1).ID = %IDC_CatLbl + I
    NEXT I
    
    PBFormsInitComCtls (%ICC_WIN95_CLASSES OR %ICC_DATE_CLASSES OR %ICC_INTERNET_CLASSES)
    showdialog5(0)
    
    'sleep 10000
    ShowDIALOG1 %HWND_DESKTOP
    
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    CALLBACK FUNCTION ShowDIALOG1Proc()
    
    LOCAL DlgMes    AS LONG
    LOCAL CtlMes    AS LONG
    
    LOCAL DlgHnd  AS DWORD
    LOCAL CtlHnd  AS DWORD
    
    LOCAL DlgShow   AS LONG
    LOCAL DlgHide   AS LONG
    
    STATIC LastClick  AS LONG
    STATIC Ubnd       AS LONG
    
    CltMes = CBCTLMSG
    DlgHnd = CBHNDL
    CtlHnd = CBCTL
    
    SELECT CASE AS LONG CBMSG
      CASE %WM_INITDIALOG
        ' Initialization handler
        Vsx = GetSystemMetrics(%SM_CXVSCROLL)
        DIALOG PIXELS DlgHnd, Vsx, DlgXs TO UNITS Vsx, DlgXs
        DIALOG GET CLIENT DlgHnd TO DlgXs, DlgYs
        CONTROL GET SIZE DlgHnd, tLbl(1).ID TO X, Y
        DlgYs = DlgYs - Y
        DIALOG SET CLIENT tDlg(2).Hndl, DlgXs, DlgYs
        DIALOG SET LOC tDlg(2).Hndl, 0, Y
        CONTROL SET CLIENT tDlg(2).Hndl, %IDC_CatLstBx, DlgXs - Vsx, DlgYs
        DIALOG SET CLIENT tDlg(3).Hndl, DlgXs, DlgYs
        DIALOG SET LOC tDlg(3).Hndl, 0, Y
        CONTROL SET CLIENT tDlg(3).Hndl, %IDC_SubjectLstBx, DlgXs - Vsx, DlgYs
        DIALOG SET CLIENT tDlg(4).Hndl, DlgXs, DlgYs
        DIALOG SET LOC tDlg(4).Hndl, 0, Y
        CONTROL SET CLIENT tDlg(4).Hndl, %IDC_TitleLstBx, DlgXs - Vsx, DlgYs
        DIALOG SET LOC tDlg(5).Hndl, 0, Y
        CONTROL SET CLIENT tDlg(5).Hndl, %IDC_ViewCodeTxtbx, DlgXs - Vsx, DlgYs
        DIALOG SHOW STATE tDlg(2).Hndl, %SW_SHOW
        tDlg(2).Visable = 1
        CONTROL SET FOCUS DlgHnd, tLbl(1).ID
        CONTROL SET COLOR DlgHnd, tLbl(1).ID, %WHITE, RGB(128, 200, 128)
    
        tLbl(1).Clicked = 1
        LastClick = %IDC_CatLbl
        Ubnd = UBOUND(tDlg)
        
        FOR I = 2 TO 7
          CONTROL SET COLOR DlgHnd, tLbl(I).ID, %BLACK, RGB(200, 128, 128)
        NEXT I
    
      CASE %WM_NCACTIVATE
        STATIC hWndSaveFocus AS DWORD
        IF ISFALSE CBWPARAM THEN
          ' Save control focus
          hWndSaveFocus = GetFocus()
        ELSEIF hWndSaveFocus THEN
          ' Restore control focus
          SetFocus(hWndSaveFocus)
          hWndSaveFocus = 0
        END IF
    
      CASE %WM_COMMAND
        ' Process control notifications
        SELECT CASE AS LONG CtlMes
          CASE %STN_CLICKED
            '
            SELECT CASE CtlHnd
              CASE %IDC_CatLbl
                IF LastClick = CtlHnd THEN EXIT SELECT
                CONTROL SET COLOR DlgHnd, CtlHnd, %WHITE, RGB(128, 200, 128)
                CONTROL SET COLOR DlgHnd, LastClick, %BLACK, RGB(200, 128, 128)
                CONTROL REDRAW DlgHnd, CtlHnd
                CONTROL REDRAW DlgHnd, LastClick
                IF LastClick > %IDC_ViewCodeLbl THEN
                  FOR I = 2 TO Ubnd
                    IF tDlg(I).Visable THEN
                      DlgHide = I
                      EXIT FOR
                    END IF
                  NEXT I
                ELSE
                  DlgHide = LastClick - %IDC_CatLbl + 2
                END IF
                DlgShow = CtlHnd - %IDC_CatLbl + 2
                DIALOG SHOW STATE tDlg(DlgHide).Hndl, %SW_HIDE
                DIALOG SHOW STATE tDlg(DlgShow).Hndl, %SW_SHOW
                tDlg(DlgHide).Visable = 0
                tDlg(DlgShow).Visable = 1
                LastClick = CtlHnd
              CASE %IDC_SubjectLbl
                IF LastClick = CtlHnd THEN EXIT SELECT
                CONTROL SET COLOR DlgHnd, CtlHnd, %WHITE, RGB(128, 200, 128)
                CONTROL SET COLOR DlgHnd, LastClick, %BLACK, RGB(200, 128, 128)
                CONTROL REDRAW DlgHnd, CtlHnd
                CONTROL REDRAW DlgHnd, LastClick
                IF LastClick > %IDC_ViewCodeLbl THEN
                  FOR I = 2 TO Ubnd
                    IF tDlg(I).Visable THEN
                      DlgHide = I
                      EXIT FOR
                    END IF
                  NEXT I
                ELSE
                  DlgHide = LastClick - %IDC_CatLbl + 2
                END IF
                DlgShow = CtlHnd - %IDC_CatLbl + 2
                DIALOG SHOW STATE tDlg(DlgHide).Hndl, %SW_HIDE
                DIALOG SHOW STATE tDlg(DlgShow).Hndl, %SW_SHOW
                tDlg(DlgHide).Visable = 0
                tDlg(DlgShow).Visable = 1
                LastClick = CtlHnd
              CASE %IDC_TitleLbl
                IF LastClick = CtlHnd THEN EXIT SELECT
                CONTROL SET COLOR DlgHnd, CtlHnd, %WHITE, RGB(128, 200, 128)
                CONTROL SET COLOR DlgHnd, LastClick, %BLACK, RGB(200, 128, 128)
                CONTROL REDRAW DlgHnd, CtlHnd
                CONTROL REDRAW DlgHnd, LastClick
                IF LastClick > %IDC_ViewCodeLbl THEN
                  FOR I = 2 TO Ubnd
                    IF tDlg(I).Visable THEN
                      DlgHide = I
                      EXIT FOR
                    END IF
                  NEXT I
                ELSE
                  DlgHide = LastClick - %IDC_CatLbl + 2
                END IF
                DlgShow = CtlHnd - %IDC_CatLbl + 2
                DIALOG SHOW STATE tDlg(DlgHide).Hndl, %SW_HIDE
                DIALOG SHOW STATE tDlg(DlgShow).Hndl, %SW_SHOW
                tDlg(DlgHide).Visable = 0
                tDlg(DlgShow).Visable = 1
                LastClick = CtlHnd
              CASE %IDC_ViewCodeLbl
                IF LastClick = CtlHnd THEN EXIT SELECT
                CONTROL SET COLOR DlgHnd, CtlHnd, %WHITE, RGB(128, 200, 128)
                CONTROL SET COLOR DlgHnd, LastClick, %BLACK, RGB(200, 128, 128)
                CONTROL REDRAW DlgHnd, CtlHnd
                CONTROL REDRAW DlgHnd, LastClick
                IF LastClick > %IDC_ViewCodeLbl THEN
                  FOR I = 2 TO Ubnd
                    IF tDlg(I).Visable THEN
                      DlgHide = I
                      EXIT FOR
                    END IF
                  NEXT I
                ELSE
                  DlgHide = LastClick - %IDC_CatLbl + 2
                END IF
                DlgShow = CtlHnd - %IDC_CatLbl + 2
                DIALOG SHOW STATE tDlg(DlgHide).Hndl, %SW_HIDE
                DIALOG SHOW STATE tDlg(DlgShow).Hndl, %SW_SHOW
                tDlg(DlgHide).Visable = 0
                tDlg(DlgShow).Visable = 1
                LastClick = CtlHnd
              CASE %IDC_ExtractCodeLbl
                IF LastClick = CtlHnd THEN EXIT SELECT
                CONTROL SET COLOR DlgHnd, CtlHnd, %WHITE, RGB(128, 200, 128)
                CONTROL SET COLOR DlgHnd, LastClick, %BLACK, RGB(200, 128, 128)
                CONTROL REDRAW DlgHnd, CtlHnd
                CONTROL REDRAW DlgHnd, LastClick
                LastClick = CtlHnd
              CASE %IDC_AddCodeLbl
                IF LastClick = CtlHnd THEN EXIT SELECT
                CONTROL SET COLOR DlgHnd, CtlHnd, %WHITE, RGB(128, 200, 128)
                CONTROL SET COLOR DlgHnd, LastClick, %BLACK, RGB(200, 128, 128)
                CONTROL REDRAW DlgHnd, CtlHnd
                CONTROL REDRAW DlgHnd, LastClick
                LastClick = CtlHnd
              CASE %IDC_SearchLbl
                IF LastClick = CtlHnd THEN EXIT SELECT
                CONTROL SET COLOR DlgHnd, CtlHnd, %WHITE, RGB(128, 200, 128)
                CONTROL SET COLOR DlgHnd, LastClick, %BLACK, RGB(200, 128, 128)
                CONTROL REDRAW DlgHnd, CtlHnd
                CONTROL REDRAW DlgHnd, LastClick
                LastClick = CtlHnd
            END SELECT
          FUNCTION = 1
        END SELECT
      CASE %WM_DLG_MESS
    
    
    END SELECT
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    CALLBACK FUNCTION ShowDIALOG2Proc()
    
    LOCAL DlgHnd AS DWORD
    
    DlgHnd = CBHNDL
    
    SELECT CASE AS LONG CBMSG
      CASE %WM_INITDIALOG
        ' Initialization handler
    
      CASE %WM_NCACTIVATE
        STATIC hWndSaveFocus AS DWORD
        IF ISFALSE CBWPARAM THEN
          ' Save control focus
          hWndSaveFocus = GetFocus()
        ELSEIF hWndSaveFocus THEN
          ' Restore control focus
          SetFocus(hWndSaveFocus)
          hWndSaveFocus = 0
        END IF
    
      CASE %WM_COMMAND
        ' Process control notifications
        SELECT CASE AS LONG CBCTL
          CASE %IDC_CatLstBx
    
        END SELECT
    END SELECT
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    CALLBACK FUNCTION ShowDIALOG3Proc()
    
      SELECT CASE AS LONG CBMSG
        CASE %WM_INITDIALOG
          ' Initialization handler
    
        CASE %WM_NCACTIVATE
          STATIC hWndSaveFocus AS DWORD
          IF ISFALSE CBWPARAM THEN
            ' Save control focus
            hWndSaveFocus = GetFocus()
          ELSEIF hWndSaveFocus THEN
            ' Restore control focus
            SetFocus(hWndSaveFocus)
            hWndSaveFocus = 0
          END IF
    
        CASE %WM_COMMAND
          ' Process control notifications
          SELECT CASE AS LONG CBCTL
            CASE %IDC_SubjectLstBx
    
          END SELECT
      END SELECT
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    CALLBACK FUNCTION ShowDIALOG4Proc()
    
      SELECT CASE AS LONG CBMSG
        CASE %WM_INITDIALOG
          ' Initialization handler
    
        CASE %WM_NCACTIVATE
          STATIC hWndSaveFocus AS DWORD
          IF ISFALSE CBWPARAM THEN
            ' Save control focus
            hWndSaveFocus = GetFocus()
          ELSEIF hWndSaveFocus THEN
            ' Restore control focus
            SetFocus(hWndSaveFocus)
            hWndSaveFocus = 0
          END IF
    
        CASE %WM_COMMAND
          ' Process control notifications
          SELECT CASE AS LONG CBCTL
    
          END SELECT
      END SELECT
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    FUNCTION SampleListBox(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, BYVAL lCount _
      AS LONG) AS LONG
      LOCAL i AS LONG
    
      FOR i = 1 TO lCount
        LISTBOX ADD hDlg, lID, USING$("Test Item #", i)
      NEXT i
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
    
    LOCAL lRslt AS LONG
    
    LOCAL hDlg  AS DWORD
    DIALOG NEW hParent, ".BAS Code Wrapper", 61, 63, 350, 228, %WS_POPUP OR _
      %WS_BORDER OR %WS_DLGFRAME OR %WS_THICKFRAME OR %WS_CAPTION OR _
      %WS_SYSMENU OR %WS_MINIMIZEBOX OR %WS_MAXIMIZEBOX OR %WS_CLIPSIBLINGS OR _
      %WS_CLIPCHILDREN OR %WS_VISIBLE OR %DS_SYSMODAL OR %DS_MODALFRAME OR _
      %DS_SETFOREGROUND OR %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, _
      %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
      %WS_EX_RIGHTSCROLLBAR, TO hDlg
    CONTROL ADD LABEL, hDlg, %IDC_CatLbl, "Category", 0, 0, 50, 15, %WS_CHILD _
      OR %WS_VISIBLE OR %WS_TABSTOP OR %SS_CENTER OR %SS_NOTIFY, _
      %WS_EX_STATICEDGE OR %WS_EX_DLGMODALFRAME OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING
    CONTROL ADD LABEL, hDlg, %IDC_SubjectLbl, "Subject", 50, 0, 50, 15, _
      %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %SS_CENTER OR %SS_NOTIFY, _
      %WS_EX_STATICEDGE OR %WS_EX_DLGMODALFRAME OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING
    CONTROL ADD LABEL, hDlg, %IDC_TitleLbl, "Title", 100, 0, 50, 15, %WS_CHILD _
      OR %WS_VISIBLE OR %WS_TABSTOP OR %SS_CENTER OR %SS_NOTIFY, _
      %WS_EX_STATICEDGE OR %WS_EX_DLGMODALFRAME OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING
    CONTROL ADD LABEL, hDlg, %IDC_ViewCodeLbl, "View Code", 150, 0, 50, 15, _
      %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %SS_CENTER OR %SS_NOTIFY, _
      %WS_EX_STATICEDGE OR %WS_EX_DLGMODALFRAME OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING
    CONTROL ADD LABEL, hDlg, %IDC_ExtractCodeLbl, "Extract Code", 200, 0, 50, _
      15, %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %SS_CENTER OR %SS_NOTIFY, _
      %WS_EX_STATICEDGE OR %WS_EX_DLGMODALFRAME OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING
    CONTROL ADD LABEL, hDlg, %IDC_AddCodeLbl, "Add Code", 250, 0, 50, 15, _
      %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %SS_CENTER OR %SS_NOTIFY, _
      %WS_EX_STATICEDGE OR %WS_EX_DLGMODALFRAME OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING
    CONTROL ADD LABEL, hDlg, %IDC_SearchLbl, "Search", 300, 0, 50, 15, _
      %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %SS_CENTER OR %SS_NOTIFY, _
      %WS_EX_STATICEDGE OR %WS_EX_DLGMODALFRAME OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING
    
    tDlg(1).Hndl = hDlg
    tDlg(1).Order = 1
    tDlg(1).Visable = 1
    
    ShowDialog2(hDlg)
    ShowDialog3(hDlg)
    ShowDialog4(hDlg)
    ShowDialog5(hDlg)
    
    DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
    
    
    FUNCTION = lRslt
    
    END FUNCTION
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    FUNCTION ShowDIALOG2(BYVAL hParent AS DWORD) AS LONG
    
    LOCAL lRslt AS LONG
    
    LOCAL hDlg  AS DWORD
    
    DIALOG NEW hParent, "Categories", 65, 60, 380, 237, %WS_CHILD OR _
      %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_CONTROL OR %DS_3DLOOK OR _
      %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR _
      %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg
    CONTROL ADD LISTBOX, hDlg, %IDC_CatLstBx, , 0, 0, 380, 235, %WS_CHILD OR _
      %WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %LBS_NOTIFY OR _
      %LBS_HASSTRINGS, %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
      %WS_EX_RIGHTSCROLLBAR
    CONTROL SET COLOR    hDlg, %IDC_CatLstBx, %BLUE, -1
    
    tDlg(2).Hndl = hDlg
    tDlg(2).Order = 2
    tDlg(2).Visable = 0
    SampleListBox  hDlg, %IDC_CatLstBx, 30
    
    DIALOG SHOW STATE hDlg, %SW_HIDE
    
    DIALOG SHOW MODELESS hDlg, CALL ShowDIALOG2Proc TO lRslt
    
    
    FUNCTION = lRslt
    END FUNCTION
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    FUNCTION ShowDIALOG3(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG
    
    
    LOCAL hDlg  AS DWORD
    
    DIALOG NEW hParent, "Subject", 121, 114, 330, 172, %WS_CHILD OR _
      %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_CONTROL OR %DS_3DLOOK OR _
      %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
      %WS_EX_RIGHTSCROLLBAR, TO hDlg
    CONTROL ADD LISTBOX, hDlg, %IDC_SubjectLstBx, , 0, 0, 330, 170, %WS_CHILD OR _
      %WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %LBS_NOTIFY, %WS_EX_LEFT OR _
      %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
    
    SampleListBox  hDlg, %IDC_SubjectLstBx, 30
    
    tDlg(3).Hndl = hDlg
    tDlg(3).Order = 3
    tDlg(3).Visable = 0
    
    DIALOG SHOW STATE hDlg, %SW_HIDE
    DIALOG SHOW MODELESS hDlg, CALL ShowDIALOG3Proc TO lRslt
    
    
    FUNCTION = lRslt
    END FUNCTION
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    FUNCTION ShowDIALOG4(BYVAL hParent AS DWORD) AS LONG
    
    LOCAL lRslt  AS LONG
    LOCAL hDlg   AS DWORD
    
    DIALOG NEW hParent, "Title", 101, 70, 100, 100, %WS_CHILD OR _
      %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_CONTROL OR %DS_3DLOOK OR _
      %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
      %WS_EX_RIGHTSCROLLBAR, TO hDlg
    CONTROL ADD LISTBOX, hDlg, %IDC_TitleLstBx, , 0, 0, 100, 100, %WS_CHILD OR _
      %WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %LBS_NOTIFY, %WS_EX_LEFT OR _
      %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
    CONTROL SET COLOR    hDlg, %IDC_TitleLstBx, RGB(0, 0, 128), %WHITE
    
    SampleListBox  hDlg, %IDC_TitleLstBx, 30
    tDlg(4).Hndl = hDlg
    tDlg(4).Order = 4
    tDlg(4).Visable = 0
    
    DIALOG SHOW MODELESS hDlg, CALL ShowDIALOG4Proc TO lRslt
    
    FUNCTION = lRslt
    END FUNCTION
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    SUB Get_FileName(BYVAL Flag AS BYTE, Fname$)
    
    STATIC Last_Name      AS STRING  'save last palette name
    STATIC Last_Dir       AS STRING  'save last palette directory
    STATIC Current_Dir    AS STRING      'save program directory
    STATIC Current_Drv    AS STRING * 1
    
    
    LOCAL Default_Extn   AS STRING  'default extention for saving files
    LOCAL Caption        AS STRING  'dialog caption
    LOCAL FileFilter     AS STRING  'filter of list box in file dialog
    LOCAL FileStyle      AS LONG    'flags for getting files
    
    LOCAL FilePicked      AS LONG
    
    IF Current_Dir$  = "" THEN
      Current_Dir$  = CURDIR$
      Current_Drv$  = CURDIR$
    END IF
    
    SELECT CASE Flag
      CASE 1
        Caption$ = "Add File"
        FileFilter$ = "Code Files (*.BAS, *.INC, *.BI, *.TXT, *.RC)" + _
                                  "|*.BAS;*.INC;*.BI;*.RC|All Files (*.*)|*.*"
        FileStyle = %OFN_FILEMUSTEXIST OR %OFN_HIDEREADONLY OR %OFN_LONGNAMES OR %OFN_PATHMUSTEXIST
        Default_Extn$ = "BAS"
        FilePicked = OpenFileDialog (FilePicked, _    ' parent window
                                    Caption$, _       ' caption
                                    Last_Name$, _ ' filename
                                    Last_Dir$, _  ' start directory
                                    FileFilter$, _    ' filename filter
                                    Default_Extn$, _  ' default extension
                                    FileStyle)        ' File Flags
    '    IF FilePicked THEN CALL Load_File(Flag, Last_Pal_Name$)
         IF FilePicked THEN
           FOR I = 2 TO 5
             IF tDlg(I).Visable THEN
               DIALOG SHOW STATE tDlg(I).Hndl, %SW_HIDE
               DIALOG SHOW STATE tDlg(5).Hndl, %SW_SHOW
               EXIT FOR
             END IF
           NEXT I
         END IF
      CASE 2
        Caption$ = "Extract File to ?"
        FileFilter$ = "Code Files (*.BAS, *.INC, *.BI, *.TXT, *.RC)" + _
                                  "|*.BAS;*.INC;*.BI;*.RC|All Files (*.*)|*.*"
        FileStyle = %OFN_HIDEREADONLY OR %OFN_LONGNAMES
        Default_Extn$ = "BAS"
        FilePicked = SaveFileDialog (FilePicked, _    ' parent window
                                    Caption$, _       ' caption
                                    Last_Name$, _ ' filename
                                    Last_Dir$, _  ' start directory
                                    FileFilter$, _    ' filename filter
                                    Default_Extn$, _  ' default extension
                                    FileStyle)        ' File Flags
    
    'when using the default_extn parameter in the call to the savefiledialog,
    'the windows file dialog will append the default extension to the file
    'name even if the user has supplied an extension.  Therefore, the below
    'code removes the appended default extension if there is more than one
    
        IF FilePicked THEN
          IF Trim_Name(Last_Pal_Name$, Default_Extn$) THEN EXIT IF
    '      CALL Save_File(Flag, Last_Pal_Name$)
        END IF
    END SELECT
    
    FilePicked = INSTR(-1, Last_Name$, ANY "/\")
    IF FilePicked THEN
      Last_Name$ = MID$(Last_Name$, FilePicked +1)
    END IF
    
    END SUB
    
    '-------------------------------------------------------------------
    '-------------------------------------------------------------------
    
    FUNCTION Trim_Name(Fname AS STRING, Default_Extn AS STRING) AS LONG
    
    LOCAL Nlen      AS LONG
    LOCAL FileStyle AS LONG
    
    'when using the default_extn parameter in the call to the savefiledialog,
    'the windows file dialog will append the default extension to the file
    'name even if the user has supplied an extension.  Therefore, the below
    'code removes the appended default extension if there is more than one
    
          IF PARSECOUNT(FName$, ".") > 2 THEN
            Default_Extn$ = "." + Default_Extn$
            FName$ = REMOVE$(FName$, Default_Extn$)
          END IF
    
          Nlen = LEN(DIR$(FName$)) 'check for existing file
    
          IF Nlen THEN              'if the file exists ask for overwrite instructions
            FileStyle = %MB_YESNO OR %MB_TASKMODAL OR %MB_DEFBUTTON1
            Nlen = MSGBOX("Overwright " + FName$ + "?", FileStyle, "File Exists")
            IF (Nlen AND %IDNO) = %IDNO THEN Nlen = 1 ELSE Nlen = 0
          END IF
    
    FUNCTION = Nlen
    END FUNCTION
    
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    
    CALLBACK FUNCTION ShowDIALOG5Proc()
    
      SELECT CASE AS LONG CBMSG
        CASE %WM_INITDIALOG
          ' Initialization handler
    
        CASE %WM_NCACTIVATE
          STATIC hWndSaveFocus AS DWORD
          IF ISFALSE CBWPARAM THEN
            ' Save control focus
            hWndSaveFocus = GetFocus()
          ELSEIF hWndSaveFocus THEN
            ' Restore control focus
            SetFocus(hWndSaveFocus)
            hWndSaveFocus = 0
          END IF
    
        CASE %WM_COMMAND
          ' Process control notifications
          SELECT CASE AS LONG CBCTL
            CASE %IDC_ViewCodeTxtbx
    
          END SELECT
      END SELECT
    END FUNCTION
    
    
    '--------------------------------------------------------------------------------
    '--------------------------------------------------------------------------------
    
    FUNCTION ShowDIALOG5(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG
    LOCAL hDlg  AS DWORD
    
    DIALOG NEW hParent, "View Code", 101, 70, 391, 218, %WS_CHILD OR _
      %WS_CLIPSIBLINGS OR %WS_CLIPCHILDREN OR %WS_VISIBLE OR %DS_CONTROL OR _
      %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_LEFT OR _
      %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg
    CONTROL ADD TEXTBOX, hDlg, %IDC_ViewCodeTxtbx, "View Code", 0, 0, 390, 215, _
      %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %ES_LEFT OR _
      %ES_MULTILINE OR %ES_AUTOVSCROLL, %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
      %WS_EX_RIGHTSCROLLBAR
    
    tDlg(5).Hndl = hDlg
    tDlg(5).Visable = 0
    tDlg(5).Order = 5
    
    DIALOG SHOW STATE hDlg, %SW_HIDE
    DIALOG SHOW MODELESS hDlg, CALL ShowDIALOG5Proc TO lRslt
    
    FUNCTION = lRslt
    END FUNCTION
    
    '-------------------------------------------------------------------
    '-------------------------------------------------------------------
    
    FUNCTION Check_Click(BYVAL LbL AS DWORD, BYVAL LastClick AS LONG, _
                         DlgHide AS BYTE, DlgShow AS BYTE, NewClick AS BYTE) AS LONG
    
    LOCAL Ubd AS LONG
    '
    IF (LastClick + %IDC_CatLbl - 1) = Lbl THEN
      Check_Click = 1
      EXIT FUNCTION
    END IF
    
    Ubd = UBOUND(tDlg)
    
    IF (LastClick + %IDC_CatLbl - 1) > %IDC_ViewCodeLbl THEN
      FOR J = 2 TO Ubd
        IF tDlg(J).Visable = 1 THEN
          DlgHide = J
          EXIT FOR
        END IF
      NEXT J
      DlgShow = Lbl - %IDC_CatLbl + 2
    
    ELSE
      DlgHide = LastClick + 1
      DlgShow = Lbl - %IDC_CatLbl + 2
      IF DlgHide = DlgShow THEN
        Check_Click = 1
        EXIT FUNCTION
      END IF
    END IF
    
    Check_Click = 0
    END FUNCTION
    Walt Decker

  • #2
    These topics in Help give command-line information. Was your question more than what these offer?

    The PB/Win Integrated Development Environment
    Command Line Dialog Box
    Command$

    The code you posted was a different problem, yes? I couldn't find command$ anywhere in it.

    Comment


    • #3
      To answer your first question. The PBedit command line parameters can be found in the help under "User's Guide/PowerBasic Integrated Development Environment/PowerBasic Integrated Development Environment" Here is the example listed:
      PBEDIT.EXE [/G:row,col:] [/P:MainFile] [Filename]

      /G starts cursor at a specified position and /P loads the project file(s).


      As for your second question, I havent had time to look over the code yet.
      "I haven't lost my mind... its backed up on tape... I think??" :D

      Comment


      • #4
        Not a DDT guy, but

        Although I don't do DDT other than for quick demos,

        You need to dimension to avoid an overflow:
        DIM tLbl(1 TO 6)
        should be
        DIM tLbl(1 TO 7)

        The problem about the "no show" seems to be tied to the text dialog not being properly initialized somehow, because if you replace the DIALOG SHOW STATE in:
        CALLBACK FUNCTION ShowDIALOG1Proc()
        at
        SELECT CASE AS LONG CBMSG
        CASE %WM_COMMAND
        ...
        SELECT CASE AS LONG CtlMes
        CASE %STN_CLICKED
        ...
        SELECT CASE CtlHnd
        ...
        CASE %IDC_ViewCodeLbl
        from:
        DIALOG SHOW STATE tDlg(DlgShow).Hndl, %SW_SHOW
        to
        DIALOG SHOW STATE tDlg(DlgShow).Hndl, %SW_SHOWMAXIMIZED
        DIALOG SHOW STATE tDlg(DlgShow).Hndl, %SW_SHOWNORMAL

        then it works for me.
        regards,
        :) IRC :)

        Comment


        • #5
          William:

          Thanks for the info concerning the PBEDIT.EXE command-line parameters.

          Ian:

          Thanks for the catch on the DIM. I missed that although I didn't get a GPF. As for using maximized and minimized, that shouldn't be necessary. Tab controls don't work that way and neither should this.

          I'm still working on it. I've found that in some cases I need to force a dialog redraw, but not always (although redrawing always really doesn't hurt.)
          Walt Decker

          Comment


          • #6
            Well, I have it working the way it's supposed to. Just made sure that the parent was properly initialized before adding the children.
            Walt Decker

            Comment

            Working...
            X