📄 oplsamp.tpl
字号:
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 + -