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

📄 mypubproc.prg

📁 foxpro连接sqlserver的例子
💻 PRG
📖 第 1 页 / 共 2 页
字号:
ofrmLeftTime = CREATEOBJECT('frmLeftTime',lnWaitSecs)
if lnWaitsecs > 0
	ofrmLeftTime.show
endif
*-- 提示对话框
  lnRetVal = MessageBox( lcMsgText, lnButtons, lcMsgTitle)

*!*	  ofrmLeftTime.release
*!*	  RELEASE ALL LIKE frmLeftTime
  showwait("")

RETURN lnRetVal

*-- 定义到记时对象
**************************************************
*-- 基类:    form
*
DEFINE CLASS frmLeftTime AS form


	Top = 12
	Left = 314
	Height = 40
	Width = 119
	ShowWindow = 1
	DoCreate = .T.
	Caption = "倒记时中..."
	ControlBox = .F.
	Closable = .F.
	MaxButton = .F.
	MinButton = .F.
	TitleBar = 1
	AlwaysOnTop = .T.
	lntotalsecs = 0
	Name = "frmLeftTime"
	tStartSecond = second()


	ADD OBJECT timer1 AS timer WITH ;
		Top = 0, ;
		Left = 84, ;
		Height = 23, ;
		Width = 23, ;
		Interval = 500, ;
		Name = "Timer1" 


	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 26, ;
		Alignment = 1, ;
		BackStyle = 0, ;
		Caption = "0", ;
		Height = 42, ;
		Left = 20, ;
		Top = 3, ;
		Width = 22, ;
		ForeColor = RGB(255,0,0), ;
		Name = "Label1"


	ADD OBJECT label2 AS label WITH ;
		AutoSize = .T., ;
		Caption = "秒剩余...", ;
		Height = 16, ;
		Left = 51, ;
		Top = 23, ;
		Width = 56, ;
		Name = "Label2"


	PROCEDURE Init
		para lnTotalTime
		this.lnTotalSecs	= lnTotalTime
		this.tStartSecond = second()

		if lnTotalTime = 0
			this.timer1.enabled = .f.
		endif
		thisform.label1.caption = allt(str(lnTotalTime))
	ENDPROC

	PROCEDURE QueryUnload
		if thisform.timer1.enabled = .F.
			KEYBOARD '{ENTER}' PLAIN
			thisform.release
		endif
	ENDPROC
	
	PROCEDURE timer1.Timer
		n = thisform.lnTotalSecs
		lnTimer = n - (second() - thisform.tStartSecond)
		
		if lnTimer <= 0
			this.enabled = .f.
			thisform.QueryUnload
		else
			thisform.label1.caption = allt(str(lnTimer))
*			showwait ("将在 "+allt(str(lnTimer)) + " 秒后自动确认...")
		endif


	ENDPROC


ENDDEFINE
*
*-- ===============================================================


*-- ===============================================================
*-- 程序文件:EdtShort.prg
*-- 程序功能:在文本可编辑区域内弹出编辑快捷菜单,实现快速编辑操作
*-- 一般使用方法:在可文本编辑的控件内的RightClick事件中写入代码;
*               do EdtShort.prg with this
*-- 增强使用方法:新建类,派生于可编辑的控件,如TextBox、EditBox等,再在其控件内的RightClick事件中写入代码:do EdtShort.prg with this,保存以便后用。
*-- 功能不足:不能对“密码框、只读框”进行识别操作,不能对“撤消”进行检测,希望能在以后进行升级,并欢迎大家能给出好的建议和意见! 
*-- ===============================================================
proc EdtShort
para oREF
DEFINE POPUP EdtShort SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR _med_undo OF EdtShort PROMPT "撤消(\<U)" ;
    MESSAGE "撤消上一次命令或操作" ;
	PICTRES _med_undo
DEFINE BAR 3 OF EdtShort PROMPT "\-"
DEFINE BAR _med_cut OF EdtShort PROMPT "剪切(\<T)" ;
    SKIP FOR oREF.sellength = 0 ;
    MESSAGE "移去选定内容并将其放入剪贴板" ;
    PICTRES _med_cut
DEFINE BAR _med_copy OF EdtShort PROMPT "复制(\<C)" ;
    SKIP FOR oREF.sellength = 0 ;
    MESSAGE "将选定内容复制到剪贴板上" ;
    PICTRES _med_copy
DEFINE BAR _med_paste OF EdtShort PROMPT "粘贴(\<P)" ;
    SKIP FOR empty(_cliptext) ;
    MESSAGE "粘贴剪贴板上的内容" ;
	PICTRES _med_paste
DEFINE BAR _med_clear OF EdtShort PROMPT "删除(\<D)" ;
    SKIP FOR oREF.sellength = 0 ;
    MESSAGE "移去选定内容,并且不将其放到剪贴板上" ;
    PICTURE "delete.bmp"
DEFINE BAR 8 OF EdtShort PROMPT "\-"
DEFINE BAR _med_slcta OF EdtShort PROMPT "全选(\<A)" ;
    MESSAGE "选定当前窗口中的所有文本或数据项" ;
    PICTRES _med_slcta
ACTIVATE POPUP EdtShort 
retu
*-- ===============================================================


*-- ===============================================================
*-- 显示 wait 信息
*-- ===============================================================
Func ShowWait
para wait_info,wait_second
local lcWaitMode
if empty(wait_info)
	wait clear
	SET MESSAGE TO "就绪"
	retu
endif
if type("wait_info") <> "C"
	wait_info = "请等待..."
endif
if type("wait_second") <> "N"
	lcWaitMode = "nowait"
else
	lcWaitMode = "timeout "+allt(str(wait_second))
endif
set message to wait_info
*-- wait window wait_info &lcWaitMode
*-- 使提示的信息居中
lcInfoCaption = "          === 提示信息 ===          "
lnInfoLen	= len(lcInfoCaption)
lnWaitInfo	= len(wait_info)
if	lnInfoLen	>	lnWaitInfo
	lcAddCaption	= ""
	lcAddWaitInfo	= repl(" ",(lnInfoLen-lnWaitInfo)/2)
else
	lcAddCaption	= repl(" ",(lnWaitInfo-lnInfoLen)/2)
	lcAddWaitInfo	= ""
endif

wait window lcAddCaption + lcInfoCaption ;
	+chr(13)+chr(13)+ ;
	lcAddWaitInfo + wait_info ;
	at ;
	SYSMETRIC(2)/17/2 - 4 ,;
	SYSMETRIC(1)/6.4/2-iif(lnWaitInfo>lnInfoLen,lnWaitInfo,lnInfoLen)/2 ;
	&lcWaitMode
retu
*-- ===============================================================


*-- ===============================================================
Func ErrorHand
*-- 错误处理程序
*	调用方法:
*	on error do errorhand with ;
*		error(),;
*		message(),;
*		message(2),;
*		program(),;
*		program(1),;
*		lineno(2)

*	程 序 员:红虎
*	编写日期:2001-1-18
*-- ===============================================================
para nErrCode,cErrMsg,cErrMsg1,cErrPrg,cErrPrg1,nErrLine
Local lnErrCode,lcErrMsg,lcErrMsg1,lcErrPrg,lcErrPrg1,lnErrLine
lnErrCode	= nErrCode
lcErrMsg	= cErrMsg
lcErrMsg1	= cErrMsg1
lcErrPrg	= cErrPrg
lcErrPrg1	= cErrPrg1
lnErrLine	= nErrLine

#Define	EnterBack	chr(13) + chr(13)

if	inlist(nErrCode,1958,165,39)	&& 当满足这些错误时。。。
	*-- 1958	装载打印机错误
	*-- 165		菜单定义错误
	*-- 39		数据上溢
	messagebox(cErrMsg + chr(13)+chr(13)+"所需执行任务已被忽略!",48,"系统警告")
	retu
endif

if lcErrPrg # lcErrPrg1
	lcErrPrg = lcErrPrg1 + " -> " + lcErrPrg
endif

ans = 0
MsgInfo = 				"错误代码: " + str(lnErrCode)	+ 	EnterBack
MsgInfo	=	MsgInfo	+	"程序行号: "	+	str(lnErrLine)+	EnterBack
MsgInfo	=	MsgInfo	+	"错误指令: "	+	lcErrMsg1	+ 	EnterBack
MsgInfo	=	MsgInfo	+	"错误信息: "	+	lcErrMsg		+	EnterBack
MsgInfo	=	MsgInfo	+	"调用过程: "	+	lcErrPrg		+	EnterBack
MsgInfo	=	MsgInfo	+	repl("-",50)	+	EnterBack
MsgInfo	=	MsgInfo	+	"一旦发生类似意外错误,请务必联系系统维护员,谢谢!"

ANS	=	messagebox(MsgInfo,2+16+256,"系统程序意外错误")

lcOldAlias	= alias()

DO CASE
	CASE ANS = 3
	*-- 终止
	on shutdown quit
	_screen.hide
	cancel
	clea events
	RETU to master
	CASE ANS = 4
	*-- 重试
		RETRY
	CASE ANS = 5
	*-- 忽略
ENDCASE	
retu
*-- ===============================================================


*-- ===============================================================
*-- 密文解密和加密
*-- 解密:unPassword(密文)  => 密码
*-- 加密:Password(密码)    => 密文
*-- ===============================================================

*-- 解密
FUNCTION unPassword
lPARAMETERS tcPassChar
LOCAL lcAllPassword,lcOnePassword,lnPassLen,lnOnePassword,lcAllPasswordNew
LOCAL lcOldPass
lcOldPass	= ""
FOR i=1 TO LEN(tcPassChar) / 3
	lcOldPass	= lcOldPass + CHR(VAL(SUBSTR(tcPassChar,i*3-2,3)))
ENDFOR
tcPassChar	= lcOldPass
*-- 将得到的一串不可见字符字符经由asc()函数转换
lnPassLen = len(tcPassChar)
lcAllPasswordNew = ""
For i = 1 to lnPassLen
	lcOnePassword = substr(tcPassChar,i,1)
	if	lcOnePassword # ' '
		lcOnePassword = allt(str(asc(lcOnePassword)))
	endif
	lcAllPasswordNew = lcAllPasswordNew + lcOnePassword
Endfor
tcPassChar = lcAllPasswordNew
lnPassLen = len(tcPassChar)/5
lcAllPassword = ""
lcOnePassword = ""
lnOnePassword = 0

For i = 1 to lnPassLen    
	lcOnePassword = subst( tcPassChar,5 * i - 4 , 3)
	if	empty(lcOnePassword)
		lcOnePassword = " "
	else
		lnOnePassword = val(lcOnePassword) - i
		if	between(lnOnePassword,0,255)
			lcOnePassword = chr(lnOnePassword)
		else
			lcOnePassword = chr( rand() * 100 )&& 密码里不应该出现有空字符,所以错误
		endif
	endif
	lcAllPassword = lcAllPassword + lcOnePassword
Endfor

Retu lcAllPassword

*-- 加密
FUNCTION  Password
lPARAMETERS tcPassChar
LOCAL lcAllPassword,lcOnePassword,lnPassLen,lcReturnPass
*!*	clea
*!*	?"原文:",tcpasschar
lcAllPassword = ""
lcOnePassword = ""

lnPassLen = len(tcPassChar)
For i = 1 to lnPassLen
	*-- 密码的每五位只有前三位有用,后二位随机
	lcOnePassword = str(asc(subs( tcPassChar,i,1)) + i,3)
	lcAllPassword = lcAllPassword + lcOnePassword + str(rand()*100,2)
Endfor
*!*	?'一次加密后:',lcAllPassword + '|'
*-- 将得到的一串字符经由chr()函数转换不可见字符
lnPassLen = len(lcAllPassword)
lcAllPasswordNew = ""
For i = 1 to lnPassLen
	lcOnePassword = substr(lcAllPassword,i,1)
	if	lcOnePassword # ' '
		lcOnePassword = chr(val(lcOnePassword))
	endif
	lcAllPasswordNew = lcAllPasswordNew + lcOnePassword
Endfor
*!*	?'二次加密后:',lcAllPasswordNew + '|'
lcReturnPass	= ""
FOR i=1 TO LEN(lcAllPasswordNew)
	lcReturnPass	= lcReturnPass	+ STR(ASC(SUBSTR(lcAllPasswordNew,i,1)),3)
ENDFOR
lcReturnPass	= STRTRAN(lcReturnPass," ","0")
RETURN lcReturnPass && lcAllPasswordNew
*-- ===============================================================


*-- ===============================================================
*-- 获取颜色
FUNCTION GetMyColor
*-- ===============================================================
LPARAMETERS toControl,tcProperty
LOCAL lnNewColor

IF TYPE("tcProperty") # "C"
	tcProperty = "ForeColor"
ENDIF

lnNewColor = GETCOLOR()
IF lnNewColor >= 0
	toControl.&tcProperty = lnNewColor
ENDIF

RETURN lnNewColor
*-- ===============================================================

*-- ===============================================================
FUNCTION CloseTableLike
PARAMETER tcLike
LOCAL laAlias[1],i,lcOldExact
IF AUSED(laAlias)=0
	RETURN
ENDIF
FOR i=1 TO ALEN(laAlias,1)
	IF ATC(tcLike, laAlias[i,1])=1
		USE IN (laAlias[i,1])
	ENDIF
ENDFOR
RETURN
*-- ===============================================================

*-- ===============================================================
*-- ===============================================================
*-- ===============================================================

*-- ===============================================================
*-- ===============================================================
*-- ===============================================================

⌨️ 快捷键说明

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