【活跃论坛气氛】之VCL使用经验分享
这里只发一些 使用过程中的问题。对于一些某某功能的实现代码就不发了,很多东西网上可搜到。
记录的不多,希望对各位有用。有错误,请见谅并指正,谢谢!
1、Login Form设计误区:
代码类似这样:
- Delphi(Pascal) code
begin Application.Initialize; Application.MainFormOnTaskbar := False; Application.Title := 'AAAAAAAA'; Application.CreateForm(TfrmMainMenuSF, frmMainMenuSF); Application.CreateForm(TfrmLogin, frmLogin); frmLogin.ShowModal; if frmLogin.ModalResult <> mrOK then Application.Terminate; else Application.Run;end.
在ModalResult<>mrOK的状况下,依据前面的执行过程,执行Terminate是没有意义的,是在有message-loop情行的,但即使后面执行processmessage也没有用,因为只是处理了Terminated的标志而已 。
其实正确的写法,应该是需要先释放资源,因为前面有create各种form,应该是需要释放的。可以考application.run方法,透其做法可知:在程式退出message-loop行DoneApplication放各源。
所以应该改为:
- Delphi(Pascal) code
begin Application.Initialize; Application.MainFormOnTaskbar := False; Application.Title := 'AAAAAAA'; Application.CreateForm(TfrmMainMenuSF, frmMainMenuSF); Application.CreateForm(TfrmLogin, frmLogin); frmLogin.ShowModal; if frmLogin.ModalResult <> mrOK then begin Application.ShowHint := False;//这个要保留 Application.Destroying; Application.DestroyComponents; Application.Terminate; end else Application.Run;end.
2、cxGrid使用问题记录
3、理解vcl 窗口释放过程
4、使用IB_Connection结合IB_Transaction处理事务应该注意的事项:
由于IB_Transaction只是简单的封装,在事务提交或回滚后,并没有断开事务与数据库的联机(即注销事务ID在引擎中的登记信息),所以在用IB_Transaction处理一些记录后,当再用其它组件对数据库进行事务交易后,用IB_Transaction处理其中一笔前一个事务处理过的数据时,则会发生‘死锁’现象,因为此时的IB_Transaction所记录的是旧数据,因为有用其它组件进行过交易,此时IB_Transaction不能对这笔数据进行处理,必须断开此事务,即IB_Transaction.Close注销此事务的登记信息,然后重新开始事务,这样就保证了事务开始前所获得的记录是最新的,数据库引擎在接收到这样的一个新的事务请求后就立马允许操作了。
[解决办法]
谢楼主分享!!!!!!!!!!!!!1
[解决办法]
感谢楼主,希望能坚持,呵呵
[解决办法]
[解决办法]
感谢楼主分享!!!!!!!!!!!!!!!
[解决办法]
先标记下,晚上回去学习学习
[解决办法]
感谢楼主分享。。。。。。。。。。。。。。
[解决办法]
感谢楼主分享!!!!!!!!!!!!!!!
[解决办法]
感谢楼主感谢楼主感谢楼主
[解决办法]
!!!!!!!!!!!!!!!
[解决办法]
感谢楼主分享感
[解决办法]
感谢楼主,希望能坚持,感谢分享!!!
[解决办法]
感谢楼主分享。。。。。。。。。。。。。。
[解决办法]
学习。。 xz
[解决办法]
感谢楼主分享,坚持。。。
[解决办法]
我认为如果非必要,这个可以不要的:
Application.CreateForm(TfrmMainMenuSF, frmMainMenuSF);
因为你必须要先登录,然后才是权限,建立权限菜单,因此,你只要构建需要的登录窗口即可,其他要等判断登录后的情况而定,而不是一般情况下建立很多东西而不 show 出来放在后台有什么用?这样已经是设计有问题了吧?
请教?
[解决办法]
多谢LZ分项~~~~~~~~~~·
[解决办法]
感谢楼主分享!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[解决办法]
- Delphi(Pascal) code
begin Application.Initialize; Application.MainFormOnTaskbar := False; Application.Title := 'AAAAAAAA'; Application.CreateForm(TfrmMainMenuSF, frmMainMenuSF); Application.CreateForm(TfrmLogin, frmLogin); frmLogin.ShowModal; if frmLogin.ModalResult <> mrOK then Application.Terminate; else Application.Run;end.
[解决办法]
Mark,学习!
回复内容太短了!
[解决办法]
感谢楼主分享!!!!!!!!!!!!!!!
[解决办法]
支持,学习
回复内容太短了!
[解决办法]
平时没有注意这此问题。
[解决办法]
谢谢!拿出来分享的内容真是太精彩了
[解决办法]
cxGrid 对我还是蛮有用处的,谢谢楼主分享了
[解决办法]
我都是搁到窗体里。
[解决办法]
分享,LZ。
[解决办法]
不错不错,值得表扬!
[解决办法]
提个建议,版主应该能编辑帖子吧,建议象一般论坛那样把各楼的内容都收集到顶楼,或在顶楼提供联接,不然看起来太麻烦了。
[解决办法]
谢谢楼主分享,顶了,楼主好人
[解决办法]
支持楼主。。。。。。。
[解决办法]
谢谢楼主分享....
[解决办法]
[解决办法]
谢谢楼主,深度学习中
[解决办法]
学习下 哈哈 好久没进来学习了
[解决办法]
好东西~~谢谢分享~~楼主幸苦了
[解决办法]
好东西值得好好学习,正好收藏了
[解决办法]
望尘莫及哦!学习修炼中。。。。。。。。。
[解决办法]
,精彩啊
[解决办法]
楼主辛苦,转走了 回复内容太短了
[解决办法]
好帖不能沉,顶起来!