線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4186
推到 Plurk!
推到 Facebook!

關於stringgrid 的特色和框線問題

尚未結案
nata_li
一般會員


發表:4
回覆:5
積分:1
註冊:2006-11-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-22 15:21:18 IP:219.77.xxx.xxx 訂閱
大家好, 我是一個新手來的
請問網上有沒有一些用中文寫的delphi 教材?
我在圖書館和網上找到的,都不大足夠

另外,如果我用一個2-dimentional array 載著char,
可以 read 入stringgird 嗎?
stringgrid 是不是只可以read string?
如果不是, 可以read integer 嗎?

最後, 我想把stringgrid 的框線寫成這個樣子,
怎樣寫才能做到不用的線不同顏色, 不用粗幼呢?
http://www.theage.com.au/ffximage/2005/05/21/sudoku_narrowweb__200x202.jpg
誠然,我對delphi 真是不熟悉,
這個問題對各位高手來說可能是非常無聊的,
但請各位高手相助, 感激!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-12-27 11:59:34 IP:61.67.xxx.xxx 未訂閱

===================引 用 文 章===================
大家好, 我是一個新手來的
請問網上有沒有一些用中文寫的delphi 教材?
我在圖書館和網上找到的,都不大足夠
?
另外,如果我用一個2-dimentional array 載著char,
可以 read 入stringgird 嗎?
stringgrid 採用與 excel相同的處理作業, 有一個 stringgrid.cells[col, row], 當然你也可以視為是一組2維陣列, 要丟入的話, 利用迴圈方式依序填入即可
stringgrid 是不是只可以read string?
如果不是, 可以read integer 嗎?
stringgrid.cells 內存是string型態, 所以如果是數值, 可能你要自已再去做判斷
最後, 我想把stringgrid 的框線寫成這個樣子,
怎樣寫才能做到不用的線不同顏色, 不用粗幼呢?
http://www.theage.com.au/ffximage/2005/05/21/sudoku_narrowweb__200x202.jpg
這個你必須在 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-06 00:45:55 IP:219.78.xxx.xxx 訂閱
多謝你的回覆 。
然而, 我的目標並不是令stringgrid 中不同cells 有不同顏色,
而是要建立不同粗幼的框線, 形如九宮格。 我到底可以怎麼辦?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-06 00:53:50 IP:61.67.xxx.xxx 未訂閱
我想我回覆有一個重點你可能沒有注意到
重點在canvas就是在處理cell中的格線, 底色, 字型等等的效果
要畫粗細格式也是透過 canvas來處理, 由於canvas是針對一個cells, 所以
你要自己去控制, 將每一個cell畫好後, 組合起來就可以達到你想做的目標
可以查一下本站 canvas的討論, 或外面有很多關於繪圖的書籍, 建議你去找
找看相關說明canvas的用法, 我提供給你的是一個如何自己控制stringgrid達到
繪製grid的寫法, 並不是提供給你如何畫線
nata_li
一般會員


發表:4
回覆:5
積分:1
註冊:2006-11-28

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