var lpos,cpos,linelength:integer;
procedure Tsb_byywh_zj.DBMemo3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Lpos:=SendMessage(dbMemo3.Handle,EM_LINEFROMCHAR,dbMemo3.SelStart,0);
Cpos:=SendMessage(dbMemo3.Handle,EM_LINEINDEX,Lpos,0);
LineLength:=SendMessage(dbMemo3.Handle,EM_LINELENGTH,Cpos,0);
Cpos:=dbMemo3.SelStart-CPos;
//======以上代码是用几个变量取文本框中一行字符的个数===========
end;
其中可以是dbmemo1,dbmemo1,dbmemo1等等?怎么封装这些不同的对象呢?〉
请高手帮忙?因为在好多地方要用到这些东西
procedure Tsb_byywh_zj.DBMemo3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Lpos:=SendMessage(dbMemo3.Handle,EM_LINEFROMCHAR,dbMemo3.SelStart,0);
Cpos:=SendMessage(dbMemo3.Handle,EM_LINEINDEX,Lpos,0);
LineLength:=SendMessage(dbMemo3.Handle,EM_LINELENGTH,Cpos,0);
Cpos:=dbMemo3.SelStart-CPos;
//======以上代码是用几个变量取文本框中一行字符的个数===========
end;
其中可以是dbmemo1,dbmemo1,dbmemo1等等?怎么封装这些不同的对象呢?〉
请高手帮忙?因为在好多地方要用到这些东西
begin
end;
Shift: TShiftState);
//声明一个过程
procedure Tsb_byywh_zj.KeyDown(Sender: TObject; var Key: Word; var lpos,cpos,linelength:integer;
Shift: TShiftState);
begin
with Sender As TDBMemo do
begin
Lpos:=SendMessage(Handle,EM_LINEFROMCHAR,SelStart,0);
Cpos:=SendMessage(Handle,EM_LINEINDEX,Lpos,0);
LineLength:=SendMessage(Handle,EM_LINELENGTH,Cpos,0);
Cpos:=SelStart-CPos;
end;
//======以上代码是用几个变量取文本框中一行字符的个数===========
end;
++可是出现以下问题:大哥我试了可是出这样一个问题:method 'keydown' hide virtual method of base type
'TwinControl'是怎么回事呀?你可以在窗体上新建一个dbdemo试一下,我不知道是怎么回事?谢谢!!!!
帮忙。。
lpos,cpos,linelength:integer;
procedure MyMemoCount(MyMemo:TMemo);
比如:
TForm1 = class(TForm)
public:
lpos,cpos,linelength:integer;
procedure MyMemoCount(MyMemo:TMemo);
end;
然后函数的实现代码这样写:
procedure TForm1.MyMemoCount(MyMemo:TMemo);
begin
Lpos:=SendMessage(MyMemo.Handle,EM_LINEFROMCHAR,MyMemo.SelStart,0);
Cpos:=SendMessage(MyMemo.Handle,EM_LINEINDEX,Lpos,0);
LineLength:=SendMessage(MyMemo.Handle,EM_LINELENGTH,Cpos,0);
Cpos:=MyMemo.SelStart-CPos;
//======以上代码是用几个变量取文本框中一行字符的个数===========
end;好了,直接下面这样调用就可以了:
MyMemoCount(dbMemo3);然后再去取那些变量的值。
结束!
'TwinControl'
procedure CountCharFromMemo(const Mem:TCustomMemo;
var vLPos,vCPos,vLength:integer);
begin
with mem do begin
vLpos:=SendMessage(Mem.Handle,EM_LINEFROMCHAR,Mem.SelStart,0);
vCpos:=SendMessage(Mem.Handle,EM_LINEINDEX,vLpos,0);
vLength:=SendMessage(Mem.Handle,EM_LINELENGTH,vCpos,0);
vCpos:=Mem.SelStart-vCPos;
end;
end;