回 帖 发 新 帖 刷新版面

主题:[讨论]求助!急!!!!!!!!

请问:
1.单击"日期"和"时间"菜单命令项,在当前光标处(假设组件为Memo1)添加系统日期和系统时间;
2.单击"转到"菜单命令时,打开一输入框,从中输入一整数n,点击"OK"后,光标停留至第n行;
请问这些如何实现?(最不明白的是如何获取Memo组件的光标),哪位高手如果知道了,请告诉我.谢谢!

回复列表 (共9个回复)

沙发

memo1.SelText:=datetimetostr(now);
可以在光标处添加
第二个问题我也没用过

板凳

谢谢啦!

换行怎么实现还有谁知道不?

3 楼

#13  就是换行

4 楼

#13不行啊...

5 楼

VarLpos,Cpos,Linelength:integer;
  其中Lpos是行的值(按照Memo的规定,第一行为0),Cpos是字符的位置,LineLength是当前行的字符总个数。
  然后,再将下面的七行程序代码分别加入Memo1的OnMouseDown和OnKeyDown的事件代码处即可。
  Lops:=SendMessage(memol.Handle,EM—LINEFROMCHAR,Memol.SelStart,0);
  Cpos:=SendMessage(meno1.Handle,EM—LINEINDEX,Lpos,0);
     LineLength:=SendMessage(memol.handle,EM—LINELENGTH,Cpos,0);
     Cpos:=Memol.SelStart-CPos;
  Labell.caption:=inttostr(lpos);
  Label2.caption:=inttostr(cpos);
  Label3.caption:=inttostr(linelength);
  这样,执行程序后,随着在Memo组件中的编辑操作,Label1、Label2和Label3就将显示出相对应的当前行值、字符位置与当前行的字符总个数了。

6 楼

如果我在Memo组件中的任意位置实现"换行"功能呢?有谁能够帮助我?
另:还有如何在状态栏中动态显示小图标?

7 楼

回车不就可以了吗?
如果用代码代替回车就很烦了

8 楼

谢谢各位啦,已经实现了.

9 楼

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Memo1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
   Var
   Lpos,Cpos,Linelength,EM,LINEFROMCHAR:integer;
    begin
      Lpos:=SendMessage(memo1.Handle,EM-LINEFROMCHAR,Memo1.SelStart,0);
    Cpos:=SendMessage(meno1.Handle,EM—LINEINDEX,Lpos,0);
     LineLength:=SendMessage(memol.handle,EM—LINELENGTH,Cpos,0);
     Cpos:=Memol.SelStart-CPos;
    Labell.caption:=inttostr(lpos);
    Label2.caption:=inttostr(cpos);
    Label3.caption:=inttostr(linelength);


end;

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
   Var
   Lpos,Cpos,Linelength:integer;

  begin
  Lops:=SendMessage(memol.Handle,EM—LINEFROMCHAR,Memol.SelStart,0);
  Cpos:=SendMessage(meno1.Handle,EM—LINEINDEX,Lpos,0);
     LineLength:=SendMessage(memol.handle,EM—LINELENGTH,Cpos,0);
     Cpos:=Memol.SelStart-CPos;
  Labell.caption:=inttostr(lpos);
  Label2.caption:=inttostr(cpos);
  Label3.caption:=inttostr(linelength);

end;

end.


各位高手帮助一下:上面的代码的下面的一行出了一点错误,能不能把它整理一下.
Cpos:=SendMessage(meno1.Handle,EM—LINEINDEX,Lpos,0);

我来回复

您尚未登录,请登录后再回复。点此登录或注册