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

StringGrid 的 fixcol 的加強用法

答題得分者是:william
P.D.
版主


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-18 11:20:31 IP:61.71.xxx.xxx 未訂閱
請問各位! 我需要一個StringGrid 的功能, 該Column必須能直接在cell上編輯, 而又能如FixCol般固定在畫面上, 但是又 不能使用FixCol, 除了ThirdParty提供的元件, Delphi本身的StringGrid 有沒有辦法可以達成? 我搜尋了本站相關文件找不到有關這方面的參考文獻, 請各位協助囉! 謝謝!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-18 11:31:13 IP:147.8.xxx.xxx 未訂閱
Perhaps you could create your own grid 
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-18 11:42:25 IP:147.8.xxx.xxx 未訂閱
Feel bored this morning , class="code">unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids; type TForm1 = class(TForm) DrawGrid1: TDrawGrid; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); procedure DrawGrid1TopLeftChanged(Sender: TObject); procedure DrawGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String); procedure DrawGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); private { Private declarations } FSL: TStringList; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin FSL := TStringList.Create; for i := 1 to DrawGrid1.RowCount do FSL.Add(IntToStr(i)); end; procedure TForm1.FormDestroy(Sender: TObject); begin FSL.Free; end; procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with TDrawGrid(Sender) do begin if ACol-LeftCol=3 then with Canvas do begin Brush.Color := clBtnFace; FillRect(Rect); Brush.Style := bsClear; TextRect(Rect,Rect.Left 2,Rect.Top 2,FSL[ARow]); end; end; end; procedure TForm1.DrawGrid1TopLeftChanged(Sender: TObject); begin TDrawGrid(Sender).Invalidate; end; procedure TForm1.DrawGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String); begin Value := ''; with TDrawGrid(Sender) do begin if ACol-LeftCol=3 then begin Value := FSL[ARow]; end; end; end; procedure TForm1.DrawGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); begin with TDrawGrid(Sender) do begin if ACol-LeftCol=3 then begin FSL[ARow] := Value; end; end; end; end.
P.D.
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-22 00:19:11 IP:61.71.xxx.xxx 未訂閱
sorry! William兄! 最近案子很多, 沒有太多時間研讀, 我試了一下你提供的內容, 不過總感覺到 怪怪的, 其中一段 if ACol-LeftCol=3 我一直無法明白該處所定義的cell是 在那一塊, 由於我的grid cell[0,ARow], cell[1,ARow], cell[2,ARow], cell[3,Arow]是fixedcol cell[4,ARow] 是要fixed, 但夠edit, cell[5,ARow]之後是可以scroll, 以 提供的語句, topleft=4, 如果我改為 if ACol-LeftCol=4 則 cell[4,ARow]會固定在 column=7的位置, 但如果我 設定 if ACol-LeftCol=0, 則會發生 index out of range 錯誤, 等我稍有 空點, 我再仔細測試一下, 謝謝!
系統時間:2024-07-06 15:37:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!