WSH的SpecialFolders对象教程
“早上好”通过精心收集,向本站投稿了10篇WSH的SpecialFolders对象教程,下面是小编为大家推荐的WSH的SpecialFolders对象教程,欢迎大家分享。
篇1:预装入对象数据库教程
对象
预装入对象张健姿 01-6-22 下午 03:17:13
在PowerBuilder 5.0中支持全编译代码,但用于采用这种方法存在编译时间长、编译后可执行文件量大等缺点,所以在不少场合,我们仍采用伪编译方式,就是将装载对象和源代码的PBL文件编译成PowerBuilder的动态链接库(.PBD),PowerBuilder的动态链接库中装载的是与源程序库中源代码相匹配的二进制表示。在运行时,对象(包括函数)依照“需要时调用”的原则,从.PBD中装入内存,这就使可执行程序的字节数大大缩小,执行效率会提高,而且由于只有那些要用到的对象才被即时装入内存,使系统需要进行内存交换的机会就少得多,因而应用的运行也就更快。 但有时我们也会发现用户在进行打开窗口等操作时系统的响应速度较慢,特别是在客户机的配置较低的情况下,这种情形尤为突出。我们知道,当程序调用一个新的对象时,系统要到各个.PBD文件中查找这个对象,如果这个对象是由其它对象继承而来,那么其所有的祖先对象都需要装入内存。如应用软件十分庞大,这种查找和装入显然是十分消耗时间的。 这里我们介绍一种预装入对象的办法,可以在一定程度上解决这个问题。预装入对象就是改变对象初始装入的时间,也就是说在用户对应用并没有反应速度的要求时装入了对象,而不是在用户需要该对象时才装入(如打开一个窗口时)。预装入对象可以明显地提高性能,这种技术给用户的印象是在用户真正要求系统的响应速度时所有对象的装入都加快了。最适合做这些预装入的地方是在APPLICATION的OPEN事件中。在PowerBuilder 5.0开发工具中并没有直接提供这样的功能,但我们可以用一些简单的技巧来实现它,这就是使用一个非可视化对象。 我们首先应当知道:一些对象,如非可视化对象等,被调用时全部装入内存,而另一些对象,如函数,只装入需要的部分。因此使用一个非可视化对象可能比使用一个全局函数更快,当然还与它的大小和功能有关。 您不必在应用的OPEN事件中预装入所有的对象,而是预装入那些最经常被用作为祖先的对象。具体的做法是将这个非可视化对象定义成一个变量。这个非可视化对象一直保留在内存中直到应用结束,这可使应用更加紧凑。这样做的另一个好处是,一旦您定义了一个对象的指针作为全局变量,就可以在软件 的任何地方利用这个指针,引用这个对象的常量、函数和其它的特性。 具体的步骤可以这样进行: 步骤一:创建一个预装入的对象 创建一个Non_Visual_Object类型的用户对象,将该对象以您选定的名字存盘。在本例中采用NVO_Object_Pre_Loader. 在该对象中,建立一个Powerobject的对象数组叫做IPO_Pre_Loaded_objects[]。Powerobject对象是Pow-erBuilder对象层次中最高层次的对象(见前文《PowerBuilder面向对象的程序设计》),因此它能被分配给任何一个PowerBuilder标准的或自定义对象。另外建立一个整型的变量做为数组的索引,我们叫它为ii_Idx,并且将它初始化为0。这两个变量均为实例变量。 PRIVATE:/*限制对这两个变量的访问权限*/ /*我们假设预装入的对象数最多不超过10,当然开发者也可根据实际情况调整*/ PowerObject IPO_Pre_Loaded_objects[10] Integer ii_Idx=0 注意,我们应当在这里就预先定义数组的大小,这样可以使这个对象预先保留内存而且在自身预装入时也能运行得更快。 步骤二:创建预装入函数 现在创建一个用户对象函数叫做NVOF_Pre_Load_Object。这个函数有一个参数:APO_Object,它也是Powerobject类型,
函数的代码如下。 /* 函数:NVOF_Pre_Load_Object 功能:To pre_load often used ancestor objects 参数:Power Object APO_Object 返回值:integer 1:成功,-1: 失败 */ ii_Idx++ /*将要预装入的对象赋值给这个数组*/ IPO_Pre_Loaded_Objects[ii_Idx]=APO_Object /*检验赋值是否成功*/ If isvalid(IPO_Pre_Loaded_objects[ii_Idx])then Return 1 else Return -1 end if 步骤三:创建可以放入调用用户对象代码的用户事件 在这个对象上为开发者建立一个可放入对预装入对象调用的代码。我们定义了使用一个“声明”的事件,该事件将在对象的CONSTRUCTOR事件中被触发。我们可以将这个用户事件命名为NVO_UE_DECLARATIONS,并且将下面的代码放入对象的CONSTRUCTOR事件中。 This.Post Event(“nvo_ue_declarations”) 在NVO_UE_DECLARATION事件中您可以放入对预装入对象的调用。 步骤四:预装入对象 这段代码存在NVO_UE_DECLARATION事件中。可能您的应用需要更多或更少的预装入对象,我们只假设有这样几个常用的祖先对象类w_WindowBase、udw_DataWindow、uo_UserObjectBase和m_MenuBase。这些对象分别代表我们的窗口类、用户对象数据窗口类、用户对象类和菜单类的祖先对象。 NVO_UE_DECLARATON事件中的代码如下: /*声明指向这些对象的局部变量*/ Window lWindow UserObject lUO DataWindow lDW Menu lMenu /*对每一个需要预装入的对象,使用Create语句创建一个该对象的实例,并调用预装入函数将这个实例保存在内存中*/ /*创建一个窗口基类的实例*/ lWindow=Create w_WindowsBase NVOF_Pre_Load_Object(lWindow) /*创建一个DataW-indow的用户对象基类的实例*/ lDW=Create udw_DataWindowBase NVOF_Pre_Load_object(lDW) /*创建一个用户对象的基类实例*/ lUO=uo_UserObjectBase NVOF_Pre_Load_Object(lUO) /*创建一个菜单实例*/ lMenu=Create m_MenuBase NVOF_Pre_Load_Object(lMenu) 一般来讲,动态调用的对象,都是那些用字符串变量调用的对象,将不包含在.EXE文件中。例如,如果您用Open(mywin,“My_Window”)打开了一个窗口,My_Window窗口并不自动地包含在您的EXE文件中。如果编译成.PBD文件,则会包含在.PBD当中。但是如果您用这种方法预装入这个对象,该窗口在.PBD和.EXE编译技术下都将被包含。 步骤五:初始化预装入对象 为了使对象进入内存,还剩下最后的一步。我们必须将预装入对象本身装入内存。您可以选择在应用频繁使用部分开始工作前的任何地方做这件事。一般常用的是在APPLICA-TION的OPEN事件中。需要的代码如下: anvo_object_pre_loader=Create NVO_Object_Pre_loader. 这段程序将建立这个非可视化对象,该可视化对象就会激发对象的声明事件,从而预装入各个对象。 最后一点需提请注意的是,不要忘记在您的APPLI-CATION的CLOSE事件中加上DESTROY anvo_object_pre_loader这样一条语句,否则这个应用将造成所谓的内存漏洞(Memory Leak)。
篇2:WSH的SpecialFolders对象教程
前面我做过一个VBS,来实现添加网站快捷方式到开始菜单,当然你也可以添加到别的地方,这就是那个对像的一些用法 返回 SpecialFolders 对象(特殊文件夹集),
WSH的SpecialFolders对象教程
,
object.SpecialFolders(objWshSpecialFolders) 参数 object WshShell 对象。 objWshSpecialFolde
篇3:常见的数据库对象数据库教程
数据库对象是数据库的组成部分,常见的有以下几种:
3.3.1 表(Table )
数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的,图3-1 中黑底白字的部分称为行,图3-2 中黑底白字的部分称为列。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于惟一地确定一条记录,如图3-1 中的emp_id 列。图3-1 中的第一条记录,即第一行数据所表达的信息为:编号为10010001 的员工叫张三,性别男,出生于1968 年2 月14 日,工作级别为1 ,工
作部门编号为1001, 受雇日期是 年8 月2 日,月工资是8000 元。
3.3.2 索引(Index)
索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。如图3-3 所示。
3.3.3 视图(View)
视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存。在视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息,
例如:
从图3-2 中抽取字段员工编号emp_id、员工姓名e_name、员工部门编号dept_id、员
工工资e_wage 组成一个员工工资信息表。如图3-4 所示。
从图3-2 中抽取数据组成工作级别(job_level)为2 的员工信息表。如图3-5 所示。
3.3.4 图表(Diagram)
在SQL Server 中图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。如图3-6 所示。
3.3.5 缺省值(Default)
缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。如图3-7 所示。
3.3.6 规则(Rule)
规则是对数据库表中数据信息的限制。它限定的是表的列。如图3-8 所示。
3.3.7 触发器(Trigger)
触发器是一个用户定义的SQL 事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动执行。如图3-9 所示。
3.3.8 存储过程(Stored Procedure)
存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。如图3-10 所示。
3.3.9 用户(User)
所谓用户就是有权限访问数据库的人。
数据库对象还有很多
篇4:输出oracle 对象源码数据库教程
oracle|对象
way 1:
通过spool输出到文件:
set serveroutput on
spool 'c:\log.txt'
DECLARE
v_text VARCHAR2(1000);
--i number(3):=0;
CURSOR cur IS
SELECT text
FROM sys.DBA_SOURCE
WHERE WNER = 'SCOTT'
AND NAME = 'TESTCCB';
BEGIN
OPEN cur;
LOOP
FETCH cur
INTO v_text;
--DBMS_OUTPUT.PUT_LINE(' cityname = ' ||v_name||' count='|| i);
DBMS_OUTPUT.put_line(v_text);
--i := i+ 1;
EXIT WHEN cur%NOTFOUND;
END LOOP;
CLOSE cur;
END;
/
spool off
way2:
利用 utl_file 包直接写出到文件
要求oracle用户对os文件系统有操作权限
DECLARE
v_text VARCHAR2(1000);
v_dir VARCHAR2(256);
v_owner VARCHAR2(128);
v_obj VARCHAR2(128);
l_output utl_file.file_type;
CURSOR cur IS
SELECT text
FROM dba_source
WHERE WNER = v_owner
AND NAME = v_obj;
BEGIN
v_owner := 'SCOTT';
v_obj := 'EMP';
SELECT t.directory_path INTO v_dir FROM all_directories t;
l_output := utl_file.fopen(v_dir, 'tab.txt', 'w');
utl_file.new_line(l_output);
utl_file.put_line(l_output,
'-- output owner :' || v_owner || ' object: ' ||
v_obj);
OPEN cur;
LOOP
FETCH cur
INTO v_text;
EXIT WHEN cur%NOTFOUND;
utl_file.new_line(l_output);
utl_file.put_line(l_output, v_text);
END LOOP;
utl_file.new_line(l_output);
utl_file.put_line(l_output, '-- output finished! ');
utl_file.fclose(l_output);
CLOSE cur;
END;
/
篇5:基础CAD制图教程-修改对象
第6章 修改对象
通过使用通用的编辑命令可以修改大多数对象,基础CAD制图教程(6)-修改对象
。在本章中,我们将介绍大多数的编辑命令,它们全部位于“修改”工具栏和“修改”下拉菜单中。尽管在本章中提供的许多命令可以用于修改在三维空间中的对象(例如,将对象移动到其他视图中),但是在此讨论的内容仍仅限于二维空间中。通过本章的学习,应掌握以下内容:通过使用对象选择集方式和夹点选择对象从图形中删除对象创建已经存在的对象的副本通过移动或旋转重新排列对象通过拉伸、比例缩放、延伸、修剪或拉长等操作调整对象的大小打断对象1、选择对象 在修改一个对象时,必须将对象包括在一个选择集中,选择集中的对象将被修改。·对象选择方式点取通过使用拾取框或键入坐标,可以直接拾取对象。窗口选择的对象,是全部包括在矩形窗口中的对象。窗交选择的对象是包括在矩形窗口中的对象以及与矩形窗口边界相交叉的对象。圈围选择的对象是全部包括在多边形窗口中的对象。圈交选择的对象是包括在多边形窗口中的对象以及与多边形窗口边界交叉的对象。栏选选择的对象穿过一个多线段栅栏线。全部选择图形中的所有对象。上一个选择上一个添加到图形中的对象。前一个如果存在前一个选择集,选择包含在前一个选择集中的对象。·使用选择集过滤器在选择对象时,通过对所创建的选择集使用一个过滤器可以限制哪些对象将被选择。一个选择集过滤器可以根据一些特性,如颜色、线型、对象类型或者这些特性的组合去选择对象。·先选择修改命令 在选择一个对象修改命令后,AutoCAD提示选择对象。可以选择单独的对象或使用任何一种对象选择方式,如窗口选择或窗交方式选择多个对象。这就是所谓的“先执行后选择”,这是由于在选择对象前先指定了修改命令。·先选择对象 可以先选择对象,然后再确定如何修改它们。这就是所谓的“先选择后执行”,这是由于在指定修改命令前先选择了对象。2、删除对象 通过任何一个对象选择方式,可以从图形中删除对象。既可以使用“先执行后选择”方式,也可以使用“先选择后执行”方式。3、复制对象在绘制了一些对象后,制作该对象的副本比再次绘制该对象要快速简便得多。可以复制一个或多个对象,并且可以将那些对象进行一次或多次复制。对象还可以被复制到Windows剪贴板上。在图形中复制对象可以在当前图形中复制对象。其默认的方式是:创建一个选择集,然后指定起始点或者基准点,以及第二个点或者位移,用于进行复制操作。·使用夹点复制 在AutoCAD中,可以在任何一个夹点编辑模式下,创建对象的多个副本。例如,可以移动对象,将对象的副本放置在每一个指定的点上。·使用剪贴板进行复制与粘贴单击编辑菜单中的“剪切”或“复制”命令,再选择些菜单中的“粘贴”命令。·通过偏移实现平行复制 OFFSET命令复制一个被选对象,并将该对象与原始对象按在当前UCS下指定的距离对齐。可以平行复制一个圆弧、椭圆弧、直线、二维多段线、射线和多线,及同心圆和同心椭圆。·镜像对象可以创建一个对象的镜像图像。所镜像的对象穿过一条通过在图形中指定的两点定义的镜像线。·阵列对象可以按矩形或环形图案复制对象,创建一个阵列。在创建矩形阵列时,通过指定行、列的数量以及它们之间的距离,可以控制阵列中副本的数量。4、重新排列对象可以移动一个或多个对象,而且还可以按一个指定点旋转对象。在重排对象时,可以使用“先选择后执行”或者“先执行后选择”对象选择方式。还可以使用夹点移动和旋转对象。·移动对象可以在图形中移动对象。其默认方式是创建一个选择集,然后指定一个基准点,以及位移的第二点。·旋转对象可以根据指定的旋转角度或者一个相对于基准参照角度旋转对象。其默认方式是在旋转对象时,使用相对于当前方位的旋转角度作为指定的基准点。·对齐对象在AutoCAD中,可以使用ALIGN命令移动、旋转对象以及随意调整对象的大小,以便与另一个对象对齐。尽管ALIGN命令经常用在三维空间中对齐对象,但在二维空间中同样可以对齐对象。不能将“先选择后执行”对象选择方式用于ALIGN命令。5、调整对象的大小通过拉伸、缩放、延伸、修剪或编辑对象的长度重新调整对象的大小。·拉伸对象 可以通过拉伸对象修改对象的大小。在拉伸对象时,必须通过使用交叉窗口或交叉多边形的对象选择方式选择对象。然后既可以指定位移距离,也可以指定一个基准点和位移点。·比例缩放对象 可以根据一个基准点比例缩放对象以调整对象的大小。既可以通过指定一个比例因子也可以通过指定一个基准点和一个长度来修改对象的大小,哪一个将被用做比例因子将根据当前图形单位而定。第6章 修改对象
通过使用通用的编辑命令可以修改大多数对象。在本章中,我们将介绍大多数的编辑命令,它们全部位于“修改”工具栏和“修改”下拉菜单中。尽管在本章中提供的许多命令可以用于修改在三维空间中的对象(例如,将对象移动到其他视图中),但是在此讨论的内容仍仅限于二维空间中。通过本章的学习,应掌握以下内容:通过使用对象选择集方式和夹点选择对象从图形中删除对象创建已经存在的对象的副本通过移动或旋转重新排列对象通过拉伸、比例缩放、延伸、修剪或拉长等操作调整对象的大小打断对象1、选择对象 在修改一个对象时,必须将对象包括在一个选择集中,选择集中的对象将被修改,·对象选择方式点取通过使用拾取框或键入坐标,可以直接拾取对象。窗口选择的对象,是全部包括在矩形窗口中的对象。窗交选择的对象是包括在矩形窗口中的对象以及与矩形窗口边界相交叉的对象。圈围选择的对象是全部包括在多边形窗口中的对象。圈交选择的对象是包括在多边形窗口中的对象以及与多边形窗口边界交叉的对象。栏选选择的对象穿过一个多线段栅栏线。全部选择图形中的所有对象。上一个选择上一个添加到图形中的对象。前一个如果存在前一个选择集,选择包含在前一个选择集中的对象。·使用选择集过滤器在选择对象时,通过对所创建的选择集使用一个过滤器可以限制哪些对象将被选择。一个选择集过滤器可以根据一些特性,如颜色、线型、对象类型或者这些特性的组合去选择对象。·先选择修改命令 在选择一个对象修改命令后,AutoCAD提示选择对象。可以选择单独的对象或使用任何一种对象选择方式,如窗口选择或窗交方式选择多个对象。这就是所谓的“先执行后选择”,这是由于在选择对象前先指定了修改命令。·先选择对象 可以先选择对象,然后再确定如何修改它们。这就是所谓的“先选择后执行”,这是由于在指定修改命令前先选择了对象。2、删除对象 通过任何一个对象选择方式,可以从图形中删除对象。既可以使用“先执行后选择”方式,也可以使用“先选择后执行”方式。3、复制对象在绘制了一些对象后,制作该对象的副本比再次绘制该对象要快速简便得多。可以复制一个或多个对象,并且可以将那些对象进行一次或多次复制。对象还可以被复制到Windows剪贴板上。在图形中复制对象可以在当前图形中复制对象。其默认的方式是:创建一个选择集,然后指定起始点或者基准点,以及第二个点或者位移,用于进行复制操作。·使用夹点复制 在AutoCAD中,可以在任何一个夹点编辑模式下,创建对象的多个副本。例如,可以移动对象,将对象的副本放置在每一个指定的点上。·使用剪贴板进行复制与粘贴单击编辑菜单中的“剪切”或“复制”命令,再选择些菜单中的“粘贴”命令。·通过偏移实现平行复制 OFFSET命令复制一个被选对象,并将该对象与原始对象按在当前UCS下指定的距离对齐。可以平行复制一个圆弧、椭圆弧、直线、二维多段线、射线和多线,及同心圆和同心椭圆。·镜像对象可以创建一个对象的镜像图像。所镜像的对象穿过一条通过在图形中指定的两点定义的镜像线。·阵列对象可以按矩形或环形图案复制对象,创建一个阵列。在创建矩形阵列时,通过指定行、列的数量以及它们之间的距离,可以控制阵列中副本的数量。4、重新排列对象可以移动一个或多个对象,而且还可以按一个指定点旋转对象。在重排对象时,可以使用“先选择后执行”或者“先执行后选择”对象选择方式。还可以使用夹点移动和旋转对象。·移动对象可以在图形中移动对象。其默认方式是创建一个选择集,然后指定一个基准点,以及位移的第二点。·旋转对象可以根据指定的旋转角度或者一个相对于基准参照角度旋转对象。其默认方式是在旋转对象时,使用相对于当前方位的旋转角度作为指定的基准点。·对齐对象在AutoCAD中,可以使用ALIGN命令移动、旋转对象以及随意调整对象的大小,以便与另一个对象对齐。尽管ALIGN命令经常用在三维空间中对齐对象,但在二维空间中同样可以对齐对象。不能将“先选择后执行”对象选择方式用于ALIGN命令。5、调整对象的大小通过拉伸、缩放、延伸、修剪或编辑对象的长度重新调整对象的大小。·拉伸对象 可以通过拉伸对象修改对象的大小。在拉伸对象时,必须通过使用交叉窗口或交叉多边形的对象选择方式选择对象。然后既可以指定位移距离,也可以指定一个基准点和位移点。·比例缩放对象 可以根据一个基准点比例缩放对象以调整对象的大小。既可以通过指定一个比例因子也可以通过指定一个基准点和一个长度来修改对象的大小,哪一个将被用做比例因子将根据当前图形单位而定。·延伸对象 在AutoCAD中,可以延伸对象,以便使对象在由其他对象定义的边界处结束。此外,还可以将对象延伸到与一个隐含的边界(如果延伸则可能相交的一条边界对象)相交。·修剪对象 可以修剪对象,以便对象在用其他对象定义的剪切边处结束,还可以将对象修剪到隐含剪切边处。在使用TRIM命令时,首先选择剪切边,然后指定要剪切的对象,既可以一次选择一个对象,也可以用栏选方式选择对象。不能将“先选择后执行”对象选择方式用于TRIM命令。·拉长对象: 打开“修改”菜单中的“拉长”命令。6、实例:离合器的绘制7、打断对象 可以将一个对象打断为两个部分,在打断对象的过程中,将一部分对象清除。通过指定两个点打断对象。作为默认设置,用于选择对象的点也是打断对象的第一个点,但是不管怎样,可以用“第一点”选项,将打断点与选择对象的点区分开。不能将“先选择后执行”对象选择方式用于BREAK命令。篇6:基础CAD制图教程-修改对象
第8章 使用文字
在绘图的时候,常碰到诸如描述设计组件、车间和生产注意事项此类令人心烦的问题,AutoCAD提供一些文字输入命令和工具(包括拼写检查),通过它们可以减少单调的书写文字的工作,节约时间,基础CAD制图教程(8)-修改对象
。文字是用来标明图纸中零件的组成以及制造和生产所需的车间或场地的注释。AutoCAD提供了大量的文字字体,文字可以被拉伸、压缩、倾斜、镜像,甚至还可以根据字形进行竖排。每个文本字符串均可以缩放、旋转或根据需要对正。需要提醒的是AutoCAD把一个字符串(一行文字中的所有字符)认为是一个单独的对象。1 、绘制文字·创建单行文字: TEXT命令TEXT命令用于按当前的文字样式在图形中输入文字,并可根据需要修改当前文字的样式。·创建多行文字: MTEXT命令AutoCAD提供了MEXT命令用于以段落方式“处理”文字。段落的宽度是由指定的矩形框决定。这样就可以很容易地将绘制的文本作为一个整体,用左、右、中对正方式进行自动排版。每个多行文字段无论包含多少字符,都被认为是一个单个对象。文字边界尽管不显示,但也作为对象要素的一部分保存。·特殊的文本字符与符号选项特殊的文本符号除了可以通过“多行文字编辑器”对话框输入外,还可以通过控制字符方式输入,输入特殊文本字符时控制字符均以两个百分号开始(%%),然后输入控制符。2、文字编辑·DDEDIT命令用于修改文字和属性。属性是与块相关联的文字信息。·拼写检查SPELL命令用于检查用TEXT或MTEXT命令输入的文字的拼写错误·控制文字的显示对于TEXT和MTEXT命令,QTEXT命令是非常有用的,它用于减少图形重画或重生成的时间。对包含很多文字和很多属性信息的图形来说,重生成的时间是影响绘图速度的重要因素。使用QTEXT命令,文字将被矩形框代替,重生成这些矩形框比重生成原有文字要节省很多时间。如果图形中包含大量的文字和属性,建议将QTEXT设置为打开状态。当然在绘图输出之前或检查文字的拼写时,需将QTEXT设置为关闭状态,此时将自动执行重生成命令。3、创建和修改文字样式·STYLE命令功能TEXT和MTEXT命令的“文字样式”选项用于控制字符与符号的显示方式,而不能用于调整字高、倾斜和旋转角度。要在TEXT和MTEXT命令的“文字样式”选项中选择一种文字样式,那么这种文字样式必须先用STYLE命令定义。换句话说,就是STYLE命令用于创建新文字样式或修改已有的文字样式,而TEXT和MTEXT命令的“文字样式”选项只能用于从已有的文字样式中选择一种文字样式。4、综合实例演练篇7:Lua教程(十二):面向对象编程
这篇文章主要介绍了Lua教程(十二):面向对象编程,本文讲解了类、继承、私密性等面向对象编程知识,需要的朋友可以参考下
Lua中的table就是一种对象,但是如果直接使用仍然会存在大量的问题,见如下代码:
代码如下:
Account = {balance = 0}
function Account.withdraw(v)
Account.balance = Account.balance - v
end
--下面是测试调用函数
Account.withdraw(100.00)
在上面的withdraw函数内部依赖了全局变量Account,一旦该变量发生改变,将会导致withdraw不再能正常的工作,如:
代码如下:
a = Account; Account = nil
a.withdraw(100.00) --将会导致访问空nil的错误,
这种行为明显的违反了面向对象封装性和实例独立性。要解决这一问题,我们需要给withdraw函数在添加一个参数self,他等价于Java/C++中的this,见如下修改:
代码如下:
function Account.withdraw(self,v)
self.balance = self.balance - v
end
--下面是基于修改后代码的调用:
a1 = Account; Account = nil
a1.withdraw(a1,100.00) --正常工作。
针对上述问题,Lua提供了一种更为便利的语法,即将点(.)替换为冒号(:),这样可以在定义和调用时均隐藏self参数,如:
代码如下:
function Account:withdraw(v)
self.balance = self.balance - v
end
--调用代码可改为:
a:withdraw(100.00)
1. 类:
Lua在语言上并没有提供面向对象的支持,因此想实现该功能,我们只能通过table来模拟,见如下代码及关键性注释:
代码如下:
--[[
在这段代码中,我们可以将Account视为class的声明,如Java中的:
public class Account
{
public float balance = 0;
public Account(Account o);
public void deposite(float f);
}
--]]
--这里balance是一个公有的成员变量。
Account = {balance = 0}
--new可以视为构造函数
function Account:new(o)
o = o or {} --如果参数中没有提供table,则创建一个空的。
--将新对象实例的metatable指向Account表(类),这样就可以将其视为模板了。
setmetatable(o,self)
--在将Account的__index字段指向自己,以便新对象在访问Account的函数和字段时,可被直接重定向。
self.__index = self
--最后返回构造后的对象实例
return o
end
--deposite被视为Account类的公有成员函数
function Account:deposit(v)
--这里的self表示对象实例本身
self.balance = self.balance + v
end
--下面的代码创建两个Account的对象实例
--通过Account的new方法构造基于该类的示例对象。
a = Account:new
--[[
这里需要具体解释一下,此时由于table a中并没有deposite字段,因此需要重定向到Account,
同时调用Account的deposite方法。在Account.deposite方法中,由于self(a对象)并没有balance
字段,因此在执行self.balance + v时,也需要重定向访问Account中的balance字段,其缺省值为0。
在得到计算结果后,再将该结果直接赋值给a.balance。此后a对象就拥有了自己的balance字段和值。
下次再调用该方法,balance字段的值将完全来自于a对象,而无需在重定向到Account了。
--]]
a:deposit(100.00)
print(a.balance) --输出100
b = Account:new()
b:deposit(200.00)
print(b.balance) --输出200
2. 继承:
继承也是面向对象中一个非常重要的概念,在Lua中我们仍然可以像模拟类那样来进一步实现面向对象中的继承机制,见如下代码及关键性注释:
代码如下:
--需要说明的是,这段代码仅提供和继承相关的注释,和类相关的注释在上面的代码中已经给出。
Account = {balance = 0}
function Account:new(o)
o = o or {}
setmetatable(o,self)
self.__index = self
return o
end
function Account:deposit(v)
self.balance = self.balance + v
end
function Account:withdraw(v)
if v >self.balance then
error(“Insufficient funds”)
end
self.balance = self.balance - v
end
--下面将派生出一个Account的子类,以使客户可以实现透支的功能,
SpecialAccount = Account:new() --此时SpecialAccount仍然为Account的一个对象实例
--派生类SpecialAccount扩展出的方法。
--下面这些SpecialAccount中的方法代码(getLimit/withdraw),一定要位于SpecialAccount被Account构造之后。
function SpecialAccount:getLimit()
--此时的self将为对象实例。
return self.limit or 0
end
--SpecialAccount将为Account的子类,下面的方法withdraw可以视为SpecialAccount
--重写的Account中的withdraw方法,以实现自定义的功能。
function SpecialAccount:withdraw(v)
--此时的self将为对象实例。
if v - self.balance >= self:getLimit() then
error(“Insufficient funds”)
end
self.balance = self.balance - v
end
--在执行下面的new方法时,table s的元表已经是SpecialAccount了,而不再是Account。
s = SpecialAccount:new{limit = 1000.00}
--在调用下面的deposit方法时,由于table s和SpecialAccount均未提供该方法,因此访问的仍然是
--Account的deposit方法。
s:deposit(100)
--此时的withdraw方法将不再是Account中的withdraw方法,而是SpecialAccount中的该方法。
--这是因为Lua先在SpecialAccount(即s的元表)中找到了该方法。
s:withdraw(200.00)
print(s.balance) --输出-100
3. 私密性:
私密性对于面向对象语言来说是不可或缺的,否则将直接破坏对象的封装性。Lua作为一种面向过程的脚本语言,更是没有提供这样的功能,然而和模拟支持类与继承一样,我们仍然可以在Lua中通过特殊的编程技巧来实现它,这里我们应用的是Lua中的闭包函数。该实现方式和前面两个示例中基于元表的方式有着很大的区别,见如下代码示例和关键性注释:
代码如下:
--这里我们需要一个闭包函数作为类的创建工厂
function newAccount(initialBalance)
--这里的self仅仅是一个普通的局部变量,其含义完全不同于前面示例中的self。
--这里之所以使用self作为局部变量名,也是为了方便今后的移植。比如,以后
--如果改为上面的实现方式,这里应用了self就可以降低修改的工作量了。
local self = {balance = initialBalance} --这里我们可以将self视为私有成员变量
local withdraw = function(v) self.balance = self.balance - v end
local deposit = function(v) self.balance = self.balance + v end
local getBalance = function() return self.balance end
--返回对象中包含的字段仅仅为公有方法。事实上,我们通过该种方式,不仅可以实现
--成员变量的私有性,也可以实现方法的私有性,如:
--local privateFunction = function() --do something end
--只要我们不在输出对象中包含该方法的字段即可。
return {withdraw = withdraw, deposit = deposit, getBalance = getBalance}
end
--和前面两个示例不同的是,在调用对象方法时,不再需要self变量,因此我们可以直接使用点(.),
--而不再需要使用冒号(:)操作符了。
accl = newAccount(100.00)
--在函数newAccount返回之后,该函数内的“非局部变量”表self就不再能被外部访问了,只能通过
--该函数返回的对象的方法来操作它们。
accl.withdraw(40.00)
print(acc1.getBalance())
事实上,上面的代码只是给出一个简单的示例,在实际应用中,我们可以将更多的私有变量存放于上例的局部self表中。
篇8:ADO 对象模型总结数据库教程
ado|对象
ADO 对象模型总结ADO 对象总结
对象说明Connection启用数据的交换,Command体现 SQL 语句。Parameter体现 SQL 语句参数。Recordset启用数据的定位和操作。Field体现 Recordset 对象列。Error体现连接错误。Property体现 ADO 对象特性。
ADO 集合总结
集合说明Errors为响应单个连接错误而创建的所有 Error 对象。Parameters与 Command 对象关联的所有 Parameter 对象。Fields与 Recordset 对象关联的所有 Field 对象。Properties与 Connection、Command、Recordset 或 Field 对象关联的所有 Property 对象。
ADO 事件处理程序总结
ConnectionEvents说明BeginTransComplete、CommitTransComplete、RollbackTransComplete事务管理 ― 通知连接中的当前事务已开始、提交或回卷,
WillConnect、ConnectComplete、Disconnect连接管理 ― 通知当前连接将要开始、已经开始或结束。WillExecute、ExecuteComplete命令执行管理 ― 通知连接中的当前命令将要开始或已经结束。InfoMessage信息 ― 通知获得与当前操作相关的附加信息。
RecordsetEvents说明FetchProgress、FetchComplete检索状态 ― 通知数据检索操作的进程或检索操作已经完成。WillChangeField、FieldChangeComplete字段更改管理 ― 通知当前字段的值将要更改或已经更改。WillMove、MoveComplete、EndOfRecordset定位管理 ― 通知在 Recordset 中当前行的位置将要更改、已经更改或已到达 Recordset 的结尾。WillChangeRecord、RecordChangeComplete行更改管理 ― 通知有关 Recordset 当前行中某些内容将要更改,或已经更改。WillChangeRecordset、RecordsetChangeComplete记录集更改管理 ― 通知当前 Recordset 中某些内容将要更改,或已经更改。
篇9:CAD教程:AutoCAD偏移对象实例详解
这次CAD教程带来AutoCAD2013中文版偏移对象详解,AutoCAD2013偏移操作用于平行复制,通过该命令可以创建同心圆、平行线或等距曲线。
图01
一、用AutoCAD2013中文版偏移对象教程:
1.单击选择AutoCAD2013“修改”面板上“偏移”;或输入命令OFFSET。
图02
2.AutoCAD2013命令提示:
指定偏移距离或[通过(T)/删除(E)/图层(L)]<通过>:(输入偏移的距离值后按空格键)如输入偏移距离400后按空格键。通过>
图03
3.选择要偏移的对象,或[退出(E)/放弃(U)]<退出>:(选择要偏移的对象。注意,此时只能选择一个退出>
操作对象)。
图04
图05
4.指定要偏移的那一侧上的点,或[退出(E)/多个(M)/放弃(U)]<退出>:(相对于源对象,在准备偏移复制到的一侧任意点取一点,即可实现偏移)这里我们向右偏移,所以在要偏移的AutoCAD2013对象右侧任意点击鼠标即可。退出>
图06
图07
5.选择要偏移的对象,或[退出(E)/放弃(U)]<退出>:(也可以继续选择AutoCAD2013对象进行偏移)这里我们按空格键结束偏移。退出>
图08
二、通过:
1.使对象偏移复制后通过指定的点(或对象的延伸线通过该指定点)。单击执行该选项。
图09
2.AutoCAD2013命令提示:
选择要偏移的对象,或[退出(E)/放弃(U)]<退出>:(选择对象)退出>
图10
图11
3.选择通过点或[退出(E)/多个(M)/放弃(U)]<退出>:(确定新对象要通过的点,即可实现偏移复制)退出>
图12
图13
4.选择要偏移的对象,或[退出(E)/放弃(U)]<退出>:(也可以继续选择对象进行偏移复制)这里我们按空格键结束偏移,退出>
图14
三、删除(E):
确定偏移后是否删除源对象,执行该选项。
图15
2.AutoCAD2013提示:
要在偏移后删除源对象吗?[是(Y)/否(N)]<否>否>
3. 用户做出对应的选择后,AutocAD2013提示:
指定偏移距离或[通过(T)/删除(E)/图层(L)]<通过>(根据提示操作即可)。通过>
四、图层(L):
1.确定将偏移后得到的对象创建在当前图层还是源对象所在图层。选择执行该选项。
图16
2.AutoCAD2013提示:
输入偏移对象的图层选项[当前(C)/源(S)]<源>源>
提示中,“当前(C)”选项表示将偏移得到的对象创建在当前图层;“源(S)选项则表示要将偏移后得到的对象创建在源对象所在图层。
3.用户做出选择后,AutoCAD2013提示:
指定偏移距离或[通过(T)/删除(E)/图层(L)]<通过>:(根据提示操作即可)。通过>
五、多个(M):
1.利用当前设置的偏移距离重复进行偏移操作,执行该选项。
图17
2.AutoCAD2013提示:
指定要偏移的那一侧上的点,或[退出(E)/放弃(U)]<下一个对象>:(相当于源对象,在要复制到的一侧任意拾取一点,即可实现对应的偏移复制)下一个对象>
3.指定要偏移的那一侧上的点,或[退出(E)/放弃(U)]<下一个对象>:(也可以继续指定偏移位置实现偏移复制操作)下一个对象>
4.指定要偏移的对象,或[退出(E)/放弃(U)]<退出>:退出>
提示:用给定偏移距离的方式偏移复制对象时,距离值必须大于零。
篇10:vfp教程 六、面向对象的程序设计
6.1 面向对象程序设计概述
1. 基本概念
面向对象的程序设计是通过对类、子类和对象等的设计来体现的,类是面向对象程序设计技术的核心,
类:定义了对象特征以及对象外观和行为的模板。
类的特征:
封装性:隐藏了类中对象的内部数据或操作细节,只看到外表信息。
继承性:
任何类都可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能。体现了面向对象设计方法的共享机制。
多态性:相同的操作可作用于多种类型的对象上,并获得不同的结果。
抽象性:提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。
基类:
系统本身提供的类称为基类。基类包括容器类和控件类。容器类是其他对象的集合,如表格、选项按钮组;控件类是单一的对象,不包含其他对象,如命令按钮、文本框。
子类:
以其他类定义为起点,对某一对象所建立的新类。新类将继承任何对父类所做的修改。
类库:
存储类的文件,每一个以可视方式设计的类都存储在一个类库中,
电脑资料
类库文件的扩展名为 .VCX 。
对象:是类的一个实例,包括了数据和过程。具有所在类所定义的全部属性和方法。
VFP有两种对象:容器对象和控件对象。
属性:控件、字段或数据库对象的特性。
事件:由对象识别的一个动作。
方法:与对象相联系的由程序执行的一个处理过程,即处理事件的一组代码。
用户不可以为对象创建新的事件,但可以创建新的方法程序。
2. Visual FoxPro 基类
从下述 Visual FoxPro 基类中,可以派生子类或创建对象。
容器命令组控件微调标签表单命令按钮复选框OLE 容器控制线条表单集选项组列表框OLE 绑定型控制分隔符 #表格选项按钮 #文本框自定义形状标头 #页框组合框工具栏图象列#页面#编辑框计时器
注:# 这些类是父容器的集成部分,在类设计器中不能子类化。
基类事件的最小集合
事件
说明
Init当对象创建时激活。Destroy当对象从内存中释放时激活。Error当类中的事件或方法过程中发生错误时激活。【WSH的SpecialFolders对象教程】相关文章:
3.汇报对象
4.入党对象现实表现
5.政审对象现实表现
6.初始化类对象
7.检讨书 处对象
8.教学对象分析
9.对象考察材料
10.教育叙事对象






文档为doc格式