?? 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%" background="bg.gif"><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 + -