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

📄 oplsamp.tpl

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 TPL
📖 第 1 页 / 共 2 页
字号:
REM Copyright (c) 1997-1998 Symbian Ltd. All rights reserved.

INCLUDE "const.oph"
INCLUDE "dbase.oxh"
INCLUDE "date.oxh"


app oplapp,123
	icon "tdemo.mbm"
	caption "Sample",1
enda

rem Array element indexes for pointer events GetEvent32 keyword
const KEvType% = 1
const KEvTime% = 2
const KEvPtrOplWindowId% = 3
const KEvPtrType% = 4
const KEvPtrModifiers% = 5
const KEvPtrPositionX% = 6
const KEvPtrPositionY% = 7
const KEvPtrPositionRelParentX% = 8
const KEvPtrPositionRelParentY% = 9

proc main:
	global OnOpl1993%
	global scrInfo%(10),scrW%,scrH%
	global wIdTb% rem toolbar window
	global orgDb$(128),orgCol1$(10),orgCol2$(10),orgCol3$(10)
	global db$(128),col1$(10),col2$(10),col3$(10),tab$(20)
	global sqlO$(200),sqlC$(200)
	local m%,m$(1)
	local pos%
	local cmdn$(5)
	local i%
	local lastMenu%
	
		
	init:
	doCmd:		rem show and handle the command C/O<doc>
	while 1
		mInit
			mcard "App","Exit",%e
			mcasc "Editors","Text editor",%E,"Date/time",%d ,"Filename",%f
			mcard "Events","Get events",%v
			mcard "Dialogs","Position",%p,"Editors>",16,"Buttons",%b,"Text",%T
			mcard "Graphics","Grey scales",%g,"Windows",%w
			mcard "Advanced","DBMS database usage",%D,"Stopwatch OPX demo",%s,"DBMS index OPX demo",%i
			mcard "Other","RND test",%r
		m%=menu(lastMenu%)
		cls
		if m%=0
			continue
		endif
		m$=chr$(m%)
		if m$=upper$(m$)
			cmdn$="cmds" rem shifted
		else
			cmdn$="cmd"	rem unshifted
		endif
		@%(cmdn$+m$):
rem		screen scrInfo%(3)-1,scrInfo%(4)-1,1,2

		gUse 1
		gCls
	endwh
endp


proc cmds0%:
	rem Dummy cascade item for S3a
	giprint "No cascades on S3a"
endp
	
proc cmde%:
	stop
endp

proc cmda%:
	giprint "Nothing in this one"
endp

proc cmdSe%:
	rem Text editor
	local s1$(255),s2$(5),d%

	s1$=rept$("1234567890",25)+"12345"
	do
		dInit "Text editor: Esc quits"
			dEdit s2$,"Edit 5 char string"
			dEdit s1$,"Edit 255 char string",20
		if dialog=0
			break
		endif
		print "You entered:"
		print "<";s2$;">"
		print "and"
		print "<";s1$;">"
		print "Press a key to continue"
		get
		cls
	until 0
endp

proc cmdd%:
	rem Date/time editors
	local d1&,d2&,t1&,t2&

	do
		dInit "Date and time editors: Esc quits"
			dDate d1&,"Date",0,&10000
			dTime t1&,"Time",1,0,&10000
			dTime t1&,"Time (no seconds)",0,0,&7fff
		if dialog=0
			break
		endif
	until 0
endp

proc cmdf%:
	rem Filename editor
	local f1$(255)
	local flags&,flags$(30),label$(8)

	flags$="$1 or $80"
	while 1
		dInit "Filename editor/selector(flags=$"+hex$(flags&)+"): Esc quits"
			if flags& and 1	rem bit 1 set for editor
				label$="Edit"
			else
				label$="Select"
			endif
			onerr e1

			dFile f1$,label$+" file:",flags&
			onerr off
			dEdit flags$,"Set next flags",20
			dText "Flag values:","$1->editor,$2->allow dirs"
			dText "and:","$4->dirs only,$8-> disallow existing (e)"
			dText "and:","$10->query existing (e),$20->allow null string"
			dText "and:","$40->no extension (s),$80->allow wildcards"
		if dialog=0
			break
		endif
		flags&=eval(flags$)
		giprint f1$
		continue
	e1::
		giprint "Bad flags:"+err$(err)
get
	endwh
endp

proc cmdv%:
	rem Get events
	global ev&(16)
	global wId1%,wId2%,wTitle%

	local sInfo%(10)
	
	screenInfo sInfo%()
	
	screen sInfo%(3)-10,sInfo%(4)-2,1,3
	evWinCr:	rem Create demo windows
	while 1
		clrEv:	rem clear the array
		getevent32 ev&()
		if (ev&(1)=27) and (ev&(4)=0)
			rem Esc with no modifier
			break
		endif
		showEv:
	endwh
	evWinCl:
endp

proc showEv:
	rem uses globals ev&(16),wId1%,wId2%,wTitle%
	local ev1&,mod%,rep%
	local i%,cnt%

	ev1&=ev&(1)
	cnt%=10	
	if (ev1& and $400)=0
		mod%=ev&(4)
		rep%=ev&(5)
		print "Key event: Ascii ";
		print num$(ev1&,-3),
		if ev1&<$100
			print " ";
			if ev1&<$10
				print " ";
			endif
		endif
		print "(0x";hex$(ev1&);")",
		if ev1&>=32
			print "='";chr$(ev1&);"'",
		else
			print "    ",
		endif
		print "  Modif=0x";hex$(mod%),
	      print "Repeats=";rep%;"  "
	else
		print "Event: ",hex$(ev1&),
		i%=2
		print "  ";
		vector ev1&-&400
			l401,l402,l403,l404,l405,l406,l407,l408,l409,l410
		endv
    if ev1&<>&400   rem not null event
      print "Unknown",hex$(ev1&)
			return
		endif
		while 0
l401::
			print "Focus gained"
			break
l402::
			print "Focus lost"
			break			
l403::
			print "Switched on"
			break
l404::
			print "Exit command received"  rem Not yet implemented
			break
l405::
			print "Date changed"
			break
l406::
			print "Key down, scan code=";ev&(3);"                    "
			break
l407::
			print "Key up, scan code=";ev&(3);"                      "
			break
l408::
			print "Pointer event ";ev&(KEvPtrType%),
			print "At (";ev&(KEvPtrPositionX%);",";ev&(KEvPtrPositionY%);")",
			print "WindowId=";ev&(KEvPtrOplWindowId%)
			break
l409::
			print "Pointer entered window",ev&(KEvPtrOplWindowId%)
			break
l410::
			print "Pointer exited window",ev&(KEvPtrOplWindowId%)
			break
		endwh
	endif
endp

proc clrEv:
	rem uses global ev&(16)
	local i%

	while i%<16
		i%=i%+1
		ev&(i%)=0
	endwh
endp

proc evWinCr:
	rem Create event demo windows
	rem sets globals wId1%,wId2%,wTitle%

	local w%,h%
	local posX%
	local title$(40)
	
	title$="Read pen and other events: Esc quits"
	w%=gWidth
	h%=gHeight
	posX%=w%-85 rem X position of windows
	wTitle%=gCreate(0,0,w%,20,1)
	gborder 0
	gAt (w%-gTWidth(title$))/2,16
	gPrint title$
	wId1%=gCreate(posX%,40,80,30,1)
	gborder 0
	gAt (gWidth-gTWidth("Window0"))/2,gHeight-10
	gprint "Window";gIdentity
	wId2%=gCreate(posX%,80,80,30,1)	
	gborder 0
	gAt (gWidth-gTWidth("Window0"))/2,gHeight-10
	gprint "Window";gIdentity
endp

proc evWinCl:
	rem Close event demo windows
	gclose wId1%
	gclose wId2%
	gclose wTitle%
endp

proc cmdsT%:
	rem Text labels

	dInit "Text in dialogs"
		dText "Left aligned","xxxxxx",0
		dText "Right aligned","xxxxxx",1
		dText "","Centred",2
		dText "Bold","xxxxxx",$100
		dText "Line below","xxxxxx",$200
		dText "Allow select","xxxxxx",$400
	dialog
endp

proc cmdp%:
	rem Dialog position
	local h&,v&
	while 1
		dInit "Select position for next (-1,0 or 1)"
			dPosition h&,v&
			dLong h&,"Horizontal",-1,1
			dLong v&,"Vertical",-1,1
		if dialog=0
			return
		endif
	endwh
endp

proc toolbar:(val%)
	local orgTb%

	orgTb%=tb%
	tb%=val%
	vector tb%
		large,small
	endv
none::
	if wIdTb%
		gClose wIdTb%
		wIdTb%=0
	endif
	return
large::
	if wIdTb%
		gUse wIdTb%
		gCls
	else
		wIdTb%=gCreate(scrW%-80,0,80,scrH%,1,1)
	endif
	gBorder 0
	gAt 2,20
	drawBut:("But1")
	drawBut:("But2")
	drawBut:("But3")
	drawBut:("But4")
	return
small::
	nyi:

endp

proc drawBut:(label$)
	gButton label$,1,gWidth-4,(gHeight-20-80)/4,0
	gMove 0,(gHeight-20-80)/4+2
endp

proc cmdb%:
	rem Dialog and toolbar buttons
	global wIdTb%(5),tb%
	local b%

	nyi:
	while 1
		dInit "Set toolbar : Esc quits"
			dButtons "&Large",%l,"&Small",%s,"&None",%n
		b%=dialog
		if b%=0 or b%=%n
			toolBar:(0)
			if b%=0
				break
			endif
		endif
		if b%=%l
			toolbar:(1)
		elseif b%=%s
			toolbar:(2)
		endif
	endwh
	toolbar:(0)
endp

proc cmdg%:
	rem Grey scales
	local win1%,win2%
	local width&,rgb&

	width&=2
	rgb&=255
	dInit " Enter width of each band"
		dLong width&,"Width",1,scrW%
		dLong rgb&,"Initial colours",0,255
	if dialog=0
		return
	endif
	win1%=gcreate(0,0,scrW%,scrH%/2,1,1)
	guse 1
	win2%=gcreate(0,scrH%/2,scrW%,scrH%/2,1,2)
	guse win1%
	bands:(width&,rgb&)
	guse win2%
	bands:(width&,rgb&)
	get
	gClose win2%
	gClose win1%
	
endp

proc bands:(width&,initColor&)
	local col%,ii%,dif%
	dif%=16
	col%=initColor&
	ii%=(gwidth+width&-1)/width&
	gat 0,0
	while ii%>0
		gcolor col%,col%,col%
		gfill width&,gheight,0
		gmove width&,0
		col%=col%+dif%
		if col%>255
			col%=col%-32
			dif%=-16
		elseif col%<0
			col%=col%+32
			dif%=16
		endif
		ii%=ii%-1
	endwh
endp

proc doPause%:(orgK%,inPause%)
	local k%,pause%
	
	pause%=inPause%
	k%=orgK%
	while k%
		if k%=%-
			pause%=pause%+1
		elseif k%=%+
			pause%=pause%-1
		endif
		if pause%<0
			pause%=0
			break
		endif
		k%=key
	endwh
	return pause%
endp

proc cmdw%:
	rem Windows demo
	local i%
	local wId%(8),curWid%
	local w%,h%,gap%,orgY%,speed%
	local orgK%,k%,pause%,seed&
	local cnt%
	cnt%=7

	gUpdate off
	seed&=day+month+year+hour+minute+second
	randomize seed&	rem for random window
	pause%=0
	w%=40
	h%=40
	orgY%=30
	gap%=-10

	gcls
	gpatt -1,gwidth,gHeight,0
	print "Random seed=";seed&,"+ speeds up, - slows down: Esc quits"
	busy "Pause count="+num$(pause%,5)
	while i%<cnt%
		i%=i%+1
		wId%(i%)=gcreate(i%*(w%+gap%),orgY%,w%,h%,1)
		gAt (gWidth-gTWidth("W0"))/2,h%-14
		gPrint "W";i%+1 rem console is w1
		gBorder 0	
		gAt 0,0
	endwh
	while 1
		curWId%=rnd*(cnt%)+2
		gUse curWId%
		gsetwin gOriginX+20,gOriginY+10
		gat 3,3
		gInvert gWidth-6,gHeight-6

⌨️ 快捷键说明

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