全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1260
推到 Plurk!
推到 Facebook!

附上在dbgrid上的畫圖指令為何可執行但無法顯出圖案

答題得分者是:ccchen
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-28 03:46:17 IP:61.219.xxx.xxx 未訂閱
小弟使用了3個image名稱各為true_img,false_img,blank_img 分別加入了3個bmp圖形檔,宣告一個繪圖副程式grid_drawcolumncell table上設一個logical型態的欄位 執行沒問題 問題是圖形不會在dbgrid的logical欄位show 出來 請大家幫幫忙 謝謝 type tforml=class(tform) dbgrid1:tdbgrid; true_img:timage; false_img:timage; table1:ttable; datasource1:tdatasource; dbnavigator1:tdbnavigator; blank_img:timage; procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); private { Private declarations } public { Public declarations } end; function grid_drawcolumncell(sender:tobject; const rect:trect;datacol:integer; column:tcolumn;state:tgriddrawstate; true_img,false_img,blank_img:ticon):boolean; var Form1: TForm1; implementation {$R *.dfm} //grid_drawcolumncell()先指定dbgrid的欄位,並判斷是true or false //然後先覆蓋上一層空白圖,再放上一層true or false 的圖形 function grid_drawcolumncell(sender:tobject; const rect:trect;datacol:integer; column:tcolumn;state:tgriddrawstate; true_img,false_img,blank_img:ticon):boolean; var x,y,n:integer; begin result:=true; with sender as tdbgrid do begin for n:=0 to datasource.DataSet.FieldCount -1 do begin if datasource.DataSet.Fields[n].datatype=ftboolean then begin if(column.Field.displaytext='true')then begin canvas.StretchDraw(rect,blank_bmp); x:=(rect.right-rect.Left-true_bmp.Width)div 2; y:=(rect.bottom-rect.Top-true_bmp.height)div 2; canvas.draw(rect.Left x,rect.Top y,true_bmp); end; if(column.Field.displaytext='false')then begin canvas.StretchDraw(rect,a); x:=(rect.right-rect.Left-true_bmp.Width)div 2; y:=(rect.bottom-rect.Top-true_bmp.height)div 2; canvas.draw(rect.Left x,rect.Top y,false_bmp); end; end; end; end; end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin grid_drawcolumncell(sender,rect,datacol,column,state, true_img.picture.bitmap, false_emg.picture.bitmap, blank_img.picture.bitmap); aric
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-28 08:02:47 IP:203.217.xxx.xxx 未訂閱
直接用=比較大小寫是有分的, 改成compareText就可以不管大小寫了
 if CompareText(column.Field.displaytext,'true')=0 then begin
   ...
 if CompareText(column.Field.displaytext,'false')=0 then begin
   ...
[note]你的程式似乎還有些小錯誤,我稍修改了一下才可執行,估計應是keyin錯而已,就不管了.主要須改成CompareText
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-28 08:34:39 IP:61.219.xxx.xxx 未訂閱
引言: 直接用=比較大小寫是有分的, 改成compareText就可以不管大小寫了
 if CompareText(column.Field.displaytext,'true')=0 then begin
   ...
 if CompareText(column.Field.displaytext,'false')=0 then begin
   ...
[note]你的程式似乎還有些小錯誤,我稍修改了一下才可執行,估計應是keyin錯而已,就不管了.主要須改成CompareText
謝謝想了一天了 aric
系統時間:2024-05-04 22:04:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!