读书人

【活跃论坛气氛】之VCL使用经验分享解

发布时间: 2012-02-20 21:18:23 作者: rapoo

【活跃论坛气氛】之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。
[解决办法]
不错不错,值得表扬!
[解决办法]
提个建议,版主应该能编辑帖子吧,建议象一般论坛那样把各楼的内容都收集到顶楼,或在顶楼提供联接,不然看起来太麻烦了。
[解决办法]
谢谢楼主分享,顶了,楼主好人
[解决办法]
支持楼主。。。。。。。
[解决办法]
谢谢楼主分享....
[解决办法]
探讨
不能编辑,不知道 博士 是怎么编辑的

[解决办法]
谢谢楼主,深度学习中
[解决办法]
学习下 哈哈 好久没进来学习了
[解决办法]
好东西~~谢谢分享~~楼主幸苦了
[解决办法]
好东西值得好好学习,正好收藏了
[解决办法]
望尘莫及哦!学习修炼中。。。。。。。。。
[解决办法]
,精彩啊
[解决办法]
楼主辛苦,转走了 回复内容太短了

[解决办法]
好帖不能沉,顶起来!

读书人网 >.NET

热点推荐