home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Delphi.5 / Samples / sourceD5 / browutil.exe / BROWSER / TEXTEDIT.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1999-04-20  |  4.7 KB  |  181 lines

  1. unit TextEdit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ComCtrls, Menus;
  8.  
  9. type
  10.   TFrmTextEdit = class(TForm)
  11.     RichEdit1: TRichEdit;
  12.     PopupMenu1: TPopupMenu;
  13.     Print1: TMenuItem;
  14.     FindText1: TMenuItem;
  15.     FindDialog1: TFindDialog;
  16.     SaveDialog1: TSaveDialog;
  17.     Upper1: TMenuItem;
  18.     Lower1: TMenuItem;
  19.     UpperLower1: TMenuItem;
  20.     N1: TMenuItem;
  21.     FontDialog1: TFontDialog;
  22.     N2: TMenuItem;
  23.     Font1: TMenuItem;
  24.     procedure FormActivate(Sender: TObject);
  25.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  26.     procedure FormDestroy(Sender: TObject);
  27.     procedure Print1Click(Sender: TObject);
  28.     procedure FindText1Click(Sender: TObject);
  29.     procedure FindDialog1Find(Sender: TObject);
  30.     procedure Upper1Click(Sender: TObject);
  31.     procedure Font1Click(Sender: TObject);
  32.     procedure FontDialog1Apply(Sender: TObject; Wnd: HWND);
  33.   private
  34.     { Private declarations }
  35.     procedure ApplyFont;
  36.   public
  37.     { Public declarations }
  38.     sFileName : String;
  39.     procedure OpenTextFile(sTextFileName : String);
  40.     procedure SaveToFile(sTextFileName : String);
  41.   end;
  42.  
  43. var
  44.   FrmTextEdit: TFrmTextEdit;
  45.  
  46. implementation
  47.  
  48. uses Menu;
  49.  
  50. {$R *.DFM}
  51.  
  52. procedure TFrmTextEdit.OpenTextFile(sTextFileName : String);
  53. begin
  54.   RichEdit1.Lines.Clear;
  55.   Self.Caption := sTextFileName;
  56.   if (sTextFileName <> '') then begin
  57.       sFileName := sTextFileName;
  58.       RichEdit1.Lines.LoadFromFile(sTextFileName);
  59.     end
  60.   else
  61.     begin
  62.       sFileName := '';
  63.       Self.Caption := 'Document';
  64.     end;
  65. //  FrmMenu.AddWindowItem(Self.Name,Self.Caption);
  66. end;
  67.  
  68. procedure TFrmTextEdit.SaveToFile(sTextFileName : String);
  69. begin
  70.   if (sTextFileName = '') then begin
  71.     SaveDialog1.FileName := 'Document';
  72.     if (SaveDialog1.Execute) then begin
  73.       sTextFileName := SaveDialog1.FileName;
  74.       sFileName := ExtractFileName(SaveDialog1.FileName);
  75.     end;
  76.   end;
  77.   RichEdit1.Lines.SaveToFile(sTextFileName);
  78. end;
  79.  
  80. procedure TFrmTextEdit.FormActivate(Sender: TObject);
  81. begin
  82.   FrmMenu.ShowClose(True);
  83.   FrmMenu.ShowQueryMenuItem(False);
  84.   FrmMenu.ShowTableMenuItem(False);
  85.   FrmMenu.ShowTextFileMenuItem(True);
  86. end;
  87.  
  88. procedure TFrmTextEdit.FormClose(Sender: TObject;
  89.   var Action: TCloseAction);
  90. begin
  91.   Action := caFree;
  92. end;
  93.  
  94. procedure TFrmTextEdit.FormDestroy(Sender: TObject);
  95. begin
  96.   FrmMenu.ShowClose(False);
  97.   if (FindDialog1.Handle <> 0) then
  98.     SendMessage(FindDialog1.Handle,WM_Close,0,0);
  99. //  FrmMenu.RemoveWindowItem(Self.Name)
  100. end;
  101.  
  102. procedure TFrmTextEdit.Print1Click(Sender: TObject);
  103. begin
  104.   RichEdit1.Print(sFileName);
  105. end;
  106.  
  107. procedure TFrmTextEdit.FindText1Click(Sender: TObject);
  108. begin
  109.   if FindDialog1.Execute then
  110. end;
  111.  
  112. procedure TFrmTextEdit.FindDialog1Find(Sender: TObject);
  113. var
  114.   nPos : Integer;
  115. begin
  116.   if Self.FindComponent('RichEdit1') = nil then
  117.     Exit;
  118.   if (UpperCase(RichEdit1.SelText) = UpperCase(FindDialog1.FindText)) then
  119.     nPos := RichEdit1.SelStart + RichEdit1.SelLength
  120.   else
  121.     nPos := 0;
  122.   nPos := RichEdit1.FindText(FindDialog1.FindText,nPos,Length(RichEdit1.Text),[]);
  123.   if (nPos > 0) then begin
  124.       RichEdit1.SelStart := nPos;
  125.       RichEdit1.SelLength := Length(FindDialog1.FindText);
  126.     end
  127.   else
  128.     begin
  129.       MessageBeep(mb_Ok);
  130.       ShowMessage('Text Not Found');
  131.     end;
  132. end;
  133.  
  134. procedure TFrmTextEdit.Upper1Click(Sender: TObject);
  135. var
  136.   sText : String;
  137.   nLowOffSet : Integer;
  138.   SelAttributes : TTextAttributes;
  139. begin
  140.   if (RichEdit1.SelLength > 0) then begin
  141.     SelAttributes := RichEdit1.SelAttributes;
  142.     sText := RichEdit1.SelText;
  143.     RichEdit1.SetTextBuf(PChar(sText));
  144.   end;
  145. end;
  146.  
  147. procedure TFrmTextEdit.Font1Click(Sender: TObject);
  148. begin
  149.   FontDialog1.Font.Name := RichEdit1.SelAttributes.Name;
  150.   FontDialog1.Font.Color := RichEdit1.SelAttributes.Color;
  151.   FontDialog1.Font.Size := RichEdit1.SelAttributes.Size;
  152.   FontDialog1.Font.Style := RichEdit1.SelAttributes.Style;
  153.   if FontDialog1.Execute then
  154.     ApplyFont;
  155. end;
  156.  
  157. procedure TFrmTextEdit.ApplyFont;
  158. begin
  159.   if RichEdit1.PlainText then begin
  160.       RichEdit1.Tag := RichEdit1.SelStart;
  161.       RichEdit1.SelStart := 0;
  162.       RichEdit1.SelLength := Length(RichEdit1.Text);
  163.       RichEdit1.Font := FontDialog1.Font;
  164.       RichEdit1.SelStart := RichEdit1.Tag;
  165.     end
  166.   else
  167.     begin
  168.       RichEdit1.SelAttributes.Name := FontDialog1.Font.Name;
  169.       RichEdit1.SelAttributes.Color := FontDialog1.Font.Color;
  170.       RichEdit1.SelAttributes.Size := FontDialog1.Font.Size;
  171.       RichEdit1.SelAttributes.Style := FontDialog1.Font.Style;
  172.     end;
  173. end;
  174.  
  175. procedure TFrmTextEdit.FontDialog1Apply(Sender: TObject; Wnd: HWND);
  176. begin
  177.   ApplyFont;
  178. end;
  179.  
  180. end.
  181.