主题:[讨论]求助!急!!!!!!!!
wenlnhua
[专家分:0] 发布于 2006-11-14 14:27:00
请问:
1.单击"日期"和"时间"菜单命令项,在当前光标处(假设组件为Memo1)添加系统日期和系统时间;
2.单击"转到"菜单命令时,打开一输入框,从中输入一整数n,点击"OK"后,光标停留至第n行;
请问这些如何实现?(最不明白的是如何获取Memo组件的光标),哪位高手如果知道了,请告诉我.谢谢!
回复列表 (共9个回复)
沙发
lanjping [专家分:270] 发布于 2006-11-15 11:12:00
memo1.SelText:=datetimetostr(now);
可以在光标处添加
第二个问题我也没用过
板凳
wenlnhua [专家分:0] 发布于 2006-11-15 12:30:00
谢谢啦!
换行怎么实现还有谁知道不?
3 楼
dingqiang [专家分:10] 发布于 2006-11-15 16:57:00
#13 就是换行
4 楼
wenlnhua [专家分:0] 发布于 2006-11-15 23:06:00
#13不行啊...
5 楼
wealthy [专家分:1840] 发布于 2006-11-16 11:17:00
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 楼
wenlnhua [专家分:0] 发布于 2006-11-19 22:16:00
如果我在Memo组件中的任意位置实现"换行"功能呢?有谁能够帮助我?
另:还有如何在状态栏中动态显示小图标?
7 楼
wealthy [专家分:1840] 发布于 2006-11-20 14:22:00
回车不就可以了吗?
如果用代码代替回车就很烦了
8 楼
wenlnhua [专家分:0] 发布于 2006-11-21 16:08:00
谢谢各位啦,已经实现了.
9 楼
ahmatjan [专家分:0] 发布于 2006-12-02 19:42:00
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);
我来回复