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

表格問題?如何使找到的記錄在表格中高亮顯示(如更改其色彩或字體等)!

尚未結案
longjibo
一般會員


發表:18
回覆:18
積分:12
註冊:2002-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-14 08:14:11 IP:218.16.xxx.xxx 未訂閱
急!DBGRID中當找到一條記錄時, 如何使其在表格中的當前行高亮顯示(如更改其色彩或字體等)!
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-14 10:00:31 IP:61.221.xxx.xxx 未訂閱
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if 找到資料 then //clBlue clYellow DBGrid1.Canvas.Font.Color:=clBlue; DBGrid3.DefaultDrawDataCell(Rect,Column.Field,State); end;
------
======================
昏睡~
不昏睡~
不由昏睡~
longjibo
一般會員


發表:18
回覆:18
積分:12
註冊:2002-11-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-17 07:42:29 IP:218.16.xxx.xxx 未訂閱
{  if 找到資料 then     //clBlue  clYellow    DBGrid1.Canvas.Font.Color:=clBlue;    DBGrid3.DefaultDrawDataCell(Rect,Column.Field,State); end;} [/quote] To:ko 用您的方法結果是所有行的字體都發生改變, 我是想將找到的記錄定位在當前DBGRID1的那一行改變字體! 請問有無改進方法?謝謝!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-17 07:55:40 IP:202.39.xxx.xxx 未訂閱
看看這樣行不行?
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if gdSelected in State then begin
    if 找到資料 then     //clBlue  clYellow
     DBGrid1.Canvas.Font.Color:=clBlue;
  end;
  DBGrid3.DefaultDrawDataCell(Rect,Column.Field,State);
end;
-- Everything I say is a lie.
ccchen
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-17 08:11:11 IP:61.219.xxx.xxx 未訂閱
方法是沒錯的, 問題是如何用. 你必須依自己需要想清楚 DrawColumnCell傳入之參數包含了DataCol及Column, 用這兩參數就可以明確知道在Draw那一個cell    例如Button1 Click時進行locate Query1.locate(...) keyvalue:=query1.fields[xx].asstring; //用一global參數保存關鍵值 refreah;  //重新paint 在DrawColumnCell中
  if Query1.fields[xx].asstring=keyvalue then begin  //比較是否為關鍵值
    DBGrid1.Canvas.Font.Color:=clBlue;
    DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State);
  end;
發表人 - ccchen 於 2002/12/17 08:12:13
ff932
一般會員


發表:0
回覆:2
積分:0
註冊:2002-09-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-28 01:26:03 IP:211.74.xxx.xxx 未訂閱
版主你好: 你所提供的方法,我剛好有程式已測試成功;不過若查詢無法吻合時,第一筆資料會高亮顯示,是否有方法改善?煩請解答,謝謝!
ccchen
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-28 09:41:49 IP:203.217.xxx.xxx 未訂閱
程式po上來看看才知道
ff932
一般會員


發表:0
回覆:2
積分:0
註冊:2002-09-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-30 14:15:06 IP:61.30.xxx.xxx 未訂閱
procedure TForm1.ToolButton3Click(Sender: TObject); begin close; end; procedure TForm1.ToolButton2Click(Sender: TObject); var StyleNum: string; begin StyleNum := inputbox('查詢貨號','請輸入貨號','1234567890123'); Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('SELECT * FROM fgip005.dbf'); Query1.Open; Query1.Locate('STYLENUM',StyleNum,[]); keyvalue := Query1.fields[0].asstring; DBGrid1.Repaint; if Query1.FieldByName('STYLENUM').AsString = StyleNum then begin Query1.Locate('STYLENUM',StyleNum,[]); end else MessageDlg('找不到該筆資料!', mtError, [mbOk], 0); end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Query1.fields[0].asstring=keyvalue then //比較是否為關鍵值 begin DBGrid1.Canvas.Font.Color:=clRed; DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State); end; end;
banson1716
高階會員


發表:55
回覆:182
積分:167
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-31 02:53:38 IP:61.223.xxx.xxx 未訂閱
DBGrid中每一行顏色可按照自己的意願控制 procedure Tinfo.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if query1.FieldByName(’all’).asstring>40’ then begin dbgrid1.Canvas.Font.Color:=clred; dbgrid1.Canvas.Brush.color:=clyellow; end else begin dbgrid1.Canvas.Font.Color:=clblue; dbgrid1.Canvas.Brush.color:=clyellow; end; dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state); end;
系統時間:2024-06-28 18:39:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!