home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 48 / SENT14D.ISO / tech / delphi / disk15 / textdemo.pak / MAIN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-08-24  |  3.7 KB  |  153 lines

  1. { This demo shows how to use the TOpenDialog,
  2.   TSaveDialog, TFindDialog and TReplaceDialog 
  3.   components along with the LoadFromFile and 
  4.   SaveToFile methods of a TStringList (in this 
  5.   case the string list in Memo1). }
  6.  
  7. unit Main;
  8.  
  9. interface
  10.  
  11. uses WinTypes, WinProcs, Classes, Graphics, Controls, Menus,
  12.   Forms, StdCtrls, Dialogs, ExtCtrls;
  13.  
  14. type
  15.   TForm1 = class(TForm)
  16.     MainMenu1: TMainMenu;
  17.     File1: TMenuItem;
  18.     Memo1: TMemo;
  19.     OpenDialog1: TOpenDialog;
  20.     SaveDialog1: TSaveDialog;
  21.     FindDialog1: TFindDialog;
  22.     Search1: TMenuItem;
  23.     Find1: TMenuItem;
  24.     Replace1: TMenuItem;
  25.     FindNext1: TMenuItem;
  26.     ReplaceDialog1: TReplaceDialog;
  27.     procedure New1Click(Sender: TObject);
  28.     procedure FileOpenClick(Sender: TObject);
  29.     procedure Save1Click(Sender: TObject);
  30.     procedure SaveAs1Click(Sender: TObject);
  31.     procedure FileExitClick(Sender: TObject);
  32.     procedure Find1Click(Sender: TObject);
  33.     procedure Find(Sender : TObject);
  34.     procedure FindNext1Click(Sender: TObject);
  35.     procedure Replace1Click(Sender: TObject);
  36.     procedure Replace(Sender: TObject);
  37.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  38.   end;
  39.  
  40. var
  41.   Form1: TForm1;
  42.  
  43. implementation
  44.  
  45. uses SysUtils, Search;
  46.  
  47. {$R *.DFM}
  48.  
  49. procedure TForm1.New1Click(Sender: TObject);
  50. begin
  51.   Memo1.Clear;
  52.   OpenDialog1.Filename := '';
  53.   Caption := 'Text Demo - [Untitled]';
  54. end;
  55.  
  56. procedure TForm1.FileOpenClick(Sender: TObject);
  57. begin
  58.   with OpenDialog1 do
  59.     if Execute then
  60.     begin
  61.       Memo1.Lines.LoadFromFile(FileName);
  62.       Caption := 'Text Demo - ' + ExtractFilename(FileName);
  63.     end;
  64. end;
  65.  
  66. procedure TForm1.Save1Click(Sender: TObject);
  67. begin
  68.   if OpenDialog1.Filename <> '' then
  69.   begin
  70.     Memo1.Lines.SaveToFile(OpenDialog1.Filename);
  71.   end
  72.   else SaveAs1Click(Sender);
  73. end;
  74.  
  75. procedure TForm1.SaveAs1Click(Sender: TObject);
  76. begin
  77.   with SaveDialog1 do
  78.     if Execute then
  79.     begin
  80.       Memo1.Lines.SaveToFile(Filename);
  81.       Caption := 'Text Demo - ' + ExtractFilename(FileName);
  82.       OpenDialog1.Filename := Filename;
  83.     end;
  84. end;
  85.  
  86. procedure TForm1.Find1Click(Sender: TObject);
  87. begin
  88.   FindDialog1.Execute;
  89.   FindNext1.Enabled := True;
  90. end;
  91.  
  92. procedure TForm1.Find(Sender: TObject);
  93. begin
  94.   with Sender as TFindDialog do
  95.     if not SearchMemo(Memo1, FindText, Options) then
  96.       ShowMessage('Cannot find "' + FindText + '".');
  97. end;
  98.  
  99. procedure TForm1.Replace1Click(Sender: TObject);
  100. begin
  101.   ReplaceDialog1.Execute;
  102. end;
  103.  
  104. procedure TForm1.FindNext1Click(Sender: TObject);
  105. begin
  106.   Find(FindDialog1);
  107. end;
  108.  
  109. { Replace and ReplaceAll call this routine. }
  110. procedure TForm1.Replace(Sender: TObject);
  111. var
  112.   Found: Boolean;
  113. begin
  114.   with ReplaceDialog1 do
  115.   begin
  116.     if AnsiCompareText(Memo1.SelText, FindText) = 0 then
  117.       Memo1.SelText := ReplaceText;
  118.     Found := SearchMemo(Memo1, FindText, Options);
  119.     while Found and (frReplaceAll in Options) do
  120.     begin
  121.       Memo1.SelText := ReplaceText;
  122.       Found := SearchMemo(Memo1, FindText, Options);
  123.     end;
  124.     if (not Found) and (frReplace in Options) then
  125.       ShowMessage('Cannot find "' + FindText + '".');
  126.   end;
  127. end;
  128.  
  129. procedure TForm1.FileExitClick(Sender: TObject);
  130. begin
  131.   Close;
  132. end;
  133.  
  134. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  135. var
  136.   MsgResult: Word;
  137. begin
  138.   if Memo1.Modified then 
  139.     MsgResult := MessageDlg(Format('File %s has been modified. Save file?',
  140.     [OpenDialog1.Filename]), mtWarning, mbYesNoCancel, 0);
  141.   case MsgResult of
  142.     mrYes:
  143.       begin
  144.         Save1Click(Sender); 
  145.         CanClose := True;
  146.       end;
  147.     mrNo: CanClose := True;
  148.     mrCancel: CanClose := False;
  149.   end;
  150. end;
  151.  
  152. end.
  153.