📄 013.htm
字号:
<p>frRelpace <font face="宋体" lang="ZH-CN">如果是真值,</font> <font
face="宋体" lang="ZH-CN">应用程序将</font>ReplaceText <font face="宋体"
lang="ZH-CN">属性中的字符串替换</p>
<p> </font> <font face="宋体" lang="ZH-CN"> </font>FindText<font
face="宋体" lang="ZH-CN">属性中的字符串。</font></p>
<p>frReplacAll <font face="宋体" lang="ZH-CN">如果是真值,应用程序将</font>ReplaceText<font
face="宋体" lang="ZH-CN">属性中的字符串替换,</p>
<p> </font> <font face="宋体" lang="ZH-CN"> 查找到的所有</font>FindText<font
face="宋体" lang="ZH-CN">属性中的字符串。</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ </p>
<p> 例程中</font>TEditForm.Replace<font face="宋体" lang="ZH-CN">方法响应</font>OnReplace<font
face="宋体" lang="ZH-CN">事件,</font>Replace<font face="宋体" lang="ZH-CN">方法首先判断控制中被</p>
<p>选中字符串是否与替换字符串相等,如果不等则进行替换。而后根据</font>Options<font
face="宋体" lang="ZH-CN">中的方式循</p>
<p>环进行查找替换。直至无匹配字符串为止。其代码如下: </p>
<p> </font> procedure TEditForm.Replace(Sender: TObject);</p>
<p>var</p>
<p>Found: Boolean;</p>
<p>begin</p>
<p>with ReplaceDialog1 do</p>
<p>begin</p>
<p>if AnsiCompareText(Memo1.SelText, FindText) = 0 then</p>
<p>Memo1.SelText := ReplaceText;</p>
<p>Found := SearchMemo(Memo1, FindText, Options);</p>
<p>while Found and (frReplaceAll in Options) do</p>
<p>begin</p>
<p>Memo1.SelText := ReplaceText;</p>
<p>Found := SearchMemo(Memo1, FindText, Options);</p>
<p>end;</p>
<p>if (not Found) and (frReplace in Options) then</p>
<p>ShowMessage('Cannot find "' + FindText + '".');</p>
<p>end;</p>
<p>end;<font face="宋体" lang="ZH-CN"> </font></p>
<p>4.4.4 <font face="宋体" lang="ZH-CN">打开对话框部件 </p>
<p> 打开对话框部件为应用程序显示打开对话框。使用</font>Execute<font
face="宋体" lang="ZH-CN">方法可显示打开对话框用户通过选择文件类型下拉框中的文件类型,可以确定显示在文件列表中的文件。</font>
<font face="宋体" lang="ZH-CN">例如,如果用户选择</font>*.txt<font
face="宋体" lang="ZH-CN">文件类型,那么只有在当前目录下的文本文件才会显示在文件列表中。文件扩展名通常也称为过滤器。</font></p>
<font face="宋体" lang="ZH-CN"><p> 打开对话框包含一个</font>Filters(<font
face="宋体" lang="ZH-CN">过滤器</font>)<font face="宋体" lang="ZH-CN">的属性,它可确定文件类型和在文件类型下拉框中的顺序。应用程序可以为打开对话框定义多个过滤器,对话框的</font>FilterIndex
<font face="宋体" lang="ZH-CN">属性可以决定哪个过滤器是文件类型下拉框中的缺省过滤器。如</font>FilterIndex<font
face="宋体" lang="ZH-CN">等于</font>2<font face="宋体" lang="ZH-CN">,表示程序运行时出现在文件类型下拉框的过滤器是第</font>2<font
face="宋体" lang="ZH-CN">个过滤器。</p>
<p> 例程中关于文件打开的代码如下: </p>
<p> </font> procedure TEditForm.Open/Click(Sender : TObject);</p>
<p>begin</p>
<p>if OpenDialog/.Execult then</p>
<p>begin</p>
<p><font face="宋体" lang="ZH-CN"> …</p>
<p> </font>Open(Open Dialog/.FileName)</p>
<p>end</p>
<p>end;</p>
<font face="宋体" lang="ZH-CN"><p> 打开,保存对话框中的</font>Options<font
face="宋体" lang="ZH-CN">属性值见表</font>4.4 </p>
<p><font face="宋体" lang="ZH-CN">表</font>4.4 <font face="宋体" lang="ZH-CN">打开、保存对话框的</font>Options<font
face="宋体" lang="ZH-CN">属性取值及含义</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font></p>
<p><font face="宋体" lang="ZH-CN">值 含义</font></p>
<p><font face="宋体" lang="ZH-CN">──────────────────────────────────────</p>
<p> </font></p>
<p>ofAllowMultiSelect <font face="宋体" lang="ZH-CN">如果是真值,则允许在文件名列表中选择多个文件。</font></p>
<p>ofCreatePrompt <font face="宋体" lang="ZH-CN">如果是真值,当用户在文件编辑框中输入一不存在的文件名,</p>
<p> 并选择</font>OK<font face="宋体" lang="ZH-CN">按钮,则会出现消息框,</font>
<font face="宋体" lang="ZH-CN">提示用户此文件不存在并</p>
<p> 询问是否以此文件名创建一新文件。</font></p>
<p>ofExiengronDifferent <font face="宋体" lang="ZH-CN">如果是真值,从对话框中返回的文件扩展名将不同于缺省扩展名。</font></p>
<p><font face="宋体" lang="ZH-CN">其值存入</font>DefaultExt<font face="宋体"
lang="ZH-CN">属性中。</font></p>
<p>ofFileMustExist<font face="宋体" lang="ZH-CN"> </font> <font face="宋体"
lang="ZH-CN">如果是真值,</font> <font face="宋体" lang="ZH-CN">当用户在文件编辑框中输入一个不存在的文件名时,</font></p>
<p><font face="宋体" lang="ZH-CN">并选择</font>OK<font face="宋体" lang="ZH-CN">按钮,</font>
<font face="宋体" lang="ZH-CN">则会出现一消息框提示用户此文件不存,并询</font></p>
<p><font face="宋体" lang="ZH-CN">问是否输入了正确的路径和文件名。</font></p>
<p>ofNoChangeDir <font face="宋体" lang="ZH-CN">如果是真值,当前目录将设置成对话框第一次出现的目录,并忽</font></p>
<p><font face="宋体" lang="ZH-CN">略任何目录改变。</font></p>
<p>ofOverWritePrompt <font face="宋体" lang="ZH-CN">如果是真值,当用户试图保存一个已存在的文件时,</font>
<font face="宋体" lang="ZH-CN">将出现一消息</font></p>
<p><font face="宋体" lang="ZH-CN">框,提示用户此文件已存在,并询问是否覆盖。</font></p>
<p>ofPathMastExit <font face="宋体" lang="ZH-CN">如果是真值,用户在文件名编辑框只能输入有效路径名,</font>
<font face="宋体" lang="ZH-CN">否则出</font></p>
<p><font face="宋体" lang="ZH-CN">现消息框,提示用户路径无效。</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ </p>
</font><p><font face="宋体" lang="ZH-CN">表</font>4.4 <font face="宋体" lang="ZH-CN">打开、保存对话框中的</font>Options<font
face="宋体" lang="ZH-CN">属性取值及含义</font></p>
<font face="宋体" lang="ZH-CN"><p>文件保存对话框与打开对话框类似,如图</font>4.11<font
face="宋体" lang="ZH-CN">。它的</font>Option<font face="宋体" lang="ZH-CN">属性见上表。例程在保存文件前先对文件进行读写判断,如果文件是只读文件或未指定文件名的新文件,</font>
<font face="宋体" lang="ZH-CN">则程序对文件不保存,否则备份文件。代码如下</font>:
</p>
<font face="宋体" lang="ZH-CN"><p> </font>procedure TEditForm.Save1Click(Sender:
TObject);</p>
<p>procedure CreateBackup(const Filename: string);</p>
<p>var</p>
<p>BackupFilename: string;</p>
<p>begin</p>
<p>BackupFilename := ChangeFileExt(Filename, BackupExt);</p>
<p>DeleteFile(BackupFilename);</p>
<p>RenameFile(Filename, BackupFilename);</p>
<p>end; </p>
<p>function IsReadOnly(const Filename: string): Boolean;</p>
<p>begin</p>
<p>Result := Boolean(FileGetAttr(Filename) and faReadOnly);</p>
<p>if Result then MessageDlg(Format('%s is read only.',</p>
<p>[ExtractFilename(Filename)]), mtWarning, [mbOK], 0);</p>
<p>end; </p>
<p>begin</p>
<p>if (Filename = '') or IsReadOnly(Filename) then</p>
<p>SaveAs1Click(Sender)</p>
<p>else</p>
<p>begin</p>
<p>CreateBackup(Filename);</p>
<p>Memo1.Lines.SaveToFile(Filename);</p>
<p>Memo1.Modified := False;</p>
<p>end;</p>
<p>end;</p>
<p><font face="宋体" lang="ZH-CN">其中</font>CreateBackup<font face="宋体"
lang="ZH-CN">过程用以改变需备份文件的扩展名。</font>IsReadOnly <font
face="宋体" lang="ZH-CN">用以判断文件属性。 </p>
</font><p>4.5 <font face="宋体" lang="ZH-CN">文件打印 </p>
<p> 在</font>Delphi<font face="宋体" lang="ZH-CN">中,文件打印有两种方式:</p>
<p> </font>1. <font face="宋体" lang="ZH-CN">将文件变量分配给打印机,用此变量名创建或打开文件后,</font>
<font face="宋体" lang="ZH-CN">往此文件变量写入的任何文本都视为向打印机输出,以下过程可实现文件的打印。 </p>
<p> </font>procedure TEditForm,Print1Click(Sender: TObject);</p>
<p>var</p>
<p>Line: Integer;</p>
<p>PrintText: System.Text;</p>
<p>begin</p>
<p>if PrintDialog1.Execute then</p>
<p>begin</p>
<p>AssignPrn(PrintText)</p>
<p>Rewrite(PrintText);</p>
<p>Print.CanvasFont := Memo1.Font;</p>
<p>For Line := 0 to Memo1.Lines.Count - 1 do</p>
<p>Writeln(PrintText,Memo1.Line[line];</p>
<p>System.Close(PrintText);</p>
<p>end;</p>
<p>end;<font face="宋体" lang="ZH-CN"> </font></p>
<p>2. <font face="宋体" lang="ZH-CN">利用</font>Printers<font face="宋体"
lang="ZH-CN">单元中定义的</font>TPrinter<font face="宋体" lang="ZH-CN">对象进行文件打印,本章例程采用这种方法打印文件。 </p>
</font><p>4.5.1 TPrinter<font face="宋体" lang="ZH-CN">对象 </p>
<p> </font>TPrinter<font face="宋体" lang="ZH-CN">对象可调用</font>Windows<font
face="宋体" lang="ZH-CN">的打印机,在</font>Printer <font face="宋体"
lang="ZH-CN">单元中定义了</font>TPrinter <font face="宋体" lang="ZH-CN">的实例</font>Printer<font
face="宋体" lang="ZH-CN">,用户可直接使用。</p>
<p> 调用</font>TPrinter<font face="宋体" lang="ZH-CN">的</font>BeginDoc<font
face="宋体" lang="ZH-CN">方法可开始一项打印工作,调用</font>EndDoc <font
face="宋体" lang="ZH-CN">方法可结束一项已成功发送给打印机的工作。如果在发送过程中出现问题或用户想中途终止打印工作,可调用</font>Abort<font
face="宋体" lang="ZH-CN">方法。</p>
<p> 通过检查</font>Printing<font face="宋体" lang="ZH-CN">属性可测试当前是否有打印工作,如果打印工作被终止,</font>Abort<font
face="宋体" lang="ZH-CN">属性为真。</p>
<p> </font>Canvas<font face="宋体" lang="ZH-CN">属性代表打印表面,</font>Brush,Font,Pen<font
face="宋体" lang="ZH-CN">属性可决定打印字体或图像的特征。</p>
<p> </font>Printers<font face="宋体" lang="ZH-CN">属性中包含着已安装的打印机列表,</font>PrinterIndex
<font face="宋体" lang="ZH-CN">属性是当前选择的打印</p>
<p>机,</font>Fonts<font face="宋体" lang="ZH-CN">属性中有当前打印机支持的字体。</font>Orientertion<font
face="宋体" lang="ZH-CN">属性可决定打印方向。</p>
<p> </font>PageHeight,PageWith<font face="宋体" lang="ZH-CN">中包含着当前的高度和宽度。</font>PageNanber<font
face="宋体" lang="ZH-CN">为当前页的值。</p>
<p> 设置</font>Title<font face="宋体" lang="ZH-CN">属性可决定在</font>Windows<font
face="宋体" lang="ZH-CN">打印管理器或网络中出现的文本。 </p>
</font><p>4.5.2 TPrintDialog<font face="宋体" lang="ZH-CN">打印对话框 </p>
<p> </font>TPrintDialog<font face="宋体" lang="ZH-CN">部件显示一打印对话框。用户在对话框中,可以选择打印机、打印页数、打印份数。当用户选择对话框中的</font>Setup<font
face="宋体" lang="ZH-CN">按钮,则出现打印设置对话框。</p>
<p> 调用Execute方法显示打印对话框。如图4.12。使用Option属性可设置打印对话框显示的形式。Options的设置如表4.5所示。</p>
<p> </font>PrintRange<font face="宋体" lang="ZH-CN">属性可定义打印的范围。如果</font>PrintPage<font
face="宋体" lang="ZH-CN">的值是</font>prPageNums<font face="宋体" lang="ZH-CN">,则可以设置</font>FromPage<font
face="宋体" lang="ZH-CN">和</font>ToPage<font face="宋体" lang="ZH-CN">属性来确定打印范围。设置</font>MinPage,MaxPage<font
face="宋体" lang="ZH-CN">属性可限制用户的打印范围。 </p>
</font><p><font face="宋体" lang="ZH-CN">表</font>4.5 <font face="宋体" lang="ZH-CN">打印对话框的</font>Option<font
face="宋体" lang="ZH-CN">属性的取值及含义</font> </p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font></p>
<p><font face="宋体" lang="ZH-CN">取值 含义</font></p>
<p><font face="宋体" lang="ZH-CN">──────────────────────────────────────</font></p>
<p>PoHelp <font face="宋体" lang="ZH-CN">如果是真值,对话框出现帮助按钮。</font></p>
<p>PoPageNums <font face="宋体" lang="ZH-CN">如果是真值,页数按钮有效,用户可以设置打印范围。</font></p>
<p>PoPrintToFile <font face="宋体" lang="ZH-CN">如果是真值,文件打印检查框将出现在对话框中,用户可以选</font></p>
<p><font face="宋体" lang="ZH-CN">择文件打印。</font></p>
<p>PoSelection <font face="宋体" lang="ZH-CN">如果是真值,选择按钮有效,</font>
<font face="宋体" lang="ZH-CN">用户可打印文件中所选择的文本。</font></p>
<p>PoWarning <font face="宋体" lang="ZH-CN">如果是真值,在打印机尚未安装时,用户选择</font>OK
<font face="宋体" lang="ZH-CN">按按钮将出</font> </p>
<p><font face="宋体" lang="ZH-CN">现警告信息。</font></p>
<p>PoDisablePrinttoToFile <font face="宋体" lang="ZH-CN">如果是真值,而</font>PoPrintToFile<font
face="宋体" lang="ZH-CN">亦是真值时,当对话框出现时,文</font></p>
<p><font face="宋体" lang="ZH-CN">件打印对话框将无效。</font></p>
<p><font face="宋体" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font></p>
<p><font face="宋体" lang="ZH-CN">
本章例程是利用</font>Printer<font
face="宋体" lang="ZH-CN">的画布进行文本打印的。用户选择打印菜单后,将弹出打印对话框,用户可设置各种参数。当用户选择打印按钮后,打印工作进行发送,此时将弹出打印取消对话框,见图</font>4.13<font
face="宋体" lang="ZH-CN">,</font> <font face="宋体" lang="ZH-CN">用户可中止打印工作。有关打印和打印取消的代码如下:</font>
</p>
<p>procedure TEditForm.Print1Click(Sender: TObject);</p>
<p>var</p>
<p>DistanceLine,Line: Integer;</p>
<p>PrintText: System.Text;</p>
<p>begin</p>
<p>if PrintDialog1.Execute then</p>
<p>begin</p>
<p>Printer.Canvas.font := Memo1.Font;</p>
<p>DistanceLine := Trunc(1.5*FontDialog1.font.size);</p>
<p>OpenPrintCancelDialog;</p>
<p>Printer.BeginDoc;</p>
<p>for line := 0 to Memo1.Lines.Count - 1 do</p>
<p>begin</p>
<p>Printer.canvas.textout(0,DistanceLine*Line,Memo1.lines[Line]);</p>
<p>end;</p>
<p>Printer.EndDoc;</p>
<p>BtnBottomDlg.free;</p>
<p>end;</p>
<p>end;</p>
<p> </p>
<p>procedure TEditForm.OpenPrintCancelDialog;</p>
<p>begin</p>
<p>BtnBottomDlg := TBtnBottomDlg.Create(Application);</p>
<p>BtnBottomDlg.show;</p>
<p>BtnBottomDlg.canvas.Brush.Color := clActiveBorder;</p>
<p>BtnBottomDlg.canvas.TextOut(50,20,'Print'+FileName);</p>
<p>BtnBottomDlg.canvas.TextOut(30,40,'if you want to</p>
<p>stop, please choice Cancel Button.');</p>
<p>end;</p>
</p>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" bgcolor="#e0e0e0"><strong><A HREF="014.htm"><FONT style="FONT-SIZE: 9pt">后一页</font></A><BR>
<A HREF="012.htm"><FONT style="FONT-SIZE: 9pt">前一页</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目录</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首页</font></A><BR>
</strong>
</TD>
</TR>
</table>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -