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

如何對連續的紀錄標示為同一區塊?

答題得分者是:eaglewolf
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-18 10:57:39 IP:203.66.xxx.xxx 訂閱
我有一資料表如下

ID STime ETime
1 2007/06/01 00:01:10 2007/06/01 00:01:20
2 2007/06/01 00:01:20 2007/06/01 00:01:30
3 2007/06/01 00:01:30 2007/06/01 00:01:40

4 2007/06/01 00:02:00 2007/06/01 00:02:10
5 2007/06/01 00:02:10 2007/06/01 00:02:20

6 2007/06/01 00:03:20 2007/06/01 00:03:30
.....................

這個資料表是紀錄某些事件持續的時間,同樣顏色的連續紀錄,代表時間是連續的,
例1,2,3是同一區塊,4,5是另一區塊,6是一區塊,
若我要使用TQuery TDBGrid依STime排序,顯示以上的紀錄,而且希望同一區塊的紀錄能以同一顏色顯示,請問怎麼作才對?
我試過在OnDrawColumnCell中寫,好像作不到.
編輯記錄
rachex2000 重新編輯於 2007-06-18 13:36:10, 註解 無‧
rachex2000 重新編輯於 2007-06-18 13:51:58, 註解 無‧
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-20 16:59:33 IP:211.75.xxx.xxx 訂閱
SQL Command 改成
Select A.ID , A.STime , A.ETime, B.STime As NextSTime From Table A Left Join Table B
On A.ETime = B.STime Order By A.STime
用Array去存每個Row應該顯示的顏色

然後再OnDrawColumnCell 事件中
去讀對應Array中的資料
參考如下:

<textarea class="delphi" rows="10" cols="60" name="code">var cCurrentColor:TColor; ColorArray:Array of TColor; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var ID:Integer; begin if Length(ColorArray) <> adoquery1.RecordCount then Exit; ID:= adoquery1.FieldByName('ID').AsInteger; TDBGrid(Sender).Canvas.Brush.Color := ColorArray[ID-1]; TDBGrid(Sender).Canvas.FillRect(Rect); TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State); end; procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet); var i:Integer; begin cCurrentColor := clRed; SetLength(ColorArray,adoquery1.RecordCount); for i:=0 to adoquery1.RecordCount - 1 do begin if (adoquery1.FieldByName('ETime').AsString <> adoquery1.FieldByName('NextSTime').AsString) then begin ColorArray[i]:= cCurrentColor; if cCurrentColor = clRed then cCurrentColor:=clBlue else cCurrentColor:=clRed; end else begin ColorArray[i]:= cCurrentColor; end; adoquery1.Next; end; //adoquery1.First; //self.Repaint; end; </textarea>


===================引 用 rachex2000 文 章===================
我有一資料表如下

ID STime ETime
1 2007/06/01 00:01:10 2007/06/01 00:01:20
2 2007/06/01 00:01:20 2007/06/01 00:01:30
3 2007/06/01 00:01:30 2007/06/01 00:01:40

4 2007/06/01 00:02:00 2007/06/01 00:02:10
5 2007/06/01 00:02:10 2007/06/01 00:02:20

6 2007/06/01 00:03:20 2007/06/01 00:03:30
.....................

這個資料表是紀錄某些事件持續的時間,同樣顏色的連續紀錄,代表時間是連續的,
例1,2,3是同一區塊,4,5是另一區塊,6是一區塊,
若我要使用TQuery TDBGrid依STime排序,顯示以上的紀錄,而且希望同一區塊的紀錄能以同一顏色顯示,請問怎麼作才對?
我試過在OnDrawColumnCell中寫,好像作不到.
------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
編輯記錄
eaglewolf 重新編輯於 2007-06-22 09:57:16, 註解 無‧
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-20 20:00:25 IP:61.219.xxx.xxx 訂閱
佩服,佩服。
------
Kevin
系統時間:2024-07-02 21:50:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!