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

StringGrid上色

答題得分者是:Stallion
7-11
一般會員


發表:53
回覆:33
積分:16
註冊:2005-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-08 20:50:36 IP:220.142.xxx.xxx 訂閱
請問各位..我用以下方法將StringGrid上色並輸出文字...但輸出的文字都是靠左...我要如何讓輸出的文字靠右排列? <textarea class="delphi" rows="10" cols="60" name="code"> procedure TForm_Dayclss.DataGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin With Sender as TAdvStringGrid do Begin if ( ARow > 0 ) and ( ACol > 0 ) then //注意ARow及Acol從0開始 Begin if ( ACol = 1 ) or (ACol = 5) Then Begin Canvas.Brush.Color := $FFCCCC; End; if ( ACol = 2 ) or (ACol = 6) Then Begin Canvas.Brush.Color := $99FF99; End; if ( ACol = 3 ) or (ACol = 7) Then Begin Canvas.Brush.Color := $FFCC99; End; if ( ACol = 4 ) or (ACol = 8) Then Begin Canvas.Brush.Color := $99FFFF; End; if ( ACol = 9 ) or (ACol = 10) Then Begin Canvas.Brush.Color := $CCFF99; End; Canvas.Font.Color := clBlack; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left 5, Rect.Top, cells[ACol, ARow]); End; End; end; </textarea>
hagar
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-09 08:33:12 IP:210.242.xxx.xxx 未訂閱
加紅色的部份試試:
<textarea class="delphi" rows="10" cols="60" name="code"> procedure TForm_Dayclss.DataGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var iTxtLen: TextLength; begin With Sender as TAdvStringGrid do Begin if ( ARow > 0 ) and ( ACol > 0 ) then //注意ARow及Acol從0開始 Begin // ... iTxtLen := Canvas.TextLength(Cells[ACol, ARow]); Canvas.TextOut(Rect.Right - iTxtLen - 5, Rect.Top, cells[ACol, ARow]); End; End; end;</textarea>
編輯記錄
hagar 重新編輯於 2007-05-09 08:33:44, 註解 無‧
hagar 重新編輯於 2007-05-10 08:41:13, 註解 無‧
7-11
一般會員


發表:53
回覆:33
積分:16
註冊:2005-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-09 12:58:58 IP:220.142.xxx.xxx 訂閱

請教hagar兄~為何我加入紅色部分後出現 Undeclared identifier: 'TextLength'

===================引 用 hagar 文 章===================
加紅色的部份試試:

procedure TForm_Dayclss.DataGridDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
? iTxtLen: TextLength;
begin
????With Sender as TAdvStringGrid do
????Begin
????? if ( ARow > 0 ) and ( ACol > 0 ) then? //注意ARow及Acol從0開始
????????Begin
????????? // ...

????????? iTxtLen :=?Canvas.TextLength(Cells[ACol, ARow]);
????????? Canvas.TextOut(Rect.Right - iTxtLen - 5, Rect.Top, cells[ACol, ARow]);
????????End;
????End;
end;

?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-09 13:39:10 IP:211.22.xxx.xxx 未訂閱
<textarea cols="60" rows="10" class="delphi" name="code"> procedure TForm_Dayclss.DataGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var iTxtLen: integer; begin With Sender as TAdvStringGrid do begin if ( ARow > 0 ) and ( ACol > 0 ) then begin // ... iTxtLen := Canvas.TextWidth(Cells[ACol, ARow]); Canvas.TextOut(Rect.Right - iTxtLen - 5, Rect.Top, cells[ACol, ARow]); end; end; end; </textarea>

//還有你所有提出過的問題都沒結案,請儘速結案,不然版大不知道要從啥時候開始扣分了!
7-11
一般會員


發表:53
回覆:33
積分:16
註冊:2005-12-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-09 13:57:23 IP:220.142.xxx.xxx 訂閱
謝謝謝謝

===================引 用 Stallion 文 章===================
<textarea class="delphi" rows="10" cols="60" name="code"> procedure TForm_Dayclss.DataGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var iTxtLen: integer; begin With Sender as TAdvStringGrid do begin if ( ARow > 0 ) and ( ACol > 0 ) then begin ???? // ... ???? iTxtLen := Canvas.TextWidth(Cells[ACol, ARow]); ????Canvas.TextOut(Rect.Right - iTxtLen - 5, Rect.Top, cells[ACol, ARow]); end; end; end; </textarea>

//還有你所有提出過的問題都沒結案,請儘速結案,不然版大不知道要從啥時候開始扣分了!
系統時間:2024-05-17 1:41:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!