關於stringgrid 的特色和框線問題 |
尚未結案
|
nata_li
一般會員 發表:4 回覆:5 積分:1 註冊:2006-11-28 發送簡訊給我 |
大家好, 我是一個新手來的
請問網上有沒有一些用中文寫的delphi 教材? 我在圖書館和網上找到的,都不大足夠 另外,如果我用一個2-dimentional array 載著char, 可以 read 入stringgird 嗎? stringgrid 是不是只可以read string? 如果不是, 可以read integer 嗎? 最後, 我想把stringgrid 的框線寫成這個樣子, 怎樣寫才能做到不用的線不同顏色, 不用粗幼呢? 誠然,我對delphi 真是不熟悉, 這個問題對各位高手來說可能是非常無聊的, 但請各位高手相助, 感激! |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
===================引 用 文 章=================== 大家好, 我是一個新手來的 請問網上有沒有一些用中文寫的delphi 教材? 我在圖書館和網上找到的,都不大足夠 ? 另外,如果我用一個2-dimentional array 載著char, 可以 read 入stringgird 嗎? stringgrid 採用與 excel相同的處理作業, 有一個 stringgrid.cells[col, row], 當然你也可以視為是一組2維陣列, 要丟入的話, 利用迴圈方式依序填入即可 stringgrid 是不是只可以read string? 如果不是, 可以read integer 嗎? stringgrid.cells 內存是string型態, 所以如果是數值, 可能你要自已再去做判斷 最後, 我想把stringgrid 的框線寫成這個樣子, 怎樣寫才能做到不用的線不同顏色, 不用粗幼呢? 這個你必須在 stringgrid.ondracell中自己去處理, 但這段不清楚你想做的(其實也不太好做), 給你我的一個sample, 參考看看, ondrawcell是針對每一個cell要做何種處理去寫的, 重點在canvas就是在處理cell中的格線, 底色, 字型等等的效果 procedure TForm_IOsend.stgSpecDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var xCol, xWidth: integer; xRow, xHeight: integer; begin with Sender as TStringGrid do begin if State=[gdSelected] then begin Canvas.Brush.Color:= $0080FFFF; //底色 Canvas.Font.Color:= clBlack; //字體顏色 end else if State=[gdFixed] then begin Canvas.Brush.Color:= clBtnFace; //底色 Canvas.Font.Color:= clBlack; //字體顏色 end // 門市配量小計CELL else if (ACol>=kCol) and (ARow=0) then begin Canvas.Brush.Color:= $00804000; Canvas.Font.Color:= clWhite; end // 進貨量CELL else if (ACol=kCol) and (ARow>=3) then begin Canvas.Brush.Color:= $008080FF; Canvas.Font.Color:= clBlack; end; if ((ARow=nRow) and (ACol=nCol)) and ((ARow>=3) and (ACol>=kCol)) then begin Canvas.Brush.Color:= $00C08080; Canvas.Font.Color:= clBlack; end; xRow:= Round(stgSpec.RowHeights[ARow]); xCol:= Round(stgSpec.ColWidths[ACol]); xHeight:= Abs(stgSpec.Font.Height); xWidth:= 9 * Length(Cells[ACol,ARow]) 2; xRow:= Round((xRow-xHeight)/2); // 數量置中(第5欄起) if (ACol>=kCol-2) then xCol:= Round((xCol-xWidth)/2) 1 else xCol:= kCol-2; Canvas.FillRect(Rect); //繪底色 Canvas.textout(Rect.Left xCol,Rect.Top xRow,Cells[ACol,ARow]); //output text end; end; |
nata_li
一般會員 發表:4 回覆:5 積分:1 註冊:2006-11-28 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
我想我回覆有一個重點你可能沒有注意到
重點在canvas就是在處理cell中的格線, 底色, 字型等等的效果 要畫粗細格式也是透過 canvas來處理, 由於canvas是針對一個cells, 所以 你要自己去控制, 將每一個cell畫好後, 組合起來就可以達到你想做的目標 可以查一下本站 canvas的討論, 或外面有很多關於繪圖的書籍, 建議你去找 找看相關說明canvas的用法, 我提供給你的是一個如何自己控制stringgrid達到 繪製grid的寫法, 並不是提供給你如何畫線 |
nata_li
一般會員 發表:4 回覆:5 積分:1 註冊:2006-11-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |