This popup makes "add / edit" dialog less "messy". File
./bBaseW_Text_IDs.inc, and the language DLL change daily (I hope). If somebody
wants to run this code's demo, ask for the files.
Code section by
section description later.
%test_dialog = -1 'change to 0 to use this file as a #INCLUDE #if %test_dialog ' #compile exe #dim all %UNICODE = 1 #resource icon, 101, "./../IconStor/bBaseW32.ico" #include once "Win32API.inc" #include "./bBaseW_Text_IDs.inc" global gpGetLText as dword function pbmain () as long local hLangText, hStdFont as dword local TName as wstringz * 32 import addr "GetCtlText","xBaseW_EN.dll" to gpGetLText, hLangText dialog default font "Microsoft Sans Serif", 12, 0, 1 TName = "Dick" ' TableFieldName 0, TName, %TblNmDlgTtl '%TblNmDlgTtl %FldNmDlgTtl set caption ? Tname ' %TblNmDlgTtl %FldNmDlgTtl import close hLangText end function declare function GetLText (byval W_ID as long) as wstring #endif '============================================================================ === %dym_pStr = %wm_user + 501 %ID_ExitBtn = 1000 %ID_NameTxtBx = 1001 %ID_AcceptBtn = 1002 %ID_AbandonBtn = 1003 %ID_TblFldNmLbl = 1020 callback function TblFldNmDlgCB() as long static pStr as wstringz pointer * 32 local TmpStr, TmpStr2 as wstring local TmpLg as long if cb.msg = %wm_command then if (cb.ctl = %ID_AcceptBtn) and (cb.ctlmsg = %bn_clicked) then control get text cb.hndl, %ID_NameTxtBx to TmpStr TmpLg = len(TmpStr) if TmpLg > 31 then call dword gpGetLText using GetLText(%NmTooLgMBmsg) to TmpStr TmpStr += dec$(TmpLg - 31) call dword gpGetLText using GetLText(%ErrorMBTtl) to TmpStr2 beep msgbox TmpStr, %mb_ok or %mb_iconerror or %mb_taskmodal, TmpStr2 else @pStr = TmpStr dialog end cb.hndl end if elseif (cb.ctl = %ID_AbandonBtn) and (cb.ctlmsg = %bn_clicked) then dialog end cb.hndl end if elseif cb.msg = %dym_pStr then pStr = cb.wparam end if end function '------------------------------------------------------------------------------- function TableFieldName(byval hParent as dword, _ byref wNamez as wstringz * 32, _ byval TextIsFor as long) as long local hTblFldNmDlg as dword local CtlText as wstring local Parent_X, Parent_Y as long ' - dialog - - - - - - - - - - - - - - - - - - - - - - - dialog get loc hParent to Parent_X, Parent_Y call dword gpGetLText using GetLText(TextIsFor) to CtlText dialog new hParent, CtlText, Parent_X + 10, Parent_Y + 10, 160, 52, _ to hTblFldNmDlg ' - instruction label - - - - - - - - - - - - - - - - - - - call dword gpGetLText using GetLText(%TblFldNmLbl) to CtlText control add label, hTblFldNmDlg, %ID_TblFldNmLbl, CtlText, 5, 5, 150, 10 ' - name textbox - - - - - - - - - - - - - - - - - - - - - CtlText = wNamez Parent_X = len(CtlText) control add textbox, hTblFldNmDlg, %ID_NameTxtBx, CtlText, 5, 15, 150, 12 ' - accept button - - - - - - - - - - - - - - - - - - - - call dword gpGetLText using GetLText(%AcceptBtnTop) to CtlText control add button, hTblFldNmDlg, %ID_AcceptBtn, CtlText, 11 ,32, 60, 15 if Parent_X then control set focus hTblFldNmDlg, %ID_AcceptBtn else control set focus hTblFldNmDlg, %ID_NameTxtBx end if ' - abandon button - - - - - - - - - - - - - - - - - - - - call dword gpGetLText using GetLText(%AbandonBtnTop) to CtlText control add button, hTblFldNmDlg, %ID_AbandonBtn, CtlText, 92, 32, 58, 11 ' - pointer for result to callback and show the dialog - - - - - - - - - - dialog post hTblFldNmDlg, %dym_pStr, varptr(wNamez), 0 dialog show modal hTblFldNmDlg call TblFldNmDlgCB end function
Created on August 31, 2023