home *** CD-ROM | disk | FTP | other *** search
- unit ts;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls;
-
- type
- TForm1 = class(TForm)
- Memo1: TMemo;
- Memo2: TMemo;
- Button1: TButton;
- NoTabStops: TButton;
- procedure NoTabStopsClick(Sender: TObject);
- procedure Memo1KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure Memo1KeyPress(Sender: TObject; var Key: Char);
- procedure Memo1KeyUp(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure GetCursorPos( var LinePos, ColPos : LongInt );
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.GetCursorPos( var LinePos, ColPos : LongInt );
- begin
- LinePos := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart,0);
- ColPos := (SendMessage(Memo1.Handle, EM_LINEINDEX, LinePos, 0));
- ColPos := Memo1.SelStart - ColPos;
- end;
-
- procedure TForm1.NoTabStopsClick(Sender: TObject);
- var
- i : integer;
- begin
- for i := 0 to ComponentCount - 1 do
- TWinControl(Components[i]).TabStop := false;
- end;
-
- procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- Memo2.Lines.Add( 'Memo1KeyDown: Key = ' + IntToStr(Key) );
- end;
-
- procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
- begin
- Memo2.Lines.Add( 'Memo1KeyPress: Key = ' + Key );
- end;
-
- procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- var
- LineNum, ColNum, StartPos : LongInt;
- aLine : string;
- begin
- Memo2.Lines.Add( 'Memo1KeyUp: Key = ' + IntToStr(Key));
- if Key = 9 then
- begin
- GetCursorPos( LineNum, ColNum );
- StartPos := Memo1.selStart;
- aLine := Memo1.Lines[LineNum]; { get current line from Memo }
- insert(^I, aLine, ColNum+1 ); { insert tab character }
- Memo1.Lines[LineNum] := aLine; { put altered line in Memo }
- Memo1.selStart := StartPos + Length(^I);{ put cursor after tab }
- end;
- end;
-
- end.
-