home *** CD-ROM | disk | FTP | other *** search
- unit redtest;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ComCtrls, StrUtils, RichEditUtils, ExtCtrls;
-
- type
- TForm1 = class(TForm)
- RichEdit1: TRichEdit;
- Panel1: TPanel;
- Button1: TButton;
- Button2: TButton;
- Button3: TButton;
- Button4: TButton;
- Button5: TButton;
- Button6: TButton;
- Button7: TButton;
- Button8: TButton;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- procedure Button5Click(Sender: TObject);
- procedure Button6Click(Sender: TObject);
- procedure Button7Click(Sender: TObject);
- procedure Button8Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure SetDefAttributes;
- procedure SetNormalAttributes;
- procedure SetkeyWordAttributes;
- function KeyWord( token : string ) : boolean;
- procedure FormatLineAt( Red: TRichEdit; num : LongInt );
- end;
-
- const
- APPNAME = 'RichEdit Test Application';
-
- NUMKEYWORDS = 27;
- Keywords : array[0..NUMKEYWORDS] of string =
- ('unit','begin','end','procedure','function',
- 'if','while','do','then','else','repeat','until',
- 'const','var','type','uses','interface','implementation',
- 'string','of','array','program', 'private', 'public',
- 'published', 'and', 'with', 'or');
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.SetDefAttributes;
- begin
- RichEdit1.DefAttributes.Style := [];
- RichEdit1.DefAttributes.Color := clWindowText;
- end;
-
- procedure TForm1.setNormalAttributes;
- begin
- // default text attributes
- RichEdit1.SelAttributes.Style := [];
- RichEdit1.selAttributes.Color := clWindowText;
- end;
-
- procedure TForm1.setKeyWordAttributes;
- begin
- // text attributes for a keyword
- RichEdit1.SelAttributes.Style := [fsBold];
- RichEdit1.selAttributes.Color := clBlue;
- end;
-
- function TForm1.KeyWord( token : string ) : boolean;
- var
- isKW : boolean;
- i : integer;
- begin
- isKW := false;
- i := 0;
- while ((i <= NUMKEYWORDS) and (isKW = false )) do
- begin
- //!! Test is case-insensitive (OK for Pascal. Change this for C or Java)
- if lowercase(token) = KeyWords[i] then
- isKW := true
- else
- Inc(i);
- end;
- result := isKW;
- end;
-
- procedure TForm1.FormatLineAt( Red: TRichEdit; num : LongInt ); // num is RichEdit1.Lines[num]
- var
- ti : tokenindexes;
- i, numfound : integer;
- StartIndex : LongInt;
- s : string;
- begin
- s := red.Lines[num];
- TokensFoundAt( s, numfound, ti );
- Red.SetFocus;
- StartIndex := GetLineSelStartIndex( Red, num );
- HideCaret(Red.Handle);
- HideSelection(Red);
- Red.Lines.BeginUpdate;
- for i := 1 to numfound do
- begin
- Red.SelStart := StartIndex + ti[i].tstart;
- Red.SelLength := ti[i].tend;
- if KeyWord( Red.SelText ) then
- SetKeyWordAttributes
- else
- SetNormalAttributes;
- end;
- Red.Lines.EndUpdate;
- ShowSelection(Red);
- ShowCaret(Red.Handle);
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- FormatLineAt(RichEdit1, GetCurrLineNum(RichEdit1));
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- ShowMessage( IntToStr( LinesShowing(RichEdit1) ) + ' lines showing.' );
- end;
-
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- ShowMessage( 'Selection is in line: ' + IntToStr(GetCurrLineNum( RichEdit1 )));
- end;
-
- procedure TForm1.Button4Click(Sender: TObject);
- var
- l, c : longint;
- begin
- l := 0; c := 0;
- GetCurrLineAndColNum( RichEdit1, l, c );
- ShowMessage( Format('Selection starts on line %d, at column %d', [l,c] ));
- end;
-
- procedure TForm1.Button5Click(Sender: TObject);
- begin
- ShowMessage('Current line starts at char number: ' +
- IntToStr(GetLineSelStartIndex( RichEdit1, GetCurrLineNum(RichEdit1) )));
- end;
-
- procedure TForm1.Button6Click(Sender: TObject);
- begin
- HideSelection( RichEdit1 );
- end;
-
- procedure TForm1.Button7Click(Sender: TObject);
- begin
- ShowSelection( RichEdit1 );
- end;
-
- procedure TForm1.Button8Click(Sender: TObject);
- begin
- Close;
- end;
-
- end.
-