各位高手帮帮我,如何写这样的TDBEdit(100分)

  • 主题发起人 主题发起人 pangzhenguang
  • 开始时间 开始时间
清新空气, 不是我懒,这个功能我都测试了三天了,没成功,你说的方法我也试过。都没能如我所要的。为了这个控件花几天的时间去研究,还能说我懒吗?
 
这是个数据库控件啊~大哥~一有改变就会是编辑状态的啦
 
这个用ASP编的话会好容易的~呵呵
 
来,我来说两句,其实这个问题很简单,可以包装成控件,也可无,三下两下搞定...

方法:
1.放一个TApplication组件
2.找到TApplication.OnIdle事件
3.然后这样写,我用dbedit1来举例:

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
var
a,b: pchar;
begin
if not dbedit1.Focused then
begin
a := pchar(formatdatetime('yyyy-mm-dd', now));
b := allocmem(255);
getwindowtext(dbedit1.Handle, b, 255);
if trim(b) <> trim(a) then
setwindowtext(dbedit1.Handle, a);
freemem(b);
end;
end;

保证合楼主的胃口
 
你可以加我QQ,我把程序发给你!
 
我的方法还不能解决楼主的问题嘛,兄弟我可是测试过的
 
hongxing_dl,,如果我要将你的做法放在控件里
TMYDBEdit=class(TDBEdit)
private
protected
public
published
end.
那如何做呢,我将你的做法放在
procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
procedure CMExit(var Message: TCMExit); message CM_EXIT;
这两个事件里,不行,它直接修改了我的数据库资料
 
1。启动dbedit1.Text := DateTimeToStr(now);
2。在获取焦点的时候连接数据库。。。会自动显示数据信息(如果数据集在打开状态下)。
3。OnExit的时候dbedit1.Text := DateTimeToStr(now);
通过 DBEdit1.DataSource := nil;
DBEdit1.DataSource := DataSource1; 来做。。。
 
就是在显示日期的时候记得断开数据库 DBEdit1.DataSource := nil;
就可以了。。。
 
这样又断又连,会不会影响速度呀
 
为什么非得做成控件呢?
你控件怎么做的,那两个事件里怎么处理的?
 
都是一个解决的办法,谢谢xinxinhg,hongxing_dl,清新空气,三位,根据你们的热情度给分,谢谢你们的解答。
 
不会影响速度。他的断与连不会影响数据。。只是该控件的单个行为。。不会导致数据库的Open/Close重新读取数据。
 
后退
顶部