AlphaControls 读取存贮数据VCL OnChange事件的处理

AlphaControls 读取存贮数据VCL OnChange事件的处理
  
    AlphaControls控件,窗口时显示,对于VCL控件的处理,需要通过调用皮肤模板重新画出来。因此,在窗口的显示过程中,对VCL控件的数据装载(变更),会引起窗口的不段地跟随变化(画图),造成不必要的屏幕闪动,或引导死屏现象。
     特别是使用读取存贮数据VCL,读取存贮数据数据时,有一定的时间,如果不考虑因素,就会造成窗口的缓慢与出错。

    这是AlphaControls控件的一大隐患。(这也是皮肤控件的共性特征)


    如何使用AlphaControls控件,带来C/S软件带来新鲜亮丽效果。编程中,如何改(完)善,使用AlphaControls控件,引起的囧境。通过一段时间,使用AlphaControls控件,发现在Fprm窗口显示时,特别对VCL控件的OnChange事件特别敏感,如果我们关闭OnChange事件,即在FormOnShow过程中,让窗口的VCL处于静态,有效地改善使用AlphaControls控件带来的问题。
    特别是几个读取存贮数据VCL,需要等待一定时间初始化,读取系统数据的VCL反应明显。

    下面就是针对,TsShellTreeView,TsDirectoryEdit和TClientDataSet关联DBGridEh内存表,初始化VCl未成形(Creat末完成),对它赋值就会出错。    一、让VCL的OnChange事件,全部改名,后缀一个Temp,这样OnChange事件作为后续再加入的(临时)事件。

procedure TUploatServerFrm.sShellTreeView1ChangeTemp(Sender: TObject;
  Node: TTreeNode);
begin
  FileListBox1.Directory:=sShellTreeView1.path;
  Button1Click(Sender);
end;

procedure TUploatServerFrm.sDirectoryEdit1ChangeTemp(Sender: TObject);
begin
  sShellTreeView1.Root:=sDirectoryEdit1.Text;
end;

    二、在VCL的OnChange事件,全部为空


    三、Form加入一TTimer控件,在OnShow的最后通过代码启动TTimer,等待约1000至2000稁秒,将需要OnChangeg事件的VCL,加入带后缀名的OnChangeTemp方法。
    1、Timer1初始

    Timer1.Enabled:=False;
    Timer1.interval:=1000;         // 毫秒

 
    2、Timer1事件

 

procedure TUploatServerFrm.Timer1Timer(Sender: TObject);
begin
  sShellTreeView1.SetFocus;
  Button1Click(Sender);                                        // DBGridEH内存表读取数据 
  sShellTreeView1.OnChange:=sShellTreeView1ChangeTemp;         // 加入关联事件
  sDirectoryEdit1.onChange:=sDirectoryEdit1ChangeTemp;
  Timer1.Enabled:=False;
end;

    四、OnShow处理

procedure TUploatServerFrm.OnShow(Sender: TObject);
var i:integer;
begin
  ......
  sDirectoryEdit1.Text:=sClientDisk;                // 初始化数据 
  sShellTreeView1.Path:=MainPath;
  FileListBox1.Directory:=sShellTreeView1.path;     // 关闭了OnChage 需同步数据
  sShellTreeView1.SetFocus;
  Timer1.Enabled:=True;                             // 最后启动Timer1
end;

    问题基本解决。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值