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等等?怎么封装这些不同的对象呢?〉
请高手帮忙?因为在好多地方要用到这些东西
是不是几个同类的部件要使用一个事件,但是要得到其中的内容?如果是这样的话使用sender应该可以解决。
Lpos:=SendMessage(TdbMemo(sender).Handle,EM_LINEFROMCHAR,dbMemo3.SelStart,0);
Cpos:=SendMessage(TdbMemo(sender).Handle,EM_LINEINDEX,Lpos,0);
LineLength:=SendMessage(TdbMemo(sender).Handle,EM_LINELENGTH,Cpos,0);
Cpos:=TdbMemo(sender).SelStart-CPos;
把所有DBDemo的keydown事件指向这一个。
{ Public declarations }
procedure KeyDown(Sender: TObject; var Key: Word;var lpos,cpos,linelength:integer;
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试一下,我不知道是怎么回事?谢谢!!!!
procedure KeyDown(Sender: TObject; var Key: Word;var lpos,cpos,linelength:integer;
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;
========================
已经没问题.只是form本身已经继承了twincontrol的keydown事件了.所以你只有用其他的过程名称了.