以过写能写Tstring;
我去做个例子

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    VAR
      I:INTEGER;
      //t:Tstringlist;
    begin
      //t:=Tstringlist.Create;// ()
      for i:= 0 to richedit1.Lines.Count-1 do
       begin
        richedit1.Lines.Strings[i]:=inttostr(i)+'  '+richedit1.Lines.Strings[i];
       end;end;
    //老大,不能说我写的太....
    给分吧
      

  2.   

    lintoms (咕噜)  大哥,
    应该给分了吧
      

  3.   

    //请参考
    unit Unit8;interfaceuses
    {}Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    {}Dialogs, StdCtrls, ActnList, ExtCtrls;type
    {}TForm1 = class(TForm)
    {}{}Memo2: TMemo;
    {}{}Panel1: TPanel;
    {}{}Memo1: TMemo;
    {}{}Button1: TButton;
    {}{}procedure FormCreate(Sender: TObject);
    {}{}procedure ActionUpdate(Sender: TObject);
    {}private
    {}{}{ Private declarations }
    {}{}FTextHeight: Integer;
    {}{}FLineCount: Integer;
    {}{}FLineStart: Integer;
    {}public
    {}{}{ Public declarations }
    {}end;var
    {}Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    {}with TControlCanvas.Create do try
    {}{}Control := Memo1;
    {}{}FTextHeight := Canvas.TextHeight('|');
    {}{}FLineCount := Memo1.ClientHeight div FTextHeight;
    {}finally
    {}{}Free;
    {}end;
    {}FLineStart := -1;
    {}Memo2.Parent := Memo1.Parent;
    {}Memo2.Font.Assign(Memo1.Font);
    {}Memo2.BorderStyle := bsNone;
    {}Memo2.Ctl3D := False;
    {}Memo2.Width := Canvas.TextWidth('9999');
    {}Memo2.Left := Memo1.Left - Memo2.Width - 3;
    {}Memo2.Enabled := False;
    {}Memo2.ParentColor := True;
    {}Memo2.Height := Memo1.ClientHeight;
    {}Memo2.Top := Memo1.Top + 3;
    {}with TButton.Create(Self) do begin
    {}{}Parent := Self;
    {}{}Top := -100;
    {}{}TabStop := False;
    {}{}Action := TAction.Create(Self);
    {}{}Action.OnUpdate := ActionUpdate;
    {}end;
    end;procedure TForm1.ActionUpdate(Sender: TObject);
    var
    {}I, J: Integer;
    {}S: string;
    begin
    {}J := SendMessage(Memo1.Handle, EM_CHARFROMPOS, 0, MAKELPARAM(0, 2)) shr 16;
    {}if FLineStart = J then Exit;
    {}FLineStart := J;
    {}S := '';
    {}for I := J to J + FLineCount - 1 do
    {}{}S := S + Format('%.4d', [I]);
    {}Memo2.Text := S;
    end;end.
      

  4.   

    多谢zswang(伴水),例子很不错,但好象只是针对相同格式的文本来的,我的意思是richedit里的文本很复杂的样子,譬如有夹有图片、各行间距不一样,字号不一样等等。:)
      

  5.   

    to lintoms(咕噜):
      我提供给你的只是一个思路
      你发挥发挥即可解决