如何對連續的紀錄標示為同一區塊? |
答題得分者是:eaglewolf
|
rachex2000
一般會員 發表:21 回覆:32 積分:20 註冊:2003-04-28 發送簡訊給我 |
我有一資料表如下
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中寫,好像作不到. 編輯記錄
|
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |