⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter.inc

📁 一个背单词源码
💻 INC
字号:

FilterInitComBo					proto	hWin:dword

.CONST
IDC_CBO_LENCOMPARE				equ 1006
IDC_CHK_SAVEAS					equ 1018
IDC_EDT_EG_KW					equ 1010
IDC_EDT_EXPLAIN_KW				equ 1008
IDC_EDT_LEGEND_KW				equ 1011
IDC_EDT_NEWTABLENAME			equ 1019
IDC_EDT_PHRASE_KW				equ 1009
IDC_EDT_SQLINPUT				equ 1016
IDC_EDT_WORDINITIAL				equ 1007
IDC_EDT_WORDLEN					equ 1014
IDC_FILTER_BTN_EXIT				equ 1022
IDC_FILTER_BTN_OK				equ 1021
IDC_GRP1						equ 1012
IDC_GRP2						equ 1015
IDC_GRP3						equ 1017
IDD_DLG_FILTER					equ 3000

.data?
;全局变量
hEditNewTable						dd	?

.code

FilterInitAll	proc	hWin:dword
	
	invoke FilterInitComBo,hWin	
	invoke GetDlgItem,hWin,IDC_EDT_NEWTABLENAME
	mov hEditNewTable,eax
	invoke ShowWindow,hEditNewTable,SW_HIDE
	ret

FilterInitAll endp

FilterInitComBo	proc	hWin:dword
	LOCAL thd:dword
	;初始化组合框
	;得到组合框句柄
	
		
	invoke GetDlgItem,hWin,IDC_CBO_LENCOMPARE
	mov thd,eax
	;追加数据
	invoke SendMessage,thd,CB_ADDSTRING,0,SADD("=")
	invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!<")
	invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!<=")
	invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!>")
	invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!>=")
	ret
FilterInitComBo	endp

FilterGetFilterStrings	proc hWin
	;作用:根据当前选择,生成完整的SQL语句
	;参数:
	;返回值:
	;
	;开发日期:
	;备注:
	LOCAL ltbuf[4096]:byte
	LOCAL tbuf[256]:byte
	LOCAL	tbuf_endstring[8]:byte
	

	;单词
	
	invoke lstrcpy,addr ltbuf,SADD(" where true ")
	invoke lstrcpy,addr tbuf_endstring,SADD("%'") 
		
				
	;例句
	invoke GetDlgItemText,hWin,IDC_EDT_EG_KW,addr tbuf,255
	.if eax
		invoke lstrcat,addr ltbuf,SADD(" and 例句 LIKE '%")
		invoke lstrcat,addr ltbuf,addr tbuf
		invoke lstrcat,addr ltbuf,addr tbuf_endstring	
	.endif

	
	;解释
	invoke GetDlgItemText,hWin,IDC_EDT_EXPLAIN_KW,addr tbuf,255
	.if eax
		invoke lstrcat,addr ltbuf,SADD(" and 解释 LIKE '%")
		invoke lstrcat,addr ltbuf,addr tbuf
		invoke lstrcat,addr ltbuf,addr tbuf_endstring	
	.endif

	
	;联想
	invoke GetDlgItemText,hWin,IDC_EDT_LEGEND_KW,addr tbuf,255
	.if eax
		invoke lstrcat,addr ltbuf,SADD(" and 联想 LIKE '%")
		invoke lstrcat,addr ltbuf,addr tbuf
		invoke lstrcat,addr ltbuf,addr tbuf_endstring	
	.endif

	
	;词组
	invoke GetDlgItemText,hWin,IDC_EDT_PHRASE_KW,addr tbuf,255
	.if eax
		invoke lstrcat,addr ltbuf,SADD(" and 词组 LIKE '%")
		invoke lstrcat,addr ltbuf,addr tbuf
		invoke lstrcat,addr ltbuf,addr tbuf_endstring	
	.endif

	
	;单词
	invoke GetDlgItemText,hWin,IDC_EDT_WORDINITIAL,addr tbuf,255
	.if eax
		invoke lstrcat,addr ltbuf,SADD("and 单词 LIKE '")
		invoke lstrcat,addr ltbuf,addr tbuf
		invoke lstrcat,addr ltbuf,addr tbuf_endstring	
	.endif
	;词长
	invoke GetDlgItemText,hWin,IDC_EDT_WORDLEN,addr tbuf,255
	.if eax
		invoke lstrcat,addr ltbuf,SADD("and len(单词)")
		invoke GetDlgItemText,hWin,IDC_CBO_LENCOMPARE,addr tbuf_endstring,4
		INVOKE lstrcat,addr ltbuf,addr tbuf_endstring
		invoke lstrcat,addr ltbuf,addr tbuf
		;invoke lstrcat,addr ltbuf,addr tbuf_endstring	
	.endif

	;结束
		
	lea eax,ltbuf
	ret
	

FilterGetFilterStrings endp


FilterDoSearch proc hWin:dword,lpText:dword
	
	;作用:直接执行搜索
	;参数:SQL语句地址
	;返回值:无
	;
	;开发日期:06:51:28 2005-04-09
	;备注:
	LOCAL lSQL[1024]:byte
	LOCAL ltbufnewtable[256]:byte
	LOCAL tdbname[256]:byte
	invoke lstrcpy,addr lSQL,lpText
	
	invoke GetDlgItemText,hWin,IDC_EDT_NEWTABLENAME,addr ltbufnewtable,sizeof ltbufnewtable
	invoke lstrlen,addr ltbufnewtable
	.if eax
		;check if there is a table exist with the same name.		
		invoke SendMessage,hCombo,CB_FINDSTRINGEXACT,-1,addr ltbufnewtable
		.if eax!=CB_ERR
			MyDebug "所输入新表名已经存在,请重新输入!"
			ret
		.else
			;在Combo中添加此表名
			invoke SendMessage,hCombo,CB_ADDSTRING,0,addr ltbufnewtable	
		.endif			
	.endif
	
	
	invoke ODBCExeDirect,addr lSQL
	invoke MyMainWindowHide,hList	
	invoke SendMessage,hList,LB_RESETCONTENT,0,0
	invoke FillData
	invoke MyMainWindowShow,hList
	invoke GetWindowText,hCombo,addr tdbname,sizeof tdbname
	invoke SendMessage,hList,LB_GETCOUNT,0,0
	invoke	StatusBarSetText,addr tdbname,eax
	ret

FilterDoSearch endp

FilterSaveAs	proc hWin:dword,lpTextCondition:dword
	
	;作用:在SQL语句中加入能实现SaveAs的内容
	;参数:
	;返回值:
	;
	;开发日期:17:51:44 2005-04-10
	;备注:
	;若CheckButton未选中或IDC_EDT_NEWTABLENAME内的字符长度为0,则不另存为.
	;0.检查所输入的新表名是否己存在
	;1.得到搜索条件,比如select * from WhichTable where Condition
	;2.生成完整的SQL语句,select * into NewTable from WhichTable where Condition
	;3.执行
	LOCAL lbuf[1024]:byte
	LOCAL tdbname[256]:byte	
	LOCAL lSQL[1024]:byte
	LOCAL ltbufnewtable[256]:byte
	LOCAL flag:dword ;若flag为0,则不另存为;若非0,则另存为
	invoke lstrcpy,addr tdbname,lpTextCondition
	mov flag,1
	
	invoke GetDlgItemText,hWin,IDC_EDT_NEWTABLENAME,addr ltbufnewtable,sizeof ltbufnewtable
	.if !eax	;IDC_EDT_NEWTABLENAME内的字符长度是否为0
		mov flag,0
	.endif
		
	invoke GetWindowText,hCombo,addr tdbname,256	
	.if !eax
		PrintText	"get windowtext err in filter do filter function"
	.endif
	
	mov eax,flag
	.if eax
		invoke wsprintf,addr lSQL,SADD("select * into %s from %s %s"),addr ltbufnewtable,\
				addr tdbname,lpTextCondition
	.else
		invoke wsprintf,addr lSQL,SADD("select * from %s %s"),\
				addr tdbname,lpTextCondition
	.endif
	
	lea eax,lSQL
	
	ret

FilterSaveAs endp

















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -