学习LotusScript
学习LotusScript
LotusScript对象与类
1.  面向对象编程
类是以抽象数据类型为基础的对象行为,抽象数据类型定义了以类型为基础执行所有接口
为一个类而定义的所有操作称之为方法。
2.对象
一般可以从两个方面来理解面向对象编程中的对象:
?属性。
?对象。
3.类
类是从对象中抽象出来,作为对具有相同特征的一组对象的描述。类是一种定义,它描述该类中每个对象共有的属性和方法,类不占用计算机内存。
Notes中的类被分为前端类(front-end)和后端类(back-end)两种。
前端类主要对用户当前正在工作的对象、表示Notes客户机用户界面中的对象进行操作。
后端类可以访问和操作任何数据库中的任何文档、视图与文件夹内容、数据库ACL以及外部数据。
7个前端类
?
NotesUIDatabase :代表Notes工作台上打开的数据库
?NotesUIDocument :用于用户访问当前文档
?NotesUIView :代表当前的数据库视图
?NotesUIWorkspace :帮助用户访问Notes当前的工作台
?Button :代表表单或文档上的操作按钮、热点或按钮
?Navigator :代表一个导航器上的对象,帮助用户操作浏览器
?Field :代表表单中的一个域。
23个后端类
?
NotesACL :代表数据库中的所有存取控制列表,通过它用户可以访问和使用数据库中的存取控制列表
?NotesACLEntry :代表存取控制列表中一个单一的ACL项目,通过它用户可以查询Notes对象的访问属性
?NotesAgent :代表一个代理,通过它用户可以运行一个代理或查询代理的属性
?NotesDatabase :代表一个数据库,通过它用户可以获得一个数据库的属性和操作该数据库中的文档、视图、表单等所有与数据库相关的对象
?NotesDataRange :代表Notes中的时间和日期,用于Notes中的日历和日程安排
?NotesDataTime :用于Notes中的时间和日期格式的转换
?NotesDbDirectory :代表Notes服务器和本地机上的所有数据库列表
?NotesDocument :代表Notes数据库中的一个文档,通过它可以实现对文档的操作
?NotesDocumentCollection :代表Notes中类的集合,通过它用户可以访问所有的文档
?NotesEmbeddedObject :代表Notes中的嵌入对象、链接和附件,通过它用户可以操作以上的对象
?NotesForm :代表Notes数据库中的一个表单,通过它用户可以访问表单的属性,还可以对表单进行一定的操作
?NotesInternational :代表Notes所在操作系统的不同国家、不同的设置
?NotesItem :代表文档中的域,通过它用户可以访问域的属性
?NotesLog :用于创建Notes日志,记录Notes事件、操作和错误等
?
NotesName :代表Notes中的用户名、服务器名和访问控制列表中的名字
?NotesNewLetter :代表一个概要文档,其中包括与其他文档的链接
?NotesRichTextItem :代表RTF域,通过它用户可以访问RTF
?NotesRichTextStyle :用于设置RTF域的属性
?NotesSession :代表用户与Notes的对话,是所有类的根类
?NotesTimer :通过该类可以设定时间间隔来触发一个事件
?NotesView :代表数据库中的一个视图,通过它用户可以获得数据库中所有的视图的属性和访问视图中的文档
?NotesViewColumn :代表视图中的一个列,通过它用户可以获得列的属性
?NotesRegistration :主要操作Notes用户名和通讯录,通过它用户可以增加用户和服务器、登记新用户、交叉验证等
 
程序书写规则
1.  注释
要添加注释,只要使用单引号“”作为注释文字的开头。该符号告诉程序忽略这一行单引号后面的内容,不对其进行编译。
可以使用Rem语句和%Rem%End Rem命令来写注释,Rem语句之后的所有字符都被看做注释。对于%Rem命令,夹在%Rem%End Rem之间的所有代码都被当作注释。
2.断行
当一条Script语句很长时,会给阅读者带来不便。在这种情况下,可以使用续行符“-”(一个空格紧跟一条下划线)将长语句分成多行。
可以在一行中写多个语句,语句之间用“:”隔开,也可以存在许多空白的行。
 
标识符
标识符是指那些LotusScript中的类、常量、变量、子程序的名称。
1.命名规则
最长不超过40个字符,字符可以是字母、数字和下划线。第一个字符必须是字母。有6种后缀符号,加在标识符后面区别数据类型。
textstyle
2.作用范围
?类或类型范围内的标识符只在类或类的定义中才有效。
?过程范围的标识符在子程序、函数中等有效。
?模块级的标识符只要模块被加载,在所有范围内都有效。
3.数据类型
%:整数  &:长整型  !:单精度  #:双精度  @:货币  $:字符串
还有一种特殊的数据类型即变体(variant),该数据类型是随着分配给它的数值的数据类型而改变的。
 
子程序
1.  子程序语句
LotusScript的设计窗格中输入Sub以及子程序名,可以创建一个新的子程序。Sub End Sub
的语法是:
[ Private | Public | Friend ] [ Static ] Sub name [ ( arglist ) ]
  [ statements ]
  [ Exit Sub ]
  [ statements ]
End Sub
2.  函数语句
函数的作用是计算并返回一个值。Function语句的语法如下:
[ Public | Private | Friend ] [ Static ] Function name [ ( ParamList ) ]
[ As returntype ] 
[ statements ]
  [ Exit Function ]
End Function
3.  事件处理程序
? Sub Initialize语法:
Sub Initizlize
[ Statements ]
End Sub
? Sub Terminate语法:
Sub Terminate
[ Statements ]
End Sub
4Property Get/Set语句
LotusDomino中添加编辑操作(mzj-oa)
修改要求:
      OA的学习园地模块中的管理员能对各主题及回复内容进行编辑操作。
思路:
      添加“编辑”按钮。
      根据文档的UID唯一性,点击某一篇“编辑”按钮就连接到该篇文档。
      编辑好保存后,将显示在列表上。
注意点:
      附件的上传或修改问题
具体修改过程:
      在添加“编辑”按钮时,由于该表单将业务主表单与显示列表合在一起,通过是否为新文档来判断显示业务主表单还是显示列表。在
列表中无法加“编辑”按钮,只能列表的视图,在视图中发现了一列,用来产生连接,具体代码如下:
s1:=" <TABLE cellSpacing=1 cellPadding=4 width=100% align=center bgColor=#b0b094 border=0>     
      <TBODY><TR><TD colSpan=2><TABLE cellSpacing=0 cellPadding=0 width=100%border=0>    <TBODY><TR><TD color=#ffffff><IMG src=\"/bbs/";
s2:="\"  border=0 >文章主题:";
s3:="</TD><TD width=800 height=28><IMG style=\"CURSOR: hand\" align=right width=62 height=23  src=\"/bbs/bj.gif\"onclick=\"WebEditDocs('"+@Text(@DocumentUniqueID)+"');\" ></TD>
    <TD><IMG style=\"CURSOR: hand\" align=right width=62 height=23              src=\"/bbs/sc.gif\"onclick=\"WebDeleteCheckRight('"+@Text(@DocumentUniqueID+"');\"></TD></TR></TBODY></TABLE></TD>
    </TR><TR vAlign=middle bgColor=#dedec0><TD vAlign=middle  align=\"center\" widt
h=200 bgColor=#dedec0 rowSpan=2>";
s4:=" </TD><TD vAlign=top width=85% bgColor=#e9e9df warp=\"virtuslly\">";
s5:=" <BR><HR width=\"100%\" SIZE=1>";
s6:=" </TD> </TR> </TBODY> </TABLE>    ";
v:=@Explode (@AttachmentNames;",");
@For(i := 0;i <= @Elements(v);i := i + 1;
s8:="<img src=\""  + @Text(@DocumentUniqueID) + "/$file/"+ v[i] + "\">";
s9:="<font style=\"font-size:11pt\">"+" <img align=middle src=\"/icons/vwicn005.gif\"> <a href=\"" + @Text(@DocumentUniqueID) + "/$file/" + v[i]+ "\" target=\"_blank\">"+v[i] + "</a>";"  "+"</font>";
@If (@Right (v[i];3)="jpg"; s10:=s8;@Right (v[i];3)="bmp"; s10:=s8;@Right (v[i];3)="tif";s10:=s8;@Right (v[i];3)="gif";s10:=s8;s10:=s9);s7:=s7+"<br>"+s10);
s1+stat+s2+subject+s3+AuthorChName+s4+@Text(@Created;"D0T0")+s5+BodyText+@If(!@Attachments; ""; "<br><br>附件:"+s7)+s6
    因为这里的编辑按钮是图片,在onclick事件时触发WebEditDocs函数,该函数在主题表单MainTopicJS Header中添加如下代码:
function WebEditDocs(str_unid)
{
  var pathname = (window.location.pathname);
  if (document.forms[0].IfManager.value=="1")
    {
    if (document.forms[0].MainID.value==str_unid)
      {
      window.open(pathname.substring(0,(pathname.lastIndexOf('.nsf')+5))+'MainTopic/all/'+str_unid+"?OpenDocument&1");
      return false;
      }
      else
      {
      window.open(pathname.substring(0,(pathname.lastIndexOf('.nsf')+5))+'all/'+str_unid+"?OpenDocument&1");
      return false;
      }
      }
  else
    {
      window.alert("您无权编辑此文档!");
      return false;
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。