tlistview有豐富的表現形式,可以顯示大圖示,小圖示,詳細資訊等。以下過程介紹如何在顯示詳細資訊方式時,在其中的某乙個子項上畫出進度條。這對於裝置監控程式是比較有用的,可用來表示裝置連線的時間等。 tlistview 有乙個advancedcustomdrawsubitem 方法,雙擊這個名稱即可進入以下函式體。
//在指定的子項上自畫進度條。倒計數減
procedure tfm_socketmanage.lv_stationadvancedcustomdrawsubitem(
sender: tcustomlistview; item: tlistitem; subitem: integer;
state: tcustomdrawstate; stage: tcustomdrawstage;
var defaultdraw: boolean);
var i:integer;
cvs:tcanvas;
tr:trect;
w:integer;
begin
if item.subitems.count <5 then exit; //如果顯示子項數不足5個,不畫。當item還在建立時就開始畫可能會出錯
try
if subitem=6 then //當前要畫的子項是第6項
begin
psck:=psocketrecord(item.data); //跟這個項顯示內容有關的結構體,儲存應該畫多少的值
if (psck<>nil) and (psck.overtime <=17) then i:=psck.overtime
else i:=0;
if boolean(listview_getsubitemrect(sender.handle,item.index,subitem,lvir_bounds,@tr)) then //取得要畫的區域
begin
cvs:=sender.canvas; //繪畫的tcanvas
w:=tr.right -tr.left; //確定要畫的範圍。
if w=0 then w:=1;
w:=(17-i)*w div 17;
tr.top :=tr.top +3;
tr.right :=tr.left +w;
dec(tr.bottom,4);
cvs.brush.color :=clblue; //設定畫刷顏色
cvs.fillrect(tr); //填充要畫的區域
end;
defaultdraw:=false; //不需要下一步再繪畫了
end;
except
end;
end;
只要canvas物件取到了,在上面畫些什麼就完全可以發揮創意性了,畫圖,打字,漸變,能想的都可以做。
在Python裡畫曲線
在python裡畫曲線,常常用到wx.dc 裝置上下文 和wx.pen畫筆,有可能需要下面的資源 wx.buffereddc 用於快取一套繪畫命令,直到命令完整並準備在螢幕上繪畫。這防止了顯示中不必要的閃爍。wx.bufferedpaintdc 和wx.buffereddc一樣,但是只能用在乙個wx...
DetailsView顯示特定項
detailsview類的datekey是唯讀的,所以不能通過他指定detailsview的顯示項。而通過sqldatasource的filterexpression 即可實現。deletecommand delete from article where articleid articleid i...
Android 畫虛線顯示實線的BUG
畫虛線一般寫個xml 其中dashgap是空隙寬度,dashwidth是線的寬度,當dashgap也就是空隙寬度為0時,顯示一條實線。然後在background或src中引用,但在android 4.0以上版本中會有bug,發現不管dashgap設定多大,顯示的都是一條實線。解決方法 關閉硬體加速。...