Delphi TListView顯示項裡畫進度條

2021-04-09 10:53:39 字數 1384 閱讀 1112

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設定多大,顯示的都是一條實線。解決方法 關閉硬體加速。...