附上在dbgrid上的畫圖指令為何可執行但無法顯出圖案 |
答題得分者是:ccchen
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
小弟使用了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 發送簡訊給我 |
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言: 直接用=比較大小寫是有分的, 改成compareText就可以不管大小寫了謝謝想了一天了 aricif CompareText(column.Field.displaytext,'true')=0 then begin ... if CompareText(column.Field.displaytext,'false')=0 then begin ...[note]你的程式似乎還有些小錯誤,我稍修改了一下才可執行,估計應是keyin錯而已,就不管了.主要須改成CompareText |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |