自制了一個叫ShapeButton的控制元件
class PACKAGE TShapeButton : public TCustomControl
使用程序中有兩個問題
1、Paint函式中繪字使用
DrawText(Canvas->Handle,Caption.c_str(),Caption.Length(),&TextRect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
怎樣才能像普通Label空間一樣,在對Text賦值的時候可以識別字串中的"\r\n" ?
2、程式中動態生成ShapeButton,每次重開程式會出現無法連接TShapeButton.obj的錯誤,此時將組件直接拖到表單上再編譯則可以通過,有什么解決方法嗎?
uj5u.com熱心網友回復:
第一個問題,DrawText函式的最后一個引數,去掉DT_SINGLELINE就行了,你知道SingleLine是什么意思吧。DrawText(Canvas->Handle, Caption.c_str(), Caption.Length(), &TextRect, DT_VCENTER | DT_CENTER);
第二個問題,呼叫了ShapeButton的工程,在單元中添加一行:
#pragma link "ShapeButton"
試試
uj5u.com熱心網友回復:
主要是把DT_SINGLELINE去除了DT_VCENTER的垂直居中要過也沒了,不能兼得令人頭疼啊
uj5u.com熱心網友回復:
還有妖哥,問一下如何使我這個控制元件在每次Caption改變后重繪?uj5u.com熱心網友回復:
Caption更改以后呼叫一下Invalidate函式uj5u.com熱心網友回復:
那第一個問題應該怎么辦妖哥,DT_VCENTER必須與DT_SINGLELINE搭配才有效果啊
uj5u.com熱心網友回復:
你要換行,那么首先要否決SingleLine。想垂直居中,可以考慮結合DT_CALCRECT,調整繪制的區域位置,手工實作垂直居中。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/102982.html
標籤:VCL組件使用和開發
上一篇:c++builder呼叫dll
下一篇:數字證書申請中遇到的問題
