織物設計-網狀格設計 |
尚未結案
|
weiliching
初階會員 發表:53 回覆:78 積分:31 註冊:2003-12-27 發送簡訊給我 |
最近要幫公司設計一個織造方面 , 用來寫一寫一個設計圖.
內容只是一個網狀格, 如果是1就是黑色,0就是白色. 格子大小有可能是25*25 也有可能是 100*100...格子大小是一個變數. 要設計讓使用者能夠自己在裡面畫黑格.與白格. 曾經想過要用StrGrid 元件去做.網狀格..然後自己在裡面畫X.. 補充說明: 因為資料還要存在資料庫裡,我是打算採用二位元Binary 去存檔,不知道大大們有什麼建議來設計與規劃. 編輯記錄
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
DrawGrid可試看看
本站應該有文章可以參考 可以先翻翻文章~ ===================引 用 weiliching 文 章=================== 最近要幫公司設計一個織造方面 , 用來寫一寫一個設計圖. 內容只是一個網狀格, 如果是1就是黑色,0就是白色. 格子大小有可能是25*25 也有可能是 100*100...格子大小是一個變數. 要設計讓使用者能夠自己在裡面畫黑格.與白格. 曾經想過要用StrGrid 元件去做.網狀格..然後自己在裡面畫X.. 請問哪位大大有此經驗的? |
mypigbaby
高階會員 發表:11 回覆:168 積分:155 註冊:2006-07-20 發送簡訊給我 |
豬寶寶之前有寫過一個小程式
大概的精神是這樣 先讓USER輸入大小 (二個EDIT BOX) 然後在宣告一個二維陣例 大小就是USER輸入的那樣 再來控制STRING GRID 看要在那格做記號 在在相對映的陣例中就上1 然後就呼叫STRING GRID的 Refresh 事件 就依照陣例重畫STRING GRID 而在STRING GRID的DrawCell 事件中 定義好如果陣例中的值各代表什麼顏色 大方向就是陣列為骨,STRING GRID為皮 一切的操作都是改變 那個二維陣例的值 而STRING GRID只負責輸出及輸入 大概就這樣,有問題可以再討論^^ ==================引 用 weiliching 文 章=================== 最近要幫公司設計一個織造方面 , 用來寫一寫一個設計圖. 內容只是一個網狀格, 如果是1就是黑色,0就是白色. 格子大小有可能是25*25 也有可能是 100*100...格子大小是一個變數. 要設計讓使用者能夠自己在裡面畫黑格.與白格. 曾經想過要用StrGrid 元件去做.網狀格..然後自己在裡面畫X.. 請問哪位大大有此經驗的? |
smallfox
高階會員 發表:2 回覆:113 積分:128 註冊:2003-02-19 發送簡訊給我 |
|
smallfox
高階會員 發表:2 回覆:113 積分:128 註冊:2003-02-19 發送簡訊給我 |
以下是利用 TDrawGrid 來撰寫動態產生網格的程式碼,
至於如何將選定的內容存回資料庫, 有興趣者可以試看看 ... // -------------------------------- unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids; type TForm2 = class(TForm) Panel1: TPanel; Label1: TLabel; edRowCount: TEdit; Label2: TLabel; edColCount: TEdit; Bevel1: TBevel; BitBtn1: TBitBtn; Bevel2: TBevel; Bevel3: TBevel; MainPanel: TPanel; DrawGrid1: TDrawGrid; procedure BitBtn1Click(Sender: TObject); procedure MainPanelResize(Sender: TObject); procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); procedure DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); private Ary: array of array of Integer; // procedure Set_Grid_W_H(mCol, mRow: Integer); { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} // -------------------------------------------------------------------------- // procedure TForm2.Set_Grid_W_H(mCol, mRow: Integer); begin DrawGrid1.DefaultColWidth :=(MainPanel.ClientWidth - Trunc(0.88*mCol)) div mCol; DrawGrid1.DefaultRowHeight:=(MainPanel.ClientHeight - Trunc(0.95*mRow)) div mRow; end; procedure TForm2.BitBtn1Click(Sender: TObject); var i, j, mCol, mRow: Integer; begin mRow :=StrToInt(edRowCount.Text); mCol :=StrToInt(edColCount.Text); // if (mRow<10) or (mRow>100) then begin ShowMessage(Label1.Caption ' 有誤, 輸入值須介於 10 - 100 之間 !!'); edRowCount.SetFocus; Exit; end; if (mCol<10) or (mCol>100) then begin ShowMessage(Label2.Caption ' 有誤, 輸入值須介於 10 - 100 之間 !!'); edColCount.SetFocus; Exit; end; // // 產生格網 .. Panel1.Enabled:=False; DrawGrid1.Visible:=False; Screen.Cursor:=crHourglass; try DrawGrid1.ColCount:=mCol; DrawGrid1.RowCount:=mRow; // Set_Grid_W_H(mCol, mRow); // SetLength(Ary, mRow); for i:=0 to mRow-1 do begin SetLength(Ary[i], mCol); for j:=0 to mCol-1 do Ary[i, j]:=clWhite; // 預設顏色 .. end; finally DrawGrid1.Visible:=True; Screen.Cursor:=crDefault; Panel1.Enabled:=True; end; end; procedure TForm2.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin DrawGrid1.Canvas.Brush.Color:=Ary[ACol, ARow]; DrawGrid1.Canvas.FillRect(Rect); DrawGrid1.Canvas.FrameRect(Rect); end; procedure TForm2.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin if (Ary[ACol, ARow]=clWhite) then Ary[ACol, ARow]:=clBlack else Ary[ACol, ARow]:=clWhite; end; procedure TForm2.MainPanelResize(Sender: TObject); begin if (DrawGrid1.Visible) then Set_Grid_W_H(StrToInt(edColCount.Text), StrToInt(edRowCount.Text)); end; end. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |