如何變更vb語法成delphi7語法 DataGrid 欄位資料選取 |
答題得分者是:cashxin2002
|
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
|
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DBGrid1.Columns[0].Field.AsString > '920825' then //若為數值欄位則將藍色處改為﹕AsInteger > 920825 begin DBGrid1.Canvas.Font.Color := clBlue; DBGrid1.DefaultDrawColumncell(Rect,DataCol,Column,State); end; end;參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/08/25 17:38:37
------
忻晟 |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 上篇的程式碼﹕當Columns[0]欄位值中的值大于920825時﹐其整條資料錄的字體都會變成藍色﹐如果只想變Columns[0]這一個欄位的字體顏色時﹐可寫成如下﹕
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DBGrid1.Columns[0].Field.AsString > '920825' then //若為數值欄位則將藍色處改為﹕AsInteger > 920825 begin DBGrid1.Column[0].Font.Color := clBlue; DBGrid1.DefaultDrawColumncell(Rect,DataCol,Column,State); end; end;參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/08/25 17:47:39
------
忻晟 |
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
求教 為何前輩提供程式碼為何不行,是不是小弟那裡設錯 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DBGrid1.Columns[0].Field.AsString > ''920825'' then
begin
DBGridSelect.Column[0].Font.Color := clBlue;
DBGridSelect.DefaultDrawColumncell(Rect,DataCol,Column,State);
end;
end; 錯誤訊息:
[Error] Main1.pas(406): Undeclared identifier: 'DBGrid1DrawColumnCell'
[Error] FormMain.pas(406): ';' expected but '(' found
[Error] FormMain.pas(406): '=' expected but ';' found
[Error] FormMain.pas(406): '=' expected but ';' found
[Error] FormMain.pas(406): '=' expected but ';' found
[Error] FormMain.pas(406): '=' expected but ')' found
[Error] FormMain.pas(408): Undeclared identifier: 'DBGrid1'
[Error] FormMain.pas(408): 'THEN' expected but identifier 'Columns' found
[Error] FormMain.pas(411): Missing operator or semicolon
[Error] FormMain.pas(411): Missing operator or semicolon
[Error] FormMain.pas(413): Missing operator or semicolon
[Fatal Error] Main.dpr(5): Could not compile used unit 'Main1.pas'
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
Hi.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState); if ADOQuery1.FieldByName('YourFieldName').AsString <= '920825' then //若為數值欄位則將藍色處改為﹕AsInteger < 920825 begin Canvas.Font.Color := clBlue; DefaultDrawColumnCell(Rect, DataCol, Column, State); end;Please try it again. <><>===================== 努力,相信會獲得美麗! 忻晟>> 發表人 -
------
忻晟 |
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
引言: 還是不行 因為根本沒有 TForm1.DBGrid1DrawColumnCell < >< >您好﹗ 不好意思﹐電腦出了些問題﹐所以回覆慢了﹗ 這個事件是DBGrid的onDrawColumnCell﹐所以并不是Form的東東喔 < class="code">procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState); if ADOQuery1.FieldByName('YourFieldName').AsString <= '920825' then //若為數值欄位則將藍色處改為﹕AsInteger < 920825 begin DBGrid1.Canvas.Font.Color := clBlue; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/08/26 11:03:47
------
忻晟 |
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 小弟剛才測試了這段程式﹐可以根据條件正常顯示出顏色的變化﹒ 小弟將這段再解釋一下﹐參考看看﹕
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState); //首先﹐這段Code是寫在DBGrid1元件的OnDrawColumnCell(重繪)事件中﹒ if ADOQuery1.FieldByName('YourFieldName').AsString <= '920825' then //設定判斷條件﹕如果ADOQuery1中的欄位(請用您作以條件之欄位名來代替 //YourFieldName)大于'920825'﹐此處的假設的欄位為字串形態﹐若此欄位 //為數值欄位則將藍色處改為﹕AsInteger < 920825 begin DBGrid1.Canvas.Font.Color := clBlue; //符合以上條件的話﹐就將其字體顏色設為藍色 DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); //進行重繪 end;不知這樣解釋是否清楚﹐如果還有問題﹐歡迎提之﹒ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
jt25
一般會員 發表:14 回覆:30 積分:8 註冊:2003-08-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |