我在网上搜索了一下,Edit或DBEdit中文字左右居中的问题也可以说解决了,
但是上下居中好象没有什么好的方法,请大虾们指点。谢谢!

解决方案 »

  1.   

    调整字体大小不是解决问题的根本之道。假如Edit的宽度一定,
    5号字正好,字体变为4号字后,不是有部分显示不出来了吗?
      

  2.   

    动态调整EDIT的高度,根据字体大小调整~~
    说个笨办法,隐藏一个Label,字体和EDIT的字体相同,根据Label的高度,来调整EDIT的高度
      

  3.   

    TEdit 没有开放相应属性,楼主可以用TMemo或者TRichEdit代替TEdit
    也可以从TEdit继承然后自己写一下对齐
      

  4.   

    控件的AutoSize裡面有大小計算的整個過程, 可以分離出來的, 搬進去就是了
    而對齊中和對齊右, 這兩個是要自己寫Paint的, 我寫的DBEdit裡面也是要自己畫上去的, 不是這樣就不行
    如果要實現編輯的時候也是對齊中和右, 這個就難了...
      

  5.   

    肯定是有办法实现上下居中的,继承EDIT类,栏截消息,用画布,还画不到中间吗?20分啊,对问题不够重视,我也不想再说了。
      

  6.   

    我虽然注册CSDN也有一年多了,但其实我不经常上,所以我还是新手,我自己好象是零分,
    至于怎么加分我也不太清楚(从没加过)。
    我说过了,Edit左右居中是解决了,如有不明白的,我可以把网友提供的方法传上来,其实网上也有。
    我现在主要问“上下居中”,难道就没有解决的方法了,还是有会的不愿意说?
    公布出方法来我想对好多人都有用,大家都会感激你的。
      

  7.   

    就目前的TEDIT组件来说事不支持的,要想实现上下居中需要自己写~~
    弱弱的问一句:LZ偶不知道你会不会结贴……?
      

  8.   

    两种方法,一是派生一个新的Edit控件,增加对齐属性;二是Delphi升级,delphi2009以后的Edit控件都有这个属性。
      

  9.   

    我说过了,我是新手,所以以前我问过一个问题确实没有结贴(后来我也结了),现在我知道了肯定要结的。
    我想确实是得重新派生一个新的控件,左右居中按网友提供的方法是实现了,并且也很简单,
    谁有能实现上下居中的方法呢?另外我一直想等Delphi有了真正的中版后再升级一下,
    可能等不到那天了。2009不知好用不好用?望用过的网友说一下。
    非常非常感谢大家的回复!!!
      

  10.   

    myqpxbn也真会开玩笑,我要会写还会发贴问吗?
    现在只会写左右居中的Edit组件,不知道上下居中该用那些api函数,
    或用什么方法.
      

  11.   

    用cxedit就可以了,本有属性可设
      

  12.   

    計算上下居中, 在顯示的時候可以實現, 在寫的時候比較難實現了, 光標會對不準的上下居中首先是通過 GetTextMatrics這個系統函數, 獲得字體的規格以後( 具體看MSDN ) 可以得到一個字的具體高度然後GetClientHeight函數可以領取EDIT的高度, 然後相關除二就是文字的起劃高度啦, 這樣就能夠居中了
      

  13.   

    感谢各位的指点,不过都没有具体的代码啊。可惜我不懂API,顺便问一下,学习API最好的书是哪本?唉,为什么label控件有上下居中的功能呢?
      

  14.   

    刚从网上搜了个VC的例子,哪位能将其改成Delphi的代码?先谢谢!下面是原文:感谢Joephia !他的代码我改成了API形式并获得成功!我的代码更简单,就是让文字距编辑框上沿有4个像素距离。当然可以多写几行代码以让这个值更灵活些。 RECT rect ; GetClientRect(hwndEdit,rect); 
    OffsetRect(&rect,0,4); 
    SendMessage(hwndEdit,EM_SETRECT,0,(LPARAM)&rect); 呵呵,真没想到这么简单!以前在网上搜过也没找到一个解决方法,更有人称要完全自绘才行,真是吓坏我也^^ ,再次感谢各位的回贴,感谢Joephia !结贴散分,网友还有什么问题意见就请联系我QQ吧:184263203 。
      

  15.   

    使用TDEMO控件,保持三行高度。分别可以上下居中。