后一页
前一页
回目录
6. DataWindow的打印输出(续)

----PowerBuilder 提 供 了 一 组 打 印 控 制 函 数 来 控 制 要 交 给 打 印 机 打 印 的 对 象。 第 一 个 函 数P rintOpen() 在 这 章 的 前 面 我 们 已 介 绍 过 了, 其 它 还 有:

----PrintCancel(print_job_number)

---- 这 个 函 数 将 中 止 打 印 作 业 号 所 打 印 的 作 业, 不 发 送 任 何 内 容 给 打 印 机。

----datawindowcontrol.PrintCancel()

---- 这 个 函 数 与 上 一 函 数 的 区 别 是: 这 个 函 数 取 消 的 是 用Datawindowcontrol.Print() 提 交 的 作 业。

----PrintClose(print_job_number)

---- 这 个 函 数 将 关 闭 指 定 的 打 印 作 业 并 且 把 它 发 给 打 印 机( 或 者 假 脱 机 程 序)。 为 了 避 免 挂 起 打 印 作 业, 所 有 打 开 的 打 印 作 业 都 应 在 应 用 的 结 束 前 被 关 闭 或 取 消。

----PrintDefineFont(print_job_number,fontnumber,facename,height,weight,font-pit ch,fontfamily,italic,underline)

---- 你 可 以 用 这 个 函 数 定 义 字 型。Power-Builder 允 许 在 一 个 打 印 作 业 中 使 用 八 种 字 型, 用 这 个 函 数 可 定 义 其 中 的 任 一 个。 这 个 字 型 所 属 的 打 印 作 业 号 由Print_job_number 参 数 指 定,fo nt_number 参 数 是 这 个 打 印 作 业 所 采 用 的 字 型 号(1-8)。 其 余 的 参 数 描 述 了 字 型 如 何 显 示, 是 否 斜 体 字、 粗 体 和 下 划 线 等。facename 参 数 是 一 个 包 含 了 你 所 定 义 的 字 体 名 字 的 字 符 串( 例 :courier 100CPI)。height 参 数 是 你 所 需 的 以 千 分 之 一 寸 为 单 位 的 字 体 的 高 度( 例:250 将 是 一 个18 点 阵courier 10 CPI 字 体),height 参 数 也 可 使 用 一 负 值 来 表 示 点 阵 数 指 定 点 尺 寸( 例 :-18 是18 点 阵)。weight 参 数 值 是 您 所 要 的 字 型 的 笔 画 权 值( 例:400 是 平 常 正 文,700 是 粗 体) 。fontpitch 参 数 是 一 个 枚 举 数 据 类 型, 它 指 定 了 字 体 的 间 距(Default!,Fixed! 或variable! );fontfamily 参 数 也 是 一 个 枚 举 类 型, 指 定 了 字 体 系 列(AnyFont!,Decorative!,Mod-ern!,R oman!,Script!,Swiss!)。 这 两 种 参 数 只 在 基 于Windows 的 操 作 系 统 中 使 用, 在Macintosh 等 机 器 中 不 能 使 用。italic 参 数 是 一 个 布 尔 型 变 量, 指 定 字 体 是 斜 体(True) 或 非 斜 体(False),un derline 参 数 也 是 一 个 布 尔 值, 用 法 同 上。

----PrintOpen()

---- 这 个 函 数 已 在 这 章 的 开 始 讲 述 过 了, 它 定 义 一 个 打 印 作 业 以 便 将 所 有 的 打 印 项 成 组 发 送 给 打 印 机。 它 的 返 回 值 是 唯 一 的 打 印 作 业ID, 如 果 返 回 值 为 负, 则 意 味 着 产 生 错 误。

----PrintPage(print_job_number)

---- 这 个 函 数 将 指 定 的 打 印 作 业 的 当 前 页 传 送 给 打 印 机( 或 假 脱 机 程 序), 并 另 起 一 页 用 于 之 后 的 打 印 集。

----PrintSend(print_job_number,string{,zero_character})

---- 这 个 函 数 在 打 印 作 业 中 发 送 一 个 特 定 的 字 符 串 给 打 印 机。 这 个 字 符 串 一 般 是 一 个 包 含 转 义 字 符 的 命 令 串 用 来 启 动 或 操 作 打 印 机。 这 些 打 印 机 的 控 制 代 码 因 打 印 机 的 不 同 而 不 同, 您 应 查 询 您 的 打 印 机 手 册 来 得 到 正 确 的 代 码。

---- 这 个 与 打 印 机 进 行 通 信 的 字 符 串 应 是 一 个ASCII 码 集, 并 以ASCII 码0 来 结 束。 如 果 你 需 要 发 送ASCII 码0, 你 可 以 用 另 外 的 一 个 字 符 来 替 代0, 给 定 的 这 个 替 代 字 符 的ASCII 值 由 可 选 参 数 zero-character 来 指 定。 这 个 函 数 一 般 用 于 改 变 纸 的 定 向(Landscape 或por-trait) 或 者 改 变 打 印 用 的 纸 盘 等。

----PrintSetFont(print_job_number,fontnumber)

---- 这 个 函 数 设 置 当 前 打 印 机 字 体, 它 是 你 使 用PrintDefineFont() 函 数 中 定 义 的 八 个 字 体 中 的 一 个。

----PrintSetSpacing(print_job_number,spacing)

---- 这 个 函 数 使 用Spacing 参 数 来 决 定 正 文 行 之 间 的 行 距。 这 个 值 乘 以 当 前 字 体 高 得 到 行 距 , 缺 省 值 是1.2。

----PrintSetup()

---- 这 个 函 数 调 用Windows 的Print Setup 对 话 框, 实 际 显 示 的Setup 窗 口 依 赖 于 你 所 安 装 的 打 印 机 驱 动 程 序。

----PrintWidth(print_job_number,string)

---- 这 个 函 数 的sting 参 数 返 回 字 符 串 的 宽 度( 以 千 分 之 一 寸 为 单 位)。 返 回 值 的 大 小 是 依 赖 于 当 前 选 择 的 字 体。

----PrintX(print_job_number)

---- 这 个 函 数 返 回 当 前 打 印 光 标 的X 坐 标( 水 平) 值。

----PrintY(print_job_number)

---- 这 个 函 数 返 回 当 前 打 印 光 标 的Y 坐 标( 垂 直) 值。

---- 除 非 特 别 说 明, 上 述 函 数 的 返 回 值1 意 味 着 成 功,-1 意 味 着 失 败。

DataWindow 控 件 的 打 印 属 性

---- 使 用modify 函 数, 我 们 可 以 改 变DataWindow 的 打 印 属 性。 在 打 印DataW-indow 之 前, 我 们 可 以 调 用 如 图 所 示 的 窗 口, 从 而 得 到 我 们 想 让 用 户 设 置 的 参 数。 这 个 窗 口 在PowerBuilder E nterprise 的 实 例 库 中, 您 也 可 以 在 直 接 调 用 它 前 对 其 显 示 界 面 进 行 汉 化 和 作 适 当 修 改。

---- 例 如, 我 们 使 用 下 面 语 句 来 改 变 我 们 想 打 印 的 份 数。

----dw_data..Modify("DataWindow.Print.Copies=3")

---- 你 可 以 使 用PowerBuilder Enterprise 打 包 软 件DWSYN40.EXE----DataWindow 语 法 生 成 器 来 建 立Modify 语 句。

---- 下 面 所 列 的 可 以 修 改 的 参 数 全 部 以DataWindow.print 为 前 缀, 后 接 这 个 属 性。

----Collate=Yes or No( 缺 省 为no, 不 作 校 对)

---- 这 个 属 性 用 来 指 示 是 否 要 对 打 印 进 行 校 对。 校 对 通 常 较 慢, 因 为 整 个 打 印 过 程 必 须 反 复 几 次 以 得 到 一 个 校 对 后 的 结 果。

----Color=1( 彩 色)or 2( 单 色)

---- 这 个 属 性 指 示 传 送 给 打 印 输 出 的 是 彩 色( 如 果 你 有 一 台 彩 色 打 印 机) 还 是 单 色。

----Columns= <an integer >( 缺 省 为1)

---- 这 个 属 性 用 来 指 示DataWindow 以 报 纸 风 格 打 印 在 一 页 上 的 栏 的 数 量。

----Columns.Width= <an integer >

---- 这 个 属 性 指 示 以 报 纸 风 格 打 印 的 栏 的 宽 度( 基 于 为DataWindow 指 定 的 单 位)。

----Copies= <an integer >

---- 这 个 属 性 指 示 你 所 需 的 打 印 的 数 量。

----DocumentName= <a string >

---- 这 个 属 性 可 以 让 你 为 文 件 设 置 一 个 名 字。 这 个 名 字 在DataWindow 传 送 给 打 印 机 时 在 打 印 序 列 中 出 现。

----Duplex=1( 单 一)or 2( 水 平)or 3( 垂 直)

---- 这 个 属 性 指 示 打 印 输 出 的 方 向。

----Filename= <filename string >

---- 这 个 属 性 仅 当 把DataWindow 输 出 为 一 个 文 件 时 才 有 用。 这 个 属 性 包 含 的 字 符 串 是 将 在 磁 盘 中 存 储 的 文 件 的 名 字。

----Margin.Bottom= <an integer >

---- 这 个 属 性 为 一 整 型 指 示 页 面 下 部 空 白 的 宽 度( 用DataWindow 指 定 的 单 位)

----Margin.Left= <an integer >

---- 功 能 与Margin.Botton 相 同, 但 指 示 的 是 左 侧 空 白 宽 度。

----Margin.Right= <an integer >

---- 功 能 与Mangin.Bottom 相 同, 但 指 示 的 是 右 侧 空 白 宽 度。

----Margin.Top= <an integer >

---- 功 能 与Mangin.Bottom 相 同, 但 指 示 的 是 顶 端 空 白 宽 度。

----Orientation=0( 打 印 机 的 缺 省 设 置) 或2( 横 向 打 印) 或3( 纵 向 打 印) 这 个 属 性 用 来 指 示 打 印 定 向。 你 可 以 使 用 打 印 机 缺 省 设 置, 或 者 设 置 成Landscape 或Portrait 模 式, 覆 盖 缺 省 的 打 印 设 置。

----Page.Range= <page range string >

---- 这 个 属 性 为 一 字 符 串 指 明 你 要 打 印 的 页 数。 在 字 符 串 中 的 数 字 用 逗 号 分 隔, 或 者 数 字 之 间 用 由 一 横 线 分 隔 表 示 一 范 围 或 两 者 同 时 使 用, 例 如:"1,2,3,6-12", 空 字 符 串 表 示 要 打 印 所 有 的 页。

----Page.RangeInclude=0( 全 部 打 印) 或1( 打 印 奇 数 页) 或2( 打 印 偶 数 页)

---- 这 个 属 性 用 来 指 示 在Page.Range 指 示 的 范 围 中 哪 些 页 要 打 印。 你 可 以 先 选 择 打 印 偶 数 页 , 然 后 将 纸 放 入 打 印 机 中, 再 选 择 奇 数 页 打 印。 这 一 功 能 像 在 打 印 书 时 那 样, 需 在 纸 的 两 面 打 印 时 非 常 有 用。

----Paper.Size= <an integer >

---- 这 一 属 性 用 来 指 示 打 印 纸 的 尺 寸。 可 接 受 的 值 如 下:

----0- 缺 省

----1-Letter 8 1/2 x 11 in

----2-LetterSmall 8 1/2 x 11 in

----3-Tabloid 17 x 11 inches

----4-Ledger 17 x 11 in

----5-Legal 8 1/2 x 14 in

----6-Statement 5 1/2 x 8 1/2 in

----7-Executive 7 1/4 x 10 1/2 in

----8-A3 297 x 420 mm

----9-A4 210 x 297 mm

----10-A4 Small 210 x 297 mm

----11-A5 148 x 210 mm

----12-B4 250 x 354

----13-B5 182 x 257 mm

----14-Folio 8 1/2 x 13 in

----15-Quarto 215 x 275 mm

----16-10 x 14 in

----17-11 x 17 in

----18-Note 8 1/2 x 11 in

----19-Envelope #9 3 7/8 x 8 7/8

----20-Envelope #10 4 1/8 x 9 1/2

----21-Envelope #11 4 1/2 x 10 3/8

----22-Envelope #12 4 x 11 1/276

----23-Envelope #14 5 x 11 1/2

----24-C size sheet

----25-D size sheet

----26-E size sheet

----27-Envelope DL 110 x 220 mm

----28-Envelope C5 162 x 229 mm

----29-Envelope C3 324 x 458 mm

----30-Envelope C4 229 x 324 mm

----31-Envelope C6 114 x 162 mm

----32-Envelope C65 114 x 229 mm

----33-Envelope B4 250 x 353 mm

----34-Envelope B5 176 x 250 mm

----35-Envelope B6 176 x 125 mm

----36-Envelope 110 x 230 mm

----37-Envelope Monarch 3.875 x 7.5 in

----38-6 3/4 Envelope 3 5/8 x 6 1/2 in

----39-US Std Fanfold 14 7/8 x 11 in

----40-German Std Fanfold 8 1/2 x 12 in

----41-German Legal Fanfold 8 1/2 x 13 in

----Paper.Source= <an integer >

---- 这 一 属 性 是 一 个 整 型 值, 指 明 纸 的 来 源。 可 接 受 的 值 如 下:

----0-Default

----1-Upper

----2-Lower

----3-Middle

----4-Manual

----5-Envelope

----6-Envelope manual

----7-Auto

----8-Tractor

----9-Smallfmt

----10-Largefmt

----11-Large capacity

----14-Cassette

----Preview=Yes( 进 入 打 印 预 览 状 态) 或No( 缺 省- 退 出 打 印 预 览 状 态)

---- 这 个 属 性 允 许 您 的DataWindow 进 入 和 退 出 打 印 预 览 状 态。 这 种 状 态 可 以 所 见 即 所 得 地 看 到 用 户 即 将 打 印 的 结 果。

----Preview.Rulers=Yes( 显 示 标 尺) 或No( 缺 省- 不 显 示 标 尺)

---- 这 个 属 性 是 指Print Preview 状 态 下, 是 否 要 在DataWindow 对 象 上 显 示 标 尺。

----Preview.Zoom= <an integer >

---- 这 个 属 性 是Print Preview 状 态 下, 为 预 览 的DataWindow 指 定 一 个 放 缩 因 子。 缺 省 值 为1 00%(Preview.zoom=100%)

----Prompt=Yes( 缺 省- 显 示 提 示) 或No( 无 提 示)

---- 这 个 属 性 可 以 控 制PowerBuilder 显 示 一 个 允 许 用 户 在 作 业 打 印 前 取 消 打 印 作 业 的 提 示。

----Quality=0( 缺 省)or 1( 高)or 2( 适 中)or 3( 低)or 4( 草 稿)

---- 这 个 属 性 可 以 选 择 打 印 输 出 的 质 量。

----Scale= <an integer >

---- 这 个 属 性 指 定 打 印 输 出 放 大 或 缩 小 的 比 例。

制 作 一 个 屏 幕 打 印: 如 何 打 印 全 屏

----PowerBuilder 4.0 的 一 个 新 特 征 是 可 以 把 屏 幕 图 像 提 交 打 印 作 业, 在 纸 上 的 任 一 点 打 印 屏 幕。 我 们 使 用PrintScreen() 函 数 实 现 这 一 功 能。

----PrintScreen() 的 语 法 如 下:

----PrintScreen(print_job_number,x,y{,width,height})

---- 执 行 这 一 函 数, 在 指 定 的 打 印 作 业 中 将 当 前 屏 在 由X,Y 参 数( 千 分 之 一 寸 为 单 位) 指 定 的 坐 标 处 打 印。width 和height 参 数 指 示 你 所 要 的 打 印 屏 幕 的 宽 和 高。 最 后 这 两 个 参 数 是 可 选 的 , 如 果 缺 省, 屏 幕 将 按 初 始 的 宽 度 和 高 度 打 印。
后一页
前一页