Autoincrement Initial Number Selection

... Type content here!


#compile exe

#dim all

%UNICODE = 1

%test_dialog = -1

#if %test_dialog

#resource icon, 101, "./bBaseW32.ico"

#resource icon, 103, "./../Question48.ico"

#include once "Win32API.inc"

#include "./bBaseW_Text_IDs.inc"



global gpGetLText, gpGetFieldTypeList, ghFixedFont as dword



function pbmain () as long

  local hLangText, hStdFont as dword

    local init as quad

  import addr "GetCtlText","xBaseW_EN.dll" to gpGetLText, hLangText

  import addr "GetFieldTypeList", "xBaseW_EN.dll" to gpGetFieldTypeList

  dialog default font "Microsoft Sans Serif", 12, 0, 1

  font new "Lucida Console", 12, 0, 1  to ghFixedFont

  AutoIncInit(0, init)

  ? dec$(init)

  import close hLangText

end function

#endif

'=========================================================================

declare function GetLText (byval W_ID as long) as wstring

declare sub GetFieldTypeList(byref List() as wstring)

%dym_pQd = %wm_user + 500

%ID_AutoIncInitLbl = 1001

%ID_ExitBtn = 1002

%ID_AcceptBtn = 1003

%ID_AbandonBtn = 1000

'CB active

%ID_AutoIncInitLbl2 = 1004

%ID_AutoIncInitTxtBx = 1005

%ID_AutoIncInitLbl1  = 1006

callback function AtoIncInitDlgCB() as long

  local TmpStr, TmpStr2 as wstring

  local TmpLng as long

  static pQd as quad pointer

  if cb.msg =  %wm_command then

    select case as long cb.ctl

      case %ID_ExitBtn

        dialog end cb.hndl

      case %ID_AcceptBtn

        control get text cb.hndl, %ID_AutoIncInitTxtBx to TmpStr

        TmpLng = verify(TmpStr, "-0123456789"$$)

        if TmpLng then

          call dword gpGetLText using GetLText(%BadCharMBmsg) to TmpStr

          call dword gpGetLText using GetLText(%ErrorMBTtl) to TmpStr2

          beep

          TmpStr += dec$(TmpLng, 0, 1, 0) + "."

          msgbox TmpStr, %mb_ok or %mb_iconerror or %mb_taskmodal, TmpStr2

          exit function

        end if

        control get text cb.hndl, %ID_AutoIncInitTxtBx to TmpStr

        @pQd = val(TmpStr)

        dialog end cb.hndl

        'set quad

      case %ID_AbandonBtn

        dialog end cb.hndl

    end select

  elseif cb.msg = %dym_pQd  then ' once at show of this dialog

    pQd = cb.wparam              ' is pointer to result quad

  end if

end function

'-----------------------------------------------------------------------------

'Get Auto-Increment Initial (starting) number

function AutoIncInit(byval hParent as dword, _

                     byref AutoIncInitVal as quad) as long

  local hAutoIncInitDlg as dword

  local CtlText as wstring

  local Parent_X, Parent_Y as long

  '

  dialog get loc hParent to Parent_X, Parent_Y

  call dword gpGetLText using GetLText(%AutoIncInitTtl) to CtlText

  dialog new hParent, CtlText, Parent_X + 10, Parent_Y + 10, 160, 124 _

                                                              to hAutoIncInitDlg

  ' - instruction label  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

  call dword gpGetLText using GetLText(%AutoIncInitLbl) to CtlText

  control add label, hAutoIncInitDlg, %ID_AutoIncInitLbl, CtlText, 5, 5, 150, 58

  ' - number characters only label   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

  call dword gpGetLText using GetLText(%AutoIncInitLbl1) to CtlText

  control add label, hAutoIncInitDlg, %ID_AutoIncInitLbl1, CtlText, 5, 63, 150, 10

  ' - label for nunber textbox -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

  call dword gpGetLText using GetLText(%AutoIncInitLbl2) to CtlText

  control add label, hAutoIncInitDlg, %ID_AutoIncInitLbl2, CtlText, 5, 78, 100, 10

  ' - number textbox  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

  control add textbox, hAutoIncInitDlg, %ID_AutoIncInitTxtBx, "1", 5 ,88, 85, 11, _

     %es_autohscroll or %es_right or %ws_tabstop or %es_multiline, _

     %ws_ex_clientedge or %ws_ex_left

  ' - accept button   -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

  call dword gpGetLText using GetLText(%AcceptBtnTop) to CtlText

  control add button, hAutoIncInitDlg, %ID_AcceptBtn, CtlText, 11 ,104, 60, 15

  control set focus hAutoIncInitDlg, %ID_AcceptBtn

  ' - abandon button  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

  call dword gpGetLText using GetLText(%AbandonBtnTop) to CtlText

  control add button, hAutoIncInitDlg, %ID_AbandonBtn, CtlText, 92, 104, 58, 11

  ' - pointer for result to callback and show the dialog   -  -  -  -  -  -  -  -  -  -

  dialog post hAutoIncInitDlg,%dym_pQd, varptr(AutoIncInitVal), 0

  dialog show modal hAutoIncInitDlg call AtoIncInitDlgCB

end function



'


Created on August 29, 2023