精华内容
下载资源
问答
  • Word组件对象模型

    千次阅读 2014-10-10 11:25:15
    Word组件对象模型  Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Application 类和 Document 类。这两个类非常重要,因为在大...Application 对象提供整个应用程序的包装,每个

    1  Word组件对象模型   
    Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Application 类和 Document 类。这两个类非常重要,因为在大部分时间里,您要么是在使用 Word 应用程序本身,要么是以某种方式处理 Word 文档。Word 对象模型严格遵循用户界面。Application 对象提供整个应用程序的包装,每个 Document 对象表示单个 Word 文档。这些对象各自都有很多方法和属性,您可以使用这些方法和属性操作对象或与对象交互。
    Application 对象。Application 对象表示 Word 应用程序,是其他所有对象的父级。它的所有成员通常作为一个整体应用于 Word。可以使用该对象的属性和方法来控制 Word 环境。
    Document 对象。Document 对象是 Word 编程的中枢。当您打开文档或创建新文档时,就创建了新的 Document 对象,该对象被添加到 Word 的 Documents 集合中。焦点所在的文档叫做活动文档,由 Application 对象的 ActiveDocument 属性表示。
    Selection 对象。Selection 对象表示当前选择的区域,Selection 对象只存在一个。在 Word 用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Selection 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,该对象还可以表示多个不连续的文本块。
    Range 对象。Range 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range 对象的数量并不局限于一个。您可以在同一文档中定义多个 Range 对象。
    Bookmark 对象。Bookmark 对象与 Range 对象类似,它也表示文档中的一个连续区域,并具有一个起始位置和一个结束位置。书签用于在文档中标记一个位置,或者用作文档中的文本容器。Bookmark 对象可以小到只有一个插入点,也可以大到整篇文档。您还可以在文档中定义多个书签。
    对于Microsoft Office Word 2003,通常可以在..//Microsoft Office//OFFICE11// MSWORD.OLB获得相关接口类。常用的有_Application, Documents, _Document, Selection, Range等。此外,用于设置字体的_Font,段落格式的_ParagraphFormat,表格对象Tables及Table,目录对象TablesOfContents及TableOfContents等等也是常用的。

    2  Word启动与退出     
    使用Application 对象,关联接口、释放接口。具体代码如下:
    _Application theExcelApp;
    theExcelApp.CreateDispatch("word.application", NULL); //关联接口
    退出
    theExcelApp.Quit();  退出
    theExcelApp.ReleaseDispatch();  //释放接口

    3   Word表格操作    
    使用单文档对象_Document,表格集合对象Tables,表格对象Table,行对象Rows,单元格对象Cell,列集合对象Columns,列对象Column,区域对象Range等可对表格进行操作。
    插入表格。使用_Document:: GetTables返回一个Tables对象,使用Tables::Add在指定区域插入一个表格。
    获取列对象。使用Table:: GetColumns返回一个Columns对象,使用Columns:: Item返回一个Column对象。从而可以列为对象进行操作。
    单元格插入文字。使用Table:: Cell返回Cell对象,使用Cell:: GetRange返回区域对象,或者使用Cell::Select使得表格获得输入焦点,从而进行编辑。

    4  文字转换为表格    
    当需要把一个记事本(*.txt)文件转换为表格插入到Word文档中。最快捷的作法是将txt内容粘贴到word文档中,然后将内容转化为表格。步骤如下:
    首先确定一个插入txt内容的Range对象。
    使用Range::InsertFile函数。InsertFile函数声明为:
       void Range::InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment)
    参数说明如下:
    FileName 插入文本路径。
    Range 插入文本内容的Range对象,设为NULL
    ConfirmConversions 确认转换,设为FALSE
    Link 链接到文件,设为FALSE
    Attachment 链接行为,设为FALSE
    使用Range:: ConvertToTable转换文字为表格,返回一个Table对象。ConvertToTable函数声明为:
    LPDISPATCH Range::ConvertToTable(VARIANT* Separator, VARIANT* NumRows, VARIANT* NumColumns, VARIANT* InitialColumnWidth, VARIANT* Format, VARIANT* ApplyBorders, VARIANT* ApplyShading, VARIANT* ApplyFont, VARIANT* ApplyColor, VARIANT* ApplyHeadingRows, VARIANT* ApplyLastRow, VARIANT* ApplyFirstColumn, VARIANT* ApplyLastColumn, VARIANT* AutoFit, VARIANT*, VARIANT* DefaultTableBehavior)
    参数说明如下:
    Separator 分隔符。通常设为1,即设置制表符为分隔符(如果采用其他分隔符,请适当修改)
    NumRows 表格行数目
    NumColumns 列数目
    InitialColumnWidth,Format,ApplyBorders,ApplyShading,ApplyFont,ApplyColor,ApplyBorders,ApplyFirstColumn,ApplyLastColumn, DefaultTableBehavior,均可设为VarOpt,由系统默认
    AutoFit 自动调整。设为0
    也可利用Selection对象代替Range对象进行文本转换表格,调用函数与Range对象的函数名称一致,参数略有出入。

    5 设置页码       
    通常我们需要在任意指定页开始插入新页码。网上很多文章都是只能在第二页开始设置。以下介绍我通过观察VBA宏代码得到的一种插入页码的方法(实现方法当然可能不止一种,我曾在网上看到曾有一篇文章提及这个问题,但是他的代码不能正常运行,估计是作者发布文章的时候有些不小心有遗漏)。要点在于插入分节符和取消,并且要注意返回当前节。步骤如下:
    0 在前一页使用Selection::InsertBreak插入分节符,参数值为2(参数值7为分页符)。
    1 使用_Document::GetActiveWindow返回窗口Window对象。
    2 使用Window:: GetActivePane返回当前活动Pane窗格对象
    3 使用Pane::GetView返回View视图对象,View::SetType(long(3))。
    4 使用SetSeekView(long(10))获得页眉页脚视图。
    5 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    6 使用HeaderFooter::SetLinkToPrevious(FALSE)取消“与上一节相同”。
    7此时输入较点Selction停留在上一节的页脚处。使用View::SetSeekView(long(0))将返回到当前节的文字视图中。
    8 使用View::SetSeekView(long(10))再次获得本节的页眉页脚视图。
    9 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    10 使用HeaderFooter::GetRange获得Range对象rangeheadfoot。
    11 使用Range:: GetFields获得Fields对象。
    12使用Fields:: Add获得Field对象,具体参数赋值为Add(rangeheadfoot,COleVariant(short(33)),varOpt,varOpt)。
    13 使用Fields::GetPageNumbers()获得PageNumbers页码对象。
    14使用PageNumbers对象的方法设置属性。特别要设置SetStartingNumber(long(1))。
    PageNumbers对象的其他设置可参考如下:
    SetNumberStyle(long(0));
     SetHeadingLevelForChapter(long(0));
     SetIncludeChapterNumber(FALSE);
     SetChapterPageSeparator(long(0));
     SetRestartNumberingAtSection(true);
    15 通过Range对象rangeheadfoot设置页码居中及文字大小。
    16 结束页码设置。使用View::SetSeekView(long(0))返回到文字视图。

    6 插入Excel图表    
    在Excel生成图表后,Word可将其嵌入文档中并改变其格式。用户可以通过双击图表对象激活,然后进行类似于Excel环境下的操作。具体操作如下:
    使用Selection:: GetInlineShapes。获得内嵌区域集合对象InlineShapes。
    使用InlineShapes::AddOLEObject插入表格,并获得内嵌区域对象InlineShape。AddOLEObject函数声明为:
    LPDISPATCH AddOLEObject(VARIANT* ClassType, VARIANT* FileName, VARIANT* LinkToFile, VARIANT* DisplayAsIcon, VARIANT* IconFileName, VARIANT* IconIndex, VARIANT* IconLabel, VARIANT* Range)
    参数说明如下:
    ClassType 插入类型,若为Excel对象,设为COleVariant("Excel.Sheet.8")。
    FileName 文件路径。
    LinkToFile 链接到文件。设为FALSE。
    DisplayAsIcon 显示为图标,设为FALSE。
    IconFileName 文件名图标,设为VarOpt。
    IconIndex 索引图标,设为VarOpt。
    IconLabel 标签图标,设为VarOpt。
    Range 区域,设为VarOpt。
    使用InlineShape的方法SetHeight、SetWidth调整大小。这些方法的参数值都是打印格式下的英磅数值。

    7 生成目录     
    单文档对象_Document,目录集合对象TablesOfContents,目录对象TableOfContents及Range对象。操作流程如下:
    使用_Document:: GetTablesOfContents返回TablesOfContents对象。
    TablesOfContents::Add返回TableOfContents对象。
    LPDISPATCH TablesOfContents::Add(LPDISPATCH Range, VARIANT* UseHeadingStyles, VARIANT* UpperHeadingLevel, VARIANT* LowerHeadingLevel, VARIANT* UseFields, VARIANT* TableID, VARIANT* RightAlignPageNumbers, VARIANT* IncludePageNumbers, VARIANT* AddedStyles, VARIANT* UseHyperlinks, VARIANT* HidePageNumbersInWeb, VARIANT* UseOutlineLevels)
    参数说明如下:
    Range 插入目录的Range对象。通常目录是文档生成结束时进行插入的,因此必须事先指定插入目录的区域Range对象。
    UseHeadingStyles 使用制表符前导符,设为TRUE
    UpperHeadingLevel 顶级目录,通常设为1
    LowerHeadingLevel 底级目录,根据需要赋值
    UseFields 使用区域,设为FALSE
    TableID 目录索引,以1起始
    RightAlignPageNumbers 页码右对齐,设为TRUE
    IncludePageNumbers 包含页码,
    AddedStyles 增加类型,设为NULL
    UseHyperlinks 使用超链接,设为TRUE
    HidePageNumbersInWeb Web页中隐藏页码,设为TRUE
    UseOutlineLevels 使用大纲级别,设为TRUE
    使用TableOfContents:: GetRange获取区域对象,进行其他例如文字大小控制等操作。
    TableOfContents:: UpdatePageNumbers更新页码

     

    1  Word组件对象模型   
    Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Application 类和 Document 类。这两个类非常重要,因为在大部分时间里,您要么是在使用 Word 应用程序本身,要么是以某种方式处理 Word 文档。Word 对象模型严格遵循用户界面。Application 对象提供整个应用程序的包装,每个 Document 对象表示单个 Word 文档。这些对象各自都有很多方法和属性,您可以使用这些方法和属性操作对象或与对象交互。
    Application 对象。Application 对象表示 Word 应用程序,是其他所有对象的父级。它的所有成员通常作为一个整体应用于 Word。可以使用该对象的属性和方法来控制 Word 环境。
    Document 对象。Document 对象是 Word 编程的中枢。当您打开文档或创建新文档时,就创建了新的 Document 对象,该对象被添加到 Word 的 Documents 集合中。焦点所在的文档叫做活动文档,由 Application 对象的 ActiveDocument 属性表示。
    Selection 对象。Selection 对象表示当前选择的区域,Selection 对象只存在一个。在 Word 用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Selection 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,该对象还可以表示多个不连续的文本块。
    Range 对象。Range 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range 对象的数量并不局限于一个。您可以在同一文档中定义多个 Range 对象。
    Bookmark 对象。Bookmark 对象与 Range 对象类似,它也表示文档中的一个连续区域,并具有一个起始位置和一个结束位置。书签用于在文档中标记一个位置,或者用作文档中的文本容器。Bookmark 对象可以小到只有一个插入点,也可以大到整篇文档。您还可以在文档中定义多个书签。
    对于Microsoft Office Word 2003,通常可以在..//Microsoft Office//OFFICE11// MSWORD.OLB获得相关接口类。常用的有_Application, Documents, _Document, Selection, Range等。此外,用于设置字体的_Font,段落格式的_ParagraphFormat,表格对象Tables及Table,目录对象TablesOfContents及TableOfContents等等也是常用的。

    2  Word启动与退出     
    使用Application 对象,关联接口、释放接口。具体代码如下:
    _Application theExcelApp;
    theExcelApp.CreateDispatch("word.application", NULL); //关联接口
    退出
    theExcelApp.Quit();  退出
    theExcelApp.ReleaseDispatch();  //释放接口

    3   Word表格操作    
    使用单文档对象_Document,表格集合对象Tables,表格对象Table,行对象Rows,单元格对象Cell,列集合对象Columns,列对象Column,区域对象Range等可对表格进行操作。
    插入表格。使用_Document:: GetTables返回一个Tables对象,使用Tables::Add在指定区域插入一个表格。
    获取列对象。使用Table:: GetColumns返回一个Columns对象,使用Columns:: Item返回一个Column对象。从而可以列为对象进行操作。
    单元格插入文字。使用Table:: Cell返回Cell对象,使用Cell:: GetRange返回区域对象,或者使用Cell::Select使得表格获得输入焦点,从而进行编辑。

    4  文字转换为表格    
    当需要把一个记事本(*.txt)文件转换为表格插入到Word文档中。最快捷的作法是将txt内容粘贴到word文档中,然后将内容转化为表格。步骤如下:
    首先确定一个插入txt内容的Range对象。
    使用Range::InsertFile函数。InsertFile函数声明为:
       void Range::InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment)
    参数说明如下:
    FileName 插入文本路径。
    Range 插入文本内容的Range对象,设为NULL
    ConfirmConversions 确认转换,设为FALSE
    Link 链接到文件,设为FALSE
    Attachment 链接行为,设为FALSE
    使用Range:: ConvertToTable转换文字为表格,返回一个Table对象。ConvertToTable函数声明为:
    LPDISPATCH Range::ConvertToTable(VARIANT* Separator, VARIANT* NumRows, VARIANT* NumColumns, VARIANT* InitialColumnWidth, VARIANT* Format, VARIANT* ApplyBorders, VARIANT* ApplyShading, VARIANT* ApplyFont, VARIANT* ApplyColor, VARIANT* ApplyHeadingRows, VARIANT* ApplyLastRow, VARIANT* ApplyFirstColumn, VARIANT* ApplyLastColumn, VARIANT* AutoFit, VARIANT*, VARIANT* DefaultTableBehavior)
    参数说明如下:
    Separator 分隔符。通常设为1,即设置制表符为分隔符(如果采用其他分隔符,请适当修改)
    NumRows 表格行数目
    NumColumns 列数目
    InitialColumnWidth,Format,ApplyBorders,ApplyShading,ApplyFont,ApplyColor,ApplyBorders,ApplyFirstColumn,ApplyLastColumn, DefaultTableBehavior,均可设为VarOpt,由系统默认
    AutoFit 自动调整。设为0
    也可利用Selection对象代替Range对象进行文本转换表格,调用函数与Range对象的函数名称一致,参数略有出入。

    5 设置页码       
    通常我们需要在任意指定页开始插入新页码。网上很多文章都是只能在第二页开始设置。以下介绍我通过观察VBA宏代码得到的一种插入页码的方法(实现方法当然可能不止一种,我曾在网上看到曾有一篇文章提及这个问题,但是他的代码不能正常运行,估计是作者发布文章的时候有些不小心有遗漏)。要点在于插入分节符和取消,并且要注意返回当前节。步骤如下:
    0 在前一页使用Selection::InsertBreak插入分节符,参数值为2(参数值7为分页符)。
    1 使用_Document::GetActiveWindow返回窗口Window对象。
    2 使用Window:: GetActivePane返回当前活动Pane窗格对象
    3 使用Pane::GetView返回View视图对象,View::SetType(long(3))。
    4 使用SetSeekView(long(10))获得页眉页脚视图。
    5 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    6 使用HeaderFooter::SetLinkToPrevious(FALSE)取消“与上一节相同”。
    7此时输入较点Selction停留在上一节的页脚处。使用View::SetSeekView(long(0))将返回到当前节的文字视图中。
    8 使用View::SetSeekView(long(10))再次获得本节的页眉页脚视图。
    9 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    10 使用HeaderFooter::GetRange获得Range对象rangeheadfoot。
    11 使用Range:: GetFields获得Fields对象。
    12使用Fields:: Add获得Field对象,具体参数赋值为Add(rangeheadfoot,COleVariant(short(33)),varOpt,varOpt)。
    13 使用Fields::GetPageNumbers()获得PageNumbers页码对象。
    14使用PageNumbers对象的方法设置属性。特别要设置SetStartingNumber(long(1))。
    PageNumbers对象的其他设置可参考如下:
    SetNumberStyle(long(0));
     SetHeadingLevelForChapter(long(0));
     SetIncludeChapterNumber(FALSE);
     SetChapterPageSeparator(long(0));
     SetRestartNumberingAtSection(true);
    15 通过Range对象rangeheadfoot设置页码居中及文字大小。
    16 结束页码设置。使用View::SetSeekView(long(0))返回到文字视图。

    6 插入Excel图表    
    在Excel生成图表后,Word可将其嵌入文档中并改变其格式。用户可以通过双击图表对象激活,然后进行类似于Excel环境下的操作。具体操作如下:
    使用Selection:: GetInlineShapes。获得内嵌区域集合对象InlineShapes。
    使用InlineShapes::AddOLEObject插入表格,并获得内嵌区域对象InlineShape。AddOLEObject函数声明为:
    LPDISPATCH AddOLEObject(VARIANT* ClassType, VARIANT* FileName, VARIANT* LinkToFile, VARIANT* DisplayAsIcon, VARIANT* IconFileName, VARIANT* IconIndex, VARIANT* IconLabel, VARIANT* Range)
    参数说明如下:
    ClassType 插入类型,若为Excel对象,设为COleVariant("Excel.Sheet.8")。
    FileName 文件路径。
    LinkToFile 链接到文件。设为FALSE。
    DisplayAsIcon 显示为图标,设为FALSE。
    IconFileName 文件名图标,设为VarOpt。
    IconIndex 索引图标,设为VarOpt。
    IconLabel 标签图标,设为VarOpt。
    Range 区域,设为VarOpt。
    使用InlineShape的方法SetHeight、SetWidth调整大小。这些方法的参数值都是打印格式下的英磅数值。

    7 生成目录     
    单文档对象_Document,目录集合对象TablesOfContents,目录对象TableOfContents及Range对象。操作流程如下:
    使用_Document:: GetTablesOfContents返回TablesOfContents对象。
    TablesOfContents::Add返回TableOfContents对象。
    LPDISPATCH TablesOfContents::Add(LPDISPATCH Range, VARIANT* UseHeadingStyles, VARIANT* UpperHeadingLevel, VARIANT* LowerHeadingLevel, VARIANT* UseFields, VARIANT* TableID, VARIANT* RightAlignPageNumbers, VARIANT* IncludePageNumbers, VARIANT* AddedStyles, VARIANT* UseHyperlinks, VARIANT* HidePageNumbersInWeb, VARIANT* UseOutlineLevels)
    参数说明如下:
    Range 插入目录的Range对象。通常目录是文档生成结束时进行插入的,因此必须事先指定插入目录的区域Range对象。
    UseHeadingStyles 使用制表符前导符,设为TRUE
    UpperHeadingLevel 顶级目录,通常设为1
    LowerHeadingLevel 底级目录,根据需要赋值
    UseFields 使用区域,设为FALSE
    TableID 目录索引,以1起始
    RightAlignPageNumbers 页码右对齐,设为TRUE
    IncludePageNumbers 包含页码,
    AddedStyles 增加类型,设为NULL
    UseHyperlinks 使用超链接,设为TRUE
    HidePageNumbersInWeb Web页中隐藏页码,设为TRUE
    UseOutlineLevels 使用大纲级别,设为TRUE
    使用TableOfContents:: GetRange获取区域对象,进行其他例如文字大小控制等操作。
    TableOfContents:: UpdatePageNumbers更新页码



    http://blog.csdn.net/luckisok/article/details/3213177

    展开全文
  • 因为这类问题基本上都是授权问题,现在先解释一下这几登陆标识:The interactive user 交互式用户 、The launching user 、this user 、the system account(services only)  下面引用了微软文档 ,翻译使用的是...

    因为这类问题基本上都是授权问题,现在先解释一下这几个登陆标识:The interactive user 交互式用户 、The launching user 、this user 、the system account(services only) 

    下面引用了微软文档 ,翻译使用的是百度翻译(我的英文比较差,o(* ̄︶ ̄*)o)

    1、The interactive user 交互式用户 

    微软解释:

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms686587(v=vs.85).aspx

    The interactive user is the user that is currently logged on to the computer where the COM server is running. If the identity is set to be the interactive user, all clients use the same instance of the server if the server registers its class factory as multi-use. If no user is logged on, the server will not run. If the server has a graphical user interface (GUI) that the client needs to see, you should use interactive user for the server's identity. However, choosing this identity carries some security risks because the server runs under the identity of the logged on user without the logged on user's knowledge or consent. In addition, a service application cannot display a user interface. For more information, see Interactive Services.

    If a COM server is configured to run as the interactive user, in a terminal services environment, the server will be launched in the interactive session that matches the client's user identity. However, the client application can use the session moniker to reference an object provided by the server in a session that does not match the client identity. When this is used, the client application can specify any session, in which case the server will run as the user who owns the session, not the launching user. The default access permissions in this scenario would not allow the launching user to call methods on the server. However, the following security risks remain:

    • If the COM server exposes interfaces that are not controlled by COM, such as TCP ports, named pipes, LPC ports, shared memory sections, and so on, these could be used by the launching user to influence the server. COM objects configured to run as the interactive user should reduce this attack surface as much as possible.
    • COM objects are free to set their own access permissions. If the object sets access permissions, either in its AppID registration or by calling CoInitializeSecurity, to allow the launching user access, the user would be able to launch the server to run as another user, then access the object.

    交互用户是当前登录到COM服务器正在运行的计算机的用户。如果将标识设置为交互式用户,则如果服务器将其类工厂注册为多用途,则所有客户端都使用服务器的同一实例。如果没有用户登录,服务器将不会运行。如果服务器具有客户端需要看到的图形用户界面(GUI),则应使用交互式用户来标识服务器的标识。然而,选择这个标识会带来一些安全隐患,因为服务器运行在登录用户的身份下,没有登录用户的知识或同意。此外,服务应用程序不能显示用户界面。有关更多信息,请参见交互式服务。
    如果COM服务器被配置为作为交互式用户运行,则在终端服务环境中,服务器将在与客户机用户身份匹配的交互式会话中启动。然而,客户端应用程序可以使用会话对象引用在一个会话中的不匹配的客户身份的服务器提供一个对象。当使用这个时,客户机应用程序可以指定任何会话,在这种情况下,服务器将作为拥有会话的用户运行,而不是启动用户。此场景中的默认访问权限将不允许启动用户在服务器上调用方法。然而,下列安全风险仍然存在:
    如果COM服务器公开COM不受COM控制的接口,如TCP端口、命名管道、LPC端口、共享内存段等,则这些启动用户可以使用这些服务器来影响服务器。COM配置为作为交互用户运行的对象应该尽可能减少此攻击面。
    COM对象可以自由设置自己的访问权限。如果对象集的访问权限,或者以AppID注册或通过调用CoInitializeSecurity,允许开展用户访问,用户就可以启动服务器运行作为另一个用户,然后访问对象。

     2、The launching user  启动用户  

    微软解释:

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms693789(v=vs.85).aspx

    This is the default setting for the application identity. When the launching user is chosen for the application's identity, each client account gets a new instance of the server and each server gets its own window station. Because of the separate server instances, launching user is the highest-level security protection identity setting. However, there are finite limits on resource consumption. Also, any GUI the server displays will not be seen by the client.

    If the application has the identity of the launching user, it runs with an impersonation token. For more information about impersonation and access tokens, see Impersonation Levels and Cloaking.

    启动用户
    这是应用程序标识的默认设置。当为应用程序的标识选择启动用户时,每个客户机帐户将获得服务器的新实例,每个服务器都有自己的窗口站。由于独立的服务器实例,启动用户是最高级别的安全保护标识设置。然而,资源消耗是有限的。此外,服务器显示的任何GUI都不会被客户端看到。
    如果应用程序具有启动用户的标识,则它将使用模拟令牌运行。为更多的信息关于模仿和访问令牌,看到模拟级别和隐形。

    3、this user  指代用户   

    Specifying a particular user (and the user's password) is the preferred identity for COM servers. The reason this identity is preferred is that no one has to be logged on the machine where the server is running for the server to run, and every client talks to the same instance of the server if the server registers its class factory as multi-use. If the server has a GUI, you should not choose this identity; if you do, the user will not be able to see the user interface.

    This type of server has a primary token and can access remote resources where a server that has the launching-user identity might not be able to. For more information about impersonation and access tokens, see Impersonation Levels and Cloaking.

    Running as a fixed user account is more secure than the interactive user identity because this identity can be assigned to the application only by someone who has the specific user's password.

    指定特定用户(和用户的密码)是COM服务器的首选标识。首选身份的原因是,没有人必须登录服务器运行服务器运行的机器,如果服务器将其类工厂注册为多用途,每个客户机将与服务器的同一实例进行会话。如果服务器有GUI,则不应选择该标识;如果您这样做,用户将无法看到用户界面。
    这种类型的服务器有一个主令牌,可以访问远程资源,其中具有启动用户身份的服务器可能无法。为更多的信息关于模仿和访问令牌,看到模拟级别和隐形。
    作为固定用户帐户运行比交互式用户标识更安全,因为只有具有特定用户密码的人才能将此身份分配给应用程序。

    4 、the system account(services only) 系统用户 (仅服务)

    Choosing this identity causes the application to be run as a service. You can set service accounts by choosing the Services option from the Control Panel. For more information, see Installing as a Service Application.

    选择此标识将使应用程序作为服务运行。您可以通过选择来自控制面板的服务选项来设置服务帐户。有关更多信息,请参见安装作为服务应用程序。






    展开全文
  • Qt实现Word文档界面样式--QtitanRibbon

    千次阅读 2017-12-04 17:03:29
    QtitanRibbon - Microsoft Ribbon for Nokia's Qt概念的实现 ...这个组件和Qt一道为获取一些应用提供了一个难得的机会,这些应用在全球三大主要平台Windows、Linux和Mac OS X上都有现代化的外观和感觉。 Qtitan

    QtitanRibbon - Microsoft Ribbon for Nokia's Qt概念的实现


    QtitanRibbon组件实现了Microsoft Ribbon for Qt的概念,设计用于任何使用Qt开发的商业应用。这个组件和Qt一道为获取一些应用提供了一个难得的机会,这些应用在全球三大主要平台Windows、Linux和Mac OS X上都有现代化的外观和感觉。

    QtitanRibbon为最终应用提供了5种主题:蓝色、黑色、浅绿色、银色和风景画。下面是真实效果的一些截图。

    Windows平台:

    QtitanRibbon QT Ribbon

    Linux平台:

    QtitanRibbon QT Ribbon

    Mac平台:

    QtitanRibbon QT Ribbon

    正如你所看到的,外观在三个平台上简直完全一样,这是我们精心设计的结果。仅仅有一个默认的区别:每个平台主题UI的初始化不同。Windows代表了经典,所以是蓝色主题。Linux平台总让人联想起黑客和爆脾气的人,因而它的初始化主题是黑色的。Mac OS X象征着智慧与奢华,所以默认主题是风景优美的图画。任何时候,Ribbsson UI的初始化主题都可以被修改,与平台无关。

    QtitanRibbon作为Ribbon UI for Nokia's Qt的实现标准


    QtitanRibbon的实现严格遵守Microsoft的标准和规范,并应用到Ribbon UI概念。Ribbon UI概念从用户中发展建立起来。因而如果您使用的是QtitanRibbon,那么您的用户能轻松地学习和快速启动您的应用。控件的组成相当于一个集合,Ribbon UI 说明书对其进行了描述。QtitanRibbon组件提供以下元素:

    QtitanRibbon QT Ribbon

    QtitanRibbon QT Ribbon

    QtitanRibbon QT Ribbon

    下表是一些已实现和计划中的元素:

    Ribbon UI Elements Stage
    Ribbon Bar Implemented
    Ribbon Tabs Implemented
    Ribbon Groups Implemented
    Application Button Implemented
    Backstage View Implemented
    Contextual Tabs Implemented
    Quick Access Bar Implemented
    Button Control Implemented
    Button Group Control Implemented
    Calendar Control Planned
    Check Box Control Implemented
    Combo Box Control Implemented
    Data/Time Picker Control Planned
    Drop-Down Button Control Implemented
    Gallery Control Implemented
    Key Tip Control Implemented
    Label Control Implemented
    Masked Text Control Planned
    Numeric Up-Down Control Implemented
    Panel Control Implemented
    Radio Button Control Implemented
    Screen Tip Control Implemented
    Scroll Bars Control Implemented
    Separator Control Implemented
    Slider Control Implemented
    Split Button Control Implemented
    Status Bar Control Implemented
    Tab Control Control Implemented
    Text Box Control Implemented
    Toggle Button Control Implemented

    本产品中,我们与Ribbon UI一起还提供了一种Style OfficeStyl(它继承自QStyle),您可以使用它创建与Microsoft Office 2007或者2010非常相似的应用。Style OfficeStyle能很好的提供5种主题:蓝色、黑色、银色、浅绿色和风景画。

    QtitanRibbon -实现细节


    这个组件100%使用原生Qt/C++设计,没有借助其他工具和第三方库。然而,每个平台上的部分代码是以不同的方式实现的,缘由于Qt的部分特性,也是为了提高渲染性能。

    QtitanRibbon支持Qt4.5.x、Qt4.6.x、Qt4.7.x、Qt4.8.x以及Qt5.x.x的所有版本。

    集成Qt Designer


    QtitanRibbon组件便捷集成了Qt Designer。这允许您在运行时管理表格中Ribbon UI的位置。

    QtitanRibbon功能特点


    概述

    QtitanRibbon是一组窗体部件集(控件元素),能帮助您轻松、快速地为应用添加下一代用户界面(见图1)。产品完全基于Qt SDK。

    QtitanRibbon QT Ribbon

    我们使用几种全新的方法为您提供市场上最佳、最全面的UI解决方案。以下是它的一些最重要的功能:

    • 与Microsoft Ribbon功能完全相同。

    • 能轻松集成到已有的或新的应用中。

    • 样式选择多变,包括Office 2007、Office 2010(蓝色、银色、黑色、浅绿色、风景画), Office 2013正在开发中。

    • 优化的绘画引擎。

    • 纯Qt代码,无条件支持Windows和Linux系统。

    QtitanRibbon使用Qt SDK通过C++编写,并支持以下环境:

    • Visual Studio 2003

    • Visual Studio 2005

    • Visual Studio 2008

    • Visual Studio 2010

    • Visual Studio 2012

    • Qt Creator

    • Qt产品集成的任何其他IDE

    • Qt 4.5 - 4.8, Qt 5 (32位/64位)

    • Windows、Linux、Mac OSX

    QtitanRibbon元素

    Ribbon

    Ribbon是用户界面的主要元素,包含了多个标签。 每个标签的内容都进行了分组(见图2、图3)。

    QtitanRibbon QT Ribbon

    图2. 主标签选项卡

    QtitanRibbon QT Ribbon

    图3. 主标签选项卡和激活的内容菜单

    组允许您自动定位窗体部件,它还有另一个非常有用的功能,可以最小化无论宽度是否改变的ribbon,并且提供对其特性的所有访问权限(见图4)。

    QtitanRibbon QT Ribbon

    图4. 基于ribbon宽度的组定位

    当一个组最小化之后,用户可以左击组打开一个弹出式窗口,通过它来访问组的控件元素。

    QtitanRibbon QT Ribbon

    图5. 访问最小化组的控制元素

     

    系统按钮

    左上角的按钮可以打开应用菜单(见图6):

    QtitanRibbon QT Ribbon

    MDI

    QtitanRibbon支持MDI(多文档界面) (见图7、图8)。

    QtitanRibbon QT Ribbon

    图7. 应用的子窗口排列

    QtitanRibbon QT Ribbon

    图8. 应用子窗口的最大化

    您也可以使用MDITabs管理子窗口。

    QtitanRibbon QT Ribbon

    图9. MDITabs的使用  

    QtitanRibbon风格

    支持以下风格:

    • Office 2007蓝色 (见图10)

    • Office 2007银色 (见图11)

    • Office 2007黑色 (见图12)

    • Office 2007浅绿色 (见图13)

    您可以在Qt用户界面的经典视图中使用上面列出的风格(见图14),这样所有Qtitan的风格都继承自QStyle。

    QtitanRibbon QT Ribbon

    图10.Office 2007蓝色

    QtitanRibbon QT Ribbon

    图11.Office 2007银色

    QtitanRibbon QT Ribbon

    图12.Office 2007黑色

    QtitanRibbon QT Ribbon

    图13.Office 2007浅绿色

    您可以在Qt用户界面的经典视图中使用上面列出的风格(见图14),这样所有Qtitan的风格都继承自QStyle。

    QtitanRibbon QT Ribbon

    控件元素(窗体部件)

    Qtitan Ribbon每一个控件元素的开发都是为了兼容了以下需求:

    • 控件元素能用于不同的环境中,例如ribbon、表格和弹出式菜单。

    • 控件元素应尽可能是一个窗口,它保存系统资源,避免一系列问题。

    • 控件元素应该有几个可视化的演示。例如,对于ribbon,控制元素的图标可大可小,文本可有可无。当ribbon的宽度发生了变化,元素能有相应的变化。

    按钮

    按钮提供了以下使用选项:

    • 支持弹出式菜单(工具按钮弹出模式)

    • 支持KeyTip

    • 支持ScreenTip

    • 支持可变和复选状态

    • 支持显示ToolButtonStyle

    • 支持文本和图像调整

    您可以依据大小和当前状态来预览ribbon上的按钮。见图15:

    QtitanRibbon QT Ribbon

    弹出式按钮

    带弹出菜单的按钮允许用户从列表中选择操作命令,它也提供一下功能(见图16):

    • 支持KeyTip

    • 支持ScreenTip

    • 支持可变和复选状态

    • 支持显示ToolButtonStyle

    • 支持文本和图像调整

    QtitanRibbon QT Ribbon

    图16.带有下拉菜单的几种按钮

    按钮具有混合功能(见图17、图18),有两种工作模式-常规按钮和带弹出式菜单按钮。允许用户从菜单列表选择命令的按钮拥有以下属性:

    • 支持KeyTip

    • 支持ScreenTip

    • 支持可变和复选状态

    • 支持显示ToolButtonStyle

    • 支持文本和图像调整

    QtitanRibbon QT Ribbon

    图17.Split Button状态选项

    QtitanRibbon QT Ribbon

    图18.Split Button状态选项

    按钮组

    您可以将小型按钮加入分组(见图19)。

    QtitanRibbon QT Ribbon

    复选框和单选按钮

    复选框和单选按钮提供了常规QCheckBox和QRadioButton的功能(见图20):

    • 能于用在ribbon和表格

    • 支持KeyTip

    • 支持ScreenTip

    • 支持可变和复选状态 

    QtitanRibbon QT Ribbon

    组合框

    ComboBox拥有常规QComboBox的所有功能(见图21):

    • 能用于ribbon和表格

    • 支持KeyTip

    • 支持ScreenTip

    • 支持可变状态

    • 支持Text Box 

    QtitanRibbon QT Ribbon

    滑动条

    滑动条控件元素允许用户在设定的范围内改变值:

    • 能用于ribbon和表格

    • 支持可变状态(见图22、图23) 

    QtitanRibbon QT Ribbon

    图22.在ribbon group中使用Slider组件

    QtitanRibbon QT Ribbon

    图23.在status bar中使用Slider组件

    SpinBox (数值升降)

    SpinBox允许用户改变其数值,并且有两个按钮:增加按钮和减少按钮。这个组件提供以下功能: 

    • 能用于ribbon和表格

    • 支持KeyTip

    • 支持ScreenTip

    • 支持可变状态

    • 支持Text Box

    QtitanRibbon QT Ribbon

    图24.Qtitan Ribbon中的SpinBox

    滚动条

    根据当前选定的主题,可以对ribbon和表格进行水平和垂直滚动操作。

    QtitanRibbon QT Ribbon

    图25.水平滚动和垂直滚动

    标签

    虽然所有的控件元素都支持自己的文本,但是在某些情况下使用标签还是更方便,它的功能如下:

    • 能用于ribbon和表格

    • 支持显示文本和图像(见图26)

    QtitanRibbon QT Ribbon

    图26.使用Label显示文本和图像

    选项卡控件

    常规控件元素QTabBar是通过选定的主题定义的。

    QtitanRibbon QT Ribbon

    图27.TabControl in QtitanRibbon

    状态栏

    标准状态栏(QStatusBar)的外观也取决于当前选定的主题。
    您也可以使用状态栏中的以下控件元素:

    • 下压按钮

    • 切换按钮

    • 进度条

    • 滑动条

    • 标签

    QtitanRibbon QT Ribbon

    图28.StatusBar in QtitanRibbon

    类型 标题 发布时间
    版本更新 QtitanRibbon v4.13.0

    跨平台Ribbon UI组件QtitanRibbon发布v4.13.0,新版本为Office 2013-1016主题中的OfficePopupWindow添加了样式。

    2017-11-17
    版本更新 QtitanRibbon v4.12.0

    跨平台Ribbon UI组件QtitanRibbon发布v4.12.0,新版本添加了对Qt 5.9的支持。

    2017-08-15
    文章 【更新】Ribbon UI组件QtitanRibbon发布v4.13.0|附下载

    跨平台Ribbon UI组件QtitanRibbon发布v4.13.0,新版本为Office 2013-1016主题中的OfficePopupWindow添加了样式。

    2017-11-17
    文章 【更新】Ribbon UI组件QtitanRibbon发布v4.12.0|附下载

    跨平台Ribbon UI组件QtitanRibbon发布v4.12.0,新版本添加了对Qt 5.9的支持。

    2017-08-15
    展开全文
  • 4、按钮  JButton类用来定义按钮。JButton类的常用方法如下: ...  >setText():设置按钮文字; ... >setIcon():设置按钮图标。... 通过组建的setMnemonic()方法可以设置组件Mnemonic助记符。通过组件的setTipText

    4、按钮

           JButton类用来定义按钮。JButton类的常用方法如下:

           >addActionListener():注册点击事件监听器;

           >setText():设置按钮文字;

           >setIcon():设置按钮图标。

           通过组建的setMnemonic()方法可以设置组件Mnemonic助记符。通过组件的setTipText可以设置组建的ToolTip提示信息。

           在Swing中,JButton是有AbstractButton类派生的。AbstractButton类派生了两个组件:JButton和JtoggleButton组件。JButton是Swing的按钮,而ToggleButton组件是单选按钮和复选框的基类。下面是一个按钮的应用程序。

    public class test extendsJFrame implements ActionListener{
        JButton jb = new JButton("Clickme!");
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(2, 2));
            this.add(jb);
            jb.addActionListener(this);
            jb.setMnemonic('b');//给按钮设置组件助记符
            jb.setToolTipText("I am abutton");
            this.setBounds(10, 10, 600, 400);
            this.setVisible(true);
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args){
            new test();
        }
        @Override
        public void actionPerformed(ActionEvent e){
            this.jb.setText("Clicked");
        }
    }

    5、复选框

           在Swing中,用JcheckBox类来定义复选框。复选框和单选按钮有点类似,但是一组复选框中可以有任何数量的复选框被选中。复选框可以为每一次的单击操作添加一个事件。但平常只会监听事件,因为它们让客户来确定该单击操作时选中还是取消选中复选框。

           复选框又被称为检测盒。JcheckBox提供选中/未选中两种状态,当用户单击复选框时改变复选框原来设置的状态。

    6、弹出式菜单

           JPopupMenu是一种Menu的组件,因此在使用JPopupMenu时都需要一个Container来放置JPopupMenu。

           通过JpopupMenu类可以定义弹出式菜单,其重要方法有:

           >add(JmenuItem e):(往菜单中增加菜单项)

           >show():(显示菜单)

           通过JMenuItem类来定义菜单项,通过addActionListener()为菜单项增加事件处理。

           JpopupMenu是一个可弹出并显示一系列选项的小窗口,可用于用户在菜单栏上选择选项时显示菜单,还可以用于当用户选择菜单项并激活时显示“右拉式(pull-right)“菜单。通过下面的程序进一步了解相关的知识:

    public class test extendsJFrame {
        //定义一个弹出式菜单
        JPopupMenu jpm = new JPopupMenu();
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(2, 2));
            this.setBounds(10, 10, 600, 400);
            this.setVisible(true);
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //引入jiaPopMenu()方法
            this.jiaPopMenu();
        }
        public void jiaPopMenu(){
            JMenuItem item = newJMenuItem("A");
            //为A添加监听事件
            item.addActionListener(newActionListener() {
                public voidactionPerformed(ActionEvent e) {
                    System.out.println("AClicked!!!");
                }
            });
            jpm.add(item);//将弹出项添加到菜单
            //定义菜单项
            item = new JMenuItem("B");
            item.addActionListener(newActionListener() {
                public voidactionPerformed(ActionEvent e) {
                    System.out.println("BClicked");
                }
            });
            jpm.add(item);
            //编写右键弹出单击事件
            this.addMouseListener(newMouseAdapter() {
                public voidmouseReleased(MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        jpm.show(e.getComponent(),e.getX(), e.getY());
                    }
                }
            });
        }
        public static void main(String[] args){
            new test();
        }
    }

           使用JPopupMenu组件实现右键快捷菜单功能,并使用ActionListener的对象来将菜单激活,当右击时即可弹出菜单。

    7、单选按钮

           单选按钮的实质就是在一组按钮中一次只能有一个按钮被选中。单选按钮的外观类似复选框,但是复选框没有对可以选择的选项数目进行限制。对于每一组的单选按钮,必须创建一个ButtonGroup对象实例并且将每一个单选按钮添加到该ButtonGroup对象中。下面的实例讲解的单选按钮的基本用法:

    public class test extendsJFrame {
        //定义两个单选选项
        JRadioButton r1 = newJRadioButton("No.1");
        JRadioButton r2 = newJRadioButton("No.2");
        //定义一个按钮组
        ButtonGroup bg = new ButtonGroup();
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(3, 1));
            this.setBounds(10, 10, 600, 400);
            this.setVisible(true);
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //引入jiaPopMenu()方法
            this.Add();
        }
        public void Add(){
            //将单选按钮加入按钮组中
            bg.add(r1);
            bg.add(r2);
            //将单选按钮加入布局管理器
            this.add(r1);
            this.add(r2);
            //默认选中r2
            r2.setSelected(true);
        }
        public static void main(String[] args){
            new test();
        }
    }

    8、下拉列表框

           下拉列表框可以让人感觉到整个界面很简洁,在大的网页中都能感觉到这一点。列表可以有许多选项,所以它们通常被放置在一个滚动窗格中。组合框与下拉列表框相似,区别在于使用组合框时用户可以不从列表中选择项目,还可以选择一个项目。在某些版本的组合框中,还可以输入自己的选择,如浏览器的地址栏。

           JComboBox方法很多,它们主要用来管理列表中的数据:

           >addItem():添加一个项目到JComboBox

           >get/setSelectedIndex():获取/设置JComboBox中选中项目的索引

           >get/setSelectedItem():获取/设置选中的对象

           >removeAllItems():从JComboBox删除所有对象

           >remoteItem():从JComboBox删除特定对象

           下面是一个下拉别表框的实例,从中可以更详细的了解到下拉列表框的使用:

    public class test extendsJFrame {
        //定义下啦菜单
        JComboBox jcb = new JComboBox();
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(3, 1));
            this.setBounds(10, 10, 600, 400);
            //引入jiaPopMenu()方法
            this.Add();
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        public void Add(){
            String[] str = new String[10];
            for (int i = 0; i < 10; i++) {
                //jcb.addItem("此方法直接将内容添加进列表中" +i);
                str[i] = "选项" + i;
            }
            //或者使用Vector来作为item
            //Vector v = new Vector();
            //v.add("选项1");
            //v.add("选项2");
            //v.add("选项3");
            //jcb = new JComboBox(v);
            jcb = new JComboBox(str);
            this.add(jcb);
        }
        public static void main(String[] args){
            new test();
        }
    }

    9、选项卡

           当今博客盛行的时代,选项卡经常被用到。在博客中,用户经常会改变北京样式,用不同的风格体现个性。而这些完全可以用选项卡来制作。

           使用JTabbedPane类可以把几个组件放在一个组件中,如面板。用户可以通过选择对应于目标组件的选项卡来选择要查看的组件。要创建一个选项卡窗格,只要实例化一个JTabbedPane对象,创建要显示的租金啊,然后再将这些组件添加到选项卡窗格中即可。

           当创建一个要添加到选项卡窗格的组件时,无论当前可见的是哪个子选项卡,每一个子选项都将获得相同的显示空间。只不过当前显示窗格的高度会比其他窗格稍高一点,以进行区分。下面是一个应用实例:

    public class test extendsJFrame {
        //定义选项卡
        JTabbedPane jtb = newJTabbedPane(JTabbedPane.BOTTOM);
        //定义选项
        JPanel jp1 = new JPanel();
        JPanel jp2 = new JPanel();
        JPanel jp3 = new JPanel();
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(1, 1));
            this.setBounds(10, 10, 600, 400);
            //引入jiaPopMenu()方法
            this.Add();
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        public void Add(){
            //设置选项事件
            jp1.setBackground(Color.green);
            jp2.setBackground(Color.red);
            jp3.setBackground(Color.BLUE);
            this.add(jtb);
            //将选项加入选项卡中
            jtb.add("绿色背景", jp1);
            jtb.add("红色背景", jp2);
            jtb.add("蓝色背景", jp3);
        }
        public static void main(String[] args){
            new test();
        }
    }

    10、滑杆

           在应用程序中JSlider支持数值变化。它是一种迅速而简单的方式,不仅能让用户以可视形式获得他们当前选择的反馈,还能得到可以接受的值的范围。

           JSlider类定义了滑杆组件,它的重要方法有:

           >setMaxorTickSpacing():设置主刻度

           >setMinorTickSpacing():设置次刻度

           >setPaintTicks():设置是否绘制刻度

           >setPaintLabels():设置是否绘制标签

           >addChangeListener():刻度变化事件处理

           >getValue():获取当前滑块位置值

           >setValue():设置滑块初始位置

           下面是具体应用实例:

    public class test extendsJFrame implements ChangeListener{
        JSlider js = new JSlider();
        JLabel jl = new JLabel("20");
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(4, 1));
            this.setBounds(10, 10, 600, 400);
            //引入jiaPopMenu()方法
            this.Add();
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        public void Add(){
            js.setMaximum(100);//最大刻度
            js.setMinimum(0);//最小刻度
            js.setOrientation(JSlider.HORIZONTAL);
            js.setValue(20);//设置滑杆初始位置
            js.setMajorTickSpacing(20);//设置主刻度
            js.setMinorTickSpacing(5);//次刻度
            js.setPaintTicks(true);//绘制刻度
            js.setPaintLabels(true);//绘制标签
            this.add(js);
            this.add(jl);
            js.addChangeListener(this);
           
        }
        public static void main(String[] args){
            new test();
        }
        public void stateChanged(ChangeEvent e) {
            jl.setText(js.getValue() +"");
        }
    }

    11、滚动条

           在Swing中,组件中的内容超出其区域时,就需要使用滚动条。它和网页的滚动条相似。JscrollPane的方法如下:

           >getHorizontalScrollBar():返回水平的JscrollBar组件

           >getVerticalScrollBar():返回垂直的JscrollBar组件

           >get/setHorizontalScrollBarPolicy():Always、Never或As Needed

           >get/setVerticalScrollBarPolicy():与水平函数相同

           下面是对方法的演示:

    public class test extendsJFrame {
        JLabel jl = new JLabel();
        JScrollPane jsp = new JScrollPane(jl);
        JScrollBar jsb =jsp.getVerticalScrollBar();
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(1, 2));
            this.setBounds(10, 10, 600, 400);
            //引入jiaPopMenu()方法
            this.Add();
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        public void Add(){
            this.add(jsp);
            jl.setIcon(new ImageIcon("D:\\桌面\\桌面\\image062_s.jpg"));
            //监听滚动条的滚动
            jsb.addAdjustmentListener(newAdjustmentListener() {
                @Override
                public voidadjustmentValueChanged(AdjustmentEvent e) {
                   System.out.println(jsb.getModel() + "");
                }
            });
            System.out.println("处理滚动条的四个基本属性的数据模型:minimum、maximum、value 和extent。" + jsb.getModel());
        }
        public static void main(String[] args){
            new test();
        }
    }

    12、列表框

           列表框是一个非常有用的组件,也越来越受到重视。尤其是它具有多选能力,在选择选项时可以按住Shift键进行多选。

           JList是一个有用的组件,其类似于一组复选框或一组单选按钮。通过设置,允许对列表框中的项目进行多项选择。JList的方法如下:

           >getSelectedIndex():获取选中的第一个索引

           >getSelectionMode():设置单项选择还是多项选择

           >getListData():设置在列表框中使用数据的模型

           >getSelectedValue():获取选中的第一个值

           列表框经常与滚动条搭配,因为如果没有滚动条,列表框中的内容可能无法完全显示,下面是一个实例:

    public class test extendsJFrame {
        //定义列表框
        JList jl = new JList(new String[]{"北京" , "天津" , "上海" , "大连" , "青岛" , "武汉" , "西安"});
        JScrollPane jsp = new JScrollPane(jl);
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(4, 2));
            this.setBounds(10, 10, 600, 400);
            //引入jiaPopMenu()方法
            this.Add();
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        public void Add(){
            this.add(jsp);
        }
        public static void main(String[] args){
            new test();
        }
    }

    13、菜单

           JMenu、JMenuItem和JMenuBar组件是在JFrame中开发菜单系统的主要构造块。任何菜单系统的基础都是JMenuBar。它们就像Word中的文件、编辑一样,下面还有新建、复制、粘贴等一系列内容。其方法如下:

           JMenuItem和JMenu:

           >get/setAccelerator():获取/设置快捷键

           >get/setText():获取/设置菜单的文本

           >get/setIcon():获取/设置菜单使用的图片

           JMenu专用:

           >add():将JMenu或JMenuItem添加到JMenuBar或JMenu中。

           JMenu组件使用来存放和整合JMenuItem的组件,也是构成一个菜单不可缺少的组件之一。实现包含JMenuItem的弹出窗口,用户选择JMenuBar上的选项时会显示该JMenuItem。下面是一个关于菜单的应用实例:

    public class test extendsJFrame {
        //定义菜单条组件
        JMenuBar jmb = new JMenuBar();
        //定义3个菜单组件
        JMenu jm1 = new JMenu("文件");
        JMenu jm2 = new JMenu("编辑");
        JMenu jm3 = new JMenu("新建");
        //定义3个菜单项组件
        JMenuItem jmi1 = newJMenuItem("word");
        JMenuItem jmi2 = new JMenuItem("复制");
        JMenuItem jmi3 = new JMenuItem("粘贴");
        public test() throws HeadlessException {
            this.setLayout(new GridLayout(1, 1));
            this.setBounds(10, 10, 600, 400);
            //引入jiaPopMenu()方法
            this.Add();
            //设置当单机窗口的关闭按钮时退出
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        public void Add(){
            //调整组件间的包含关系
            jmb.add(jm1);
            jmb.add(jm2);
            jm1.add(jm3);
            jm3.add(jmi1);
            jm2.add(jmi2);
            jm2.add(jmi3);
            this.setJMenuBar(jmb);
        }
        public static void main(String[] args){
            new test();
        }
    }

           包含关系为:JmenuBar包含JMenu,JMenu可以包含JMenu和JMenuItem

    展开全文
  • JDeveloper 界面主要区域及功能介绍

    千次阅读 2013-10-01 20:12:01
    转自:...打开 JDeveloper 后,其主界面显示如下所示,在同一 IDE 中可以开发各类应用而无需安装额外插件: 图表 1 JDeveloper 开发界面在 1024
  • 2016年10月我参加了在北京举行的DevDays Asia 2016 - Office 365应用开发”48小时黑客马拉松“,我开发的一个Word Add-In Demo——WordTemplateHelper获得了二等奖。在会场有幸结识了陈希章老师,在与陈老师的交流中...
  • JAVA登录界面的实现(一)

    万次阅读 多人点赞 2018-06-16 09:42:57
    学习JAVA的过程中,登录界面是多数人第一实现的小程序。今天我们就来做一下登录界面。当然在动手写代码之前我们要先做一些准备工作,我们要先了解JAVA提供的图形界面类有哪些,以及有哪些常用的组件类和辅助类。 ...
  • C++开发Office插件:实现Word插件

    万次阅读 多人点赞 2017-06-08 08:53:04
    简介本文以Word插件为例,介绍如何使用C++实现一完整的Office插件。简单来说Office插件就是一实现了IDTExtensibility2和IRibbonExtensibility两接口的COM组件。IDTExtensibility2提供了Office插件接口,...
  • C#OOP之十三 组件、程序集与反射

    千次阅读 2016-04-30 20:44:42
    组件技术像搭积木游戏一样,在搭积木时,我们知道并不是任何的两积木都可以组合,能组合的积木之间必定存在可以衔接的接口,同时,已经搭好的积木可以作为一整体的大积木,被用来与其他积木组合。 在软件领域,...
  • WORD模型

    千次阅读 2012-02-18 22:40:56
    Word组件对象模型  Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Application 类和 Document 类。这两个类非常重要,因为在大...Application 对象提供整个应用程序的包装,每个
  • Word XPWord XP 中目录的编制方法 1.单击要插入目录的位置。 2.指向"插入"菜单上的"引用",再单击"索引和目录"。 3.单击"目录"选项卡。 4.若要使用现有的设计,请在"格式"框中单击进行选择。 5.根据需要,选择...
  • word技巧

    千次阅读 2018-03-01 21:40:22
    word 高效经典教程(整理版)目录一分钟驾驭word 高效经典教程(整理版)... 6A、基础知识... 61、度量单位... 62、WORD中文字字号与磅的对应关系... 63、字体文件格式... 7B、文本编辑... 71、快速移动文档... 72、...
  • 细品RibbonX(2):认识Office的新界面功能区(Ribbon) 资料整理来自于论坛完整版下载地址:http://download.csdn.net/download/nodeman/10264659  Loading ...  在Office 2007中,Microsoft使用了称作Ribbon...
  • http://blog.csdn.net/zhmxy555/article/details/7688515作者:毛星云 邮箱: happylifemxy@163.com  这节笔记主要讨论DirectX 11现有的组件构成,随着DirectX各个版本的更新被时代抛弃的一些组件以及第一围绕着...
  • java 制作word模板

    千次阅读 2020-10-29 16:54:49
    背景:用于实现动态调整word模板中的内容 条件:office组件中格式为docx的word文件 对象与属性关系,如图所示
  • 实验07《训练功能的用户界面编程》实验指导书文/尚小卫 【工作目标】1 完成期限:4小时。2 工作成果:实现一游戏...实现一交互业务流程中各个训练和游戏业务环节的界面处理功能。 根据原始版整理完成全部UI界面
  • word 模型

    千次阅读 2008-11-03 22:55:00
    Word组件对象模型 Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两主类是 Application 类和 Document 类。这两类非常重要,因为在大部分时间里,您要么是在使用 Word 应用程序本身,...
  • C++ Builder组件属性详解

    千次阅读 2019-04-12 08:43:30
    尽管C++Builder的组件种类繁多,组件又都有许多不同的属性,但是在这些众多的属性中有相当一部分是大多数组件所共有的。因此我们应当主要掌握这些共有组件。 在设计时设置属性一般是通过属性窗口来进行的。在...
  • JAVA的图形用户界面布局GUI入门(上)

    万次阅读 多人点赞 2017-09-14 21:29:25
    Java提供了三主要包 做GUI开发:java.awt 包 – 主要提供字体/布局管理器 javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框) java.awt.event 包 – ...界面主要包括:组件/控件 – 就是界面中的
  • 程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换) http://chinesetrad.joelonsoftware.com/uibook/chapters/1.html程序员的用户界面设计手册第1章: 控制你的环境使你快乐 作者: Joel ...
  • 前端组件

    2020-12-21 10:40:47
    组件化 [外链图片转存失败,源站可能有... 什么是组件化? 前端组件化开发,就是将页面的某一部分独立出来,将这一部分的数据层(M)、视图层(V)和控制层(C)用黑盒的形式全部封装到一个组件内,暴露出一些开箱即用
  • Microsoft Office 2010组件介绍

    千次阅读 2014-12-23 16:39:52
    由于许多初级开发人员未曾使用过或...每一代的Microsoft Office都有一个以上的版本,每个版本都根据使用者的实际需要,选择了不同的组件Word  Microsoft Word是文字处理软件。它被认为是Office的主要程序。它在文字
  • 界面原型设计工具开源软件

    千次阅读 2013-10-25 17:26:48
    界面原型图绘制工具 Pencil Pencil 是一款开源的原型图绘制工具,手绘风格的,就像自己在纸上画的那样。Pencil 还可以用来绘制各种架构图和流程图,同时还提供 Firefox 的插件(点击这里安装)。更多...
  • 苹果 IOS界面交互控件一览

    千次阅读 2015-06-04 14:22:22
    文章来自百度百科:...开发者在iOS平台会遇到界面和交互如何展现的问题,控
  • ExtJS做的一信息管理界面

    千次阅读 多人点赞 2013-08-19 22:48:52
    前段时间公司让我们学习ExtJS,学习了一礼拜,完成了小练习,思来想去决定做总结,但是又懒得敲word,于是就在代码上行都加上注释,以后忘记了就翻开来看看。 在这里给出代码。 完成的功能如图所示。   ...
  • 一、引言  本文主要介绍通过Word中的书签Bookmark来向Word中写入我们自定义的数据。... 比如有这么一文档,内容如下:  要求我们在程序里面动态的生成这些数据然后补充进word文档里面,此时如果我们再
  • 学习笔记之Android四大核心组件详解

    万次阅读 2016-09-21 18:46:35
    概述Android四大核心组件指的是Activity,Service,ContentProvider,...定义与作用: Activity的中文意思是活动,代表手机屏幕的一屏,或是平板电脑中的一窗口,提供了和用户交互的可视化界面。Activity是用于处理UI
  • 百度上传组件web uploader介绍+快速入门案例

    万次阅读 多人点赞 2016-03-25 18:32:00
    百度上传组件web uploader入门公司的项目需要文件上传的功能,之前使用的是SWFUpload这上传组件,我将其替换成了web uploader。 SWFUpload组件SWFUpload 最初是Vinterwebb.se 开发的客户端文件上传工具。它联合...
  • MATLAB与word的交互

    万次阅读 2017-10-14 11:46:14
    本文档所要解决的问题是如何直接在 WORD 中进行 MATLAB 的命令操作并将结果直接显示在 WORD 中。l列举了几常见的操作命令。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,144
精华内容 7,657
关键字:

word界面每个组件的功能运用