×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

大作不敢当,就把DELPHI相应的CODE列一下:

1)private procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
Message.Result := HTCAPTION
end;

2)http://www.trichview.com/

3)private procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
AControl: TControl;
Pt: TPoint;
begin
Pt := SmallPointToPoint(TWMNCHitTest(Message).Pos);
AControl := ControlAtPos(ScreenToClient(Pt), False);

if AControl <> nil then
begin
//测试位置,返回相应值,e.g.: HTRIGHT, HTLEFT, HTBOTTOM, HTBOTTOMRIGHT, ..., etc.
Message.Result := HTRIGHT;
end
else
inherited;
end;

4)DELPHI 自带相应的Class and RTTI (Persistent Object Run time Type Info).
Report

Replies, comments and Discussions:

  • 工作学习 / 学科技术讨论 / 大家好!这段时间闲来无事在网上写了四篇文章,献献丑。
    Moving a Form by Clicking Anywhere in the Window
    http://www.experts-exchange.com/Programming/Languages/.NET/Visual_CSharp/A_4146-Moving-a-Form-by-Clicking-Anywhere-in-the-Window.html

    TRichTextBox – A universal RichTextBox which can display animated images and more
    http://www.experts-exchange.com/Programming/Languages/.NET/Visual_CSharp/A_4189-TRichTextBox-A-universal-RichTextBox-which-can-display-animated-images-and-more.html

    A simple trick to resize a control at runtime
    http://www.experts-exchange.com/Programming/Languages/C_Sharp/A_4274-A-simple-trick-to-resize-a-control-at-runtime.html

    Achieve Persistence Through Serialization
    http://www.experts-exchange.com/Programming/Languages/C_Sharp/A_4275-Achieve-Persistence-Through-Serialization.html

    同样的文章也在codeproject做了发表,其他网站的就是被转贴的了。
    • 高手。
      • 都是简单的小trick.
        • 漂亮
        • 能在这些细节上下功夫那是大拿了。
    • 厉害!上层次了!
      • 确实,有MVP的水平。
    • 见笑了。有人PM我说我是不是good at GUI。其实我拿GUI来写点东西只是因为它更容易表达一些。对于中国人来说,代码是简单的,而表达才是困难的。因此没事写写更多的是为了重拾一下鸟语。
      • 算法上面一直没有想到比较general的有意义的东西。十年前接手一个医疗软件的时候,里面有大量的三维空间转换,我的任务是加一个对新设备的支持,其坐标和其他设备是相反的。
        我用了一个月加完之后结果总是不对,又用了两个月将原代码中的算法reverse engineering,才发现了其中的bug。原“作者”是俄罗斯来的一个数学正博士。原苏联的博士学位可以说是地球上最难获得的,原中国留苏人员,拿到副博士回到中国就按博士对待。我当时想跟他再确认一下,结果他还不认账,我也没有push什么,改了结果对了就得了。后来他自己还是找了另外的公司离开了。

        没事吹吹牛:)
      • 那时候在MFC时代,做了两个pattern,一个是对多文种支持的framework,一个是实现了MFC GUI 页面和组件的继承。后来dotnet都给做了,MFC现在大概没人用了。而当时STL中的很多思想,现在在C#中似乎用的更“滥”了。
      • 我曾经想用RichTextBox模仿MSN或Web聊天程序里用流的方式显示内容,比如选择一部分内容改变字体大小或删除,或者调整控件大小,要求格式自动调整,有图片或图标嵌入就很痛苦,不好做。我猜MSN还是用显示HTML的方式做的。
        • 微软应该是自己单独做的控件,其实难度不大,只是工作量有一些。
    • 做business和人打交道,与做technical和“物”打交道,基本上用的是大脑不同的两个半球:)回到加拿大,就得收收心,重新把脑袋往technical上面转转型。
      • 两面都做过, 为什么不在加拿大自己开个公司呢?
        • 说汉语和说英语是不同的!
          • 英语比汉语容易. :-)
        • 你开吧。我给你打工。
          • 我也报个名。
            • 凤尾竹,大股东来了,赶紧给套住。
              • 你们两个我哪敢收啊:-) 我可以贡献点意见. 我觉得北美的人际关系, 没有中国国内的复杂, 所以, 很多移民开公司也发展地不错. 我看见的主要有两类:
                1) 具有自己的产品. 这样的人都是本身技术很强, 可以做出自己特色的产品推销. 2)在大公司里一直做到高层(技术的或商业的), 因而拥有牢固的客户关系. 当自己出来单干了, 就给这些客户做项目赚钱.如果你适合其中的一类, 我认为都有资格自己开公司. 其他的案例, 大家可以再补充.
                • 基本上你没有自己开过公司。中国人在这里开公司的最大障碍不是人际关系,是法律和销售渠道。如果照你说得那样去做,基本上你一开张,就碰到法律麻烦。你给所有公司工作都会签一份保密协定,如果你使用了以前公司的客户,那等着上法庭把。
                  基本上我们还是做自己人的生意比较有把握。也能比较好的把握中间的trick。
                  • 你说的不错, 但是那份合同是有时间限制的. 过了那个时间, 就没问题了. 当然, 具体他们的客户是谁, 我还的确没有问过, 因为没有还没有朝这方面发展的打算. 多谢你的矫正.
                • 年轻就是资本。你可以试试。
                  • 没有放弃梦想的人, 都可以试试. 去年, 我去美国旅游, 路上遇到一个中国男子就是自己在美国开了一家IT公司, 做自己的产品.
                    • 当然,硅谷曾经有很多。所以说你也可以试试。
      • 回到加拿大得“收收心”。。。说的好啊!多少华人的酸甜苦纳又有几个华人真的明白?与人和与物打交道,真的是完全二种不同的生活。
        • 人物人物,两个都明白就不简单啊,
          • 你做的事情要求你同时和人和物打交道,你基本上也是个人物了。
            • Wouldn't that be everything?
              • maybe not...the god or Buddha does not fall into these categories...
    • 俺收藏了, 有时间好好欣赏一下. :-)
    • 大道至简。猜一猜,我的原型里GUIs用了几个mfc类,建这个原型用多少PHs.
      • 你网站里的3D图像软件?完全自己写的?还是用了现成的库?cedara听说过吗?
        • ex-Cedara?
          • right. and u?
            • haha...
              • still there?
                • left 2 years ago
                  • 我是十年前了...不知道那时候的国人还有谁在。
                    • 没有几个老的了吧,现在一共就十来个国人还在加拿大这边。
                    • If you were hired by Cedara instead of ISG, you are not senior enough.:-)
                      • 言外之意你是ISG的ex?
      • 这是个多文档,多线程,实时软件。我一个字一个字写的。OPENGL 3d rendering。Cedara投过简历,被拒了。
        • Cedara自己就是靠图像平台起家,做那个库的人确实很能干,它们也基本上就是靠吃那个老本,曾经基本上医疗软件都是用的它们的平台。可惜江河日下......
      • 非常想结识些懂精通DICOM/HL7的朋友
        • 自己开公司啊?
        • DICOM我用过读过,但说不上精通,要想精通,恐怕得去读个医学的什么士。
          • PIIM, IAP, Meta4, long live memory
            • 又一个ex?
        • 改日,我们一起聊聊?
        • 看着真亲切, 全忘了.
    • Great job -- but it's so...
      last decade -- codeguru/codeproject, Cedara/ISG, and maybe also mayer... :-)


      Just kidding. Don't mind me.:-)
      • 希望听听这个decade的...那啥...
      • I wan to know what is in current decade, too :)
        • everything web related
          • too vague...
          • 再过十年,二十年,或更长,Desktop application是不可能被替代的,无论从易用,性能,维护还是安全角度,现在已有很多公司已认识到这点,有很多又回归到这类系统。
            • 是啊。曾经有人幻想PC成为dummy terminal,而实际上硬件性能提高得这么快,一个普通PC也强过曾经的服务器很多,反倒应该更多地发挥“终端”的作用才符合资源利用。现在的“云”,也只是利用集群的机器来发挥超级计算机的功能,
              似乎有些从软件垄断走向服务垄断的趋势。我感觉可能性不大。

              IT的自然需求已经over peak,现在开始进入人为制造需求的阶段了。
    • 嘿嘿,可能大家不知道Delphi?LZ写的那些在它那里就只有2-3行的Code。
      作为在IT行业干了20年的我,有时觉得困惑和无奈,现在的开发工具是越来越多,但越来越没必要的复杂,没必要的Code太多,导致系统复杂和难维护。好的开发工具如DELPHI却很少有人使用,像楼主的几个例子,这在DELPH里是个最基本的功能,只用2-3行Code就能实现,但是。。。,感叹啊。

      这里有没有能人还在使用DELPHI,看大家能否探讨一下。实际上在TORONTO,有很多公司都在使用DELPHI,不管是旧或新的项目,只要你懂精通,Higher pay(70K-10K)是一点问题都没有的。
      • 希望有机会见识一下您的大作......
        • 纯DELPHI开发, 3-tier hearlthcare system, million级的,有机会探讨一下。
          • 我也曾经做过几个million级的项目,有一个还是C时代几百万行代码的系统。编程语言方面,应该放在次要的位置,系统越大,越应该在系统结构上多下功夫。而我写这几个trick,一方面是主题比较明确,
            另一方面主要是为了练练手(鸟语)。我相信其他语言也都可以实现这些功能,但你毕竟不能要求用.net和java的都放弃掉,全世界改用delphi。或者在.net和java里面嵌入delphi,就因为delphi也能干这些事?

            而系统结构方面的文章,我一直没有想到合适的题目,单独就一个特例的项目来写,没有太大的“即用性”价值,除非是为了出书。

            另外看了一下你工作的项目,应该是Business Logic更多一些,Accouting,Billing,Scheduli,等等,应该都属于Subsystem,重点在业务逻辑方面,数据结构需要长期的优化,而程序结构不至于很复杂,或许和PICS有类似之处。
        • 大作不敢当,就把DELPHI相应的CODE列一下:
          1)private procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
          procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
          begin
          Message.Result := HTCAPTION
          end;

          2)http://www.trichview.com/

          3)private procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
          procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
          var
          AControl: TControl;
          Pt: TPoint;
          begin
          Pt := SmallPointToPoint(TWMNCHitTest(Message).Pos);
          AControl := ControlAtPos(ScreenToClient(Pt), False);

          if AControl <> nil then
          begin
          //测试位置,返回相应值,e.g.: HTRIGHT, HTLEFT, HTBOTTOM, HTBOTTOMRIGHT, ..., etc.
          Message.Result := HTRIGHT;
          end
          else
          inherited;
          end;

          4)DELPHI 自带相应的Class and RTTI (Persistent Object Run time Type Info).
      • Sigh, It makes me headache to do code view :( Would you mind to show us any UML graphic of your 3-tier system, pls?
        • 对不起,因公司POLICY关系,不方便公开,探讨一下技术却是没问题的。
          系统大致包括:

          Accouting
          Billing
          Scheduling
          Documentation(SOAP, Forms, Scanned Image/Documents)
          North America claim submissions (US/CA electronics, print papers) and remittances
          Reporting
      • Let me say it in this way. For 3-tier system, what kind of system architecture will you set up? UML it, pls.
      • I think your million-level system is completely relied on the capacity of web server and database. It is not Delphi-related issue.
        • kind of agree:)
        • May I assume your Delphi app server supports million of service requests at the same time?
          • 他这个或许并发只有几十?
          • 实际上是这样的
            Application Server 响应客户的Request非常快,million of service requests 不算多,到最后还是取决于OS的资源和服务器性能,以及取决于Database能响应多少并发。常用的数据已被Cache在客户端(如果它Request的话),只有当其它用户修改和通知它后,它在需要的时候才向Server再一次请求该数据并Cache在本地供使用,直到下一次被修改为止。

            每个客户端请求,在Application Server端(使用多线程)对应于一个新的相应Service类(Accounting service, Schedule service, reporting service, ..., etc),去完成相应的功能(e.g. Database数据请求),直到Memory耗尽,但实际上不可能耗尽,因为,一个Service类完成请求并返回数据/结果给客户端后,就会被添加于空闲队列,以被后续相应的请求使用,如果在一定时间内未被使用,它会被Garbage Collected.
            • 1) How does a client know its cache is out of date (e.g. modified by other clients)? 2) the object caching/reusing is standard feature of EJB/COM+. Most of the time, CPU and database I/O is the bottleneck instead of memory.
              • Messaging
                1) We have a messaging hub/subscription engine (built by DELPHI), when the client starts, It subscribes all messages that it wants. when other clients' change requests sent to the server, server broadcasts (using UDP) the changes via LAN/WAN, so every client that subscribes the message will get noticed and handles them properly.

                2)I'm talking about data cache. I prefer native solution. Deployment as simple as possible, so that customers don't need to install any additional craps. In our case, only 1 client executable (installed on workstations), one Server executable (run as standalone application or run as window service), and one database and database engine. Thats all.
                • I got it. This is traditional C/S strictly speaking.
                  • Yes. The good thing is that they can be deployed across locations. e.g. the application server can be installed at Toronto, while the database server can be installed at Vancouvor
        • Then my statement of the capacity is correct. By the way, your can use relocation to extend your app server.
          • Ah, I see. but you mentioned 'Web Server', Application Server <> Web Server :)