小弟初新手尋求各位前輩幫忙 |
答題得分者是:herbert2
|
string4862
一般會員 發表:1 回覆:3 積分:0 註冊:2019-07-04 發送簡訊給我 |
感謝各位大大們的幫忙
小弟的Delphi7 裝有Cnpack插件 並非自己簡化成這樣 ... Button edit = edt se= SpinEdit (插件會自動減化) 目前剩下的是比較6個數字並排列大小 (名次的部分) 因為不知道怎麼用其他方式來縮短程式碼 所以乖乖寫了90組 每一個然後在比對右邊的設定來顯示在lable上 想知道如何比較 由大到小 1 - 6 在另外顯示在其他的Lable上
附加檔案:5d1d1e1c1a8ee_計分.rar
編輯記錄
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
每一個 TComboBox 的 Items 各有7個 Item, 那 a_1 ~ a_15 要對應什麼?"
se1.Value ~ se7.Value 是那90個 TComboBox 的 7 個 Item 的 Value, 它的值不是 String 嗎? 怎能直接填入 integer 變數? 而且 90 個 TComboBox 的各 7 個 Item 都同名? for j: = 1 to Form1.ComponentCount -1 do 您都知道 Max. Component 的 Index 是 ComponentCount -1, 那怎麼從 1 而非 0 開始? 既然您全部 Component 都檢查了一次, 只要其一是 TComboBox, 且 ItemIndex = -1 ( := -1 是賦值, 不是邏輯判斷式吧! ), 就把 a_0 ~ a_15 都填 0, 您的程式是這麼寫的呀! 如果您能用中文說清楚您的需求, 而非用不完整且諸多錯誤的程式碼來提問, 或許有人能幫您! ※回文編輯器會吃掉部分文句, 且抓不到規則.
編輯記錄
herbert2 重新編輯於 2019-07-10 01:12:21, 註解 無‧
herbert2 重新編輯於 2019-07-10 01:15:24, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:16:43, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:18:03, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:18:53, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:19:36, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:20:04, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:21:01, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:22:10, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:22:41, 註解 無‧ herbert2 重新編輯於 2019-07-10 01:24:01, 註解 無‧ |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
我先假設你只是要問90組的combobx要怎麼樣才能用更簡潔的方式來做, 所有的元件都已先開出來在畫面的前提下
以下程式碼是有縮排的, 但本站的編排格式可能會跑掉 我沒有實作, 但編譯是通過的, 代表語法是OK的 程式的+是全形, 不知道為什麼站內的 半形"加" 會不見, 所以你自己要修正一下 procedure TForm1.Button1Click(Sender: TObject); var cbb : TCombobox; se : TSpinEdit; i, j: integer; a : array[0..89, 0..6] of integer; begin for i := 1 to 90 do begin cbb := TCombobox(FindComponent('cbb' + inttostr(i) ) ); for j:= 1 to 7 do begin se := TSpinEdit(FindComponent('se' + Inttostr(j) ) ); if (cbb <> nil) and (se <> nil) then begin if cbb.ItemIndex = -1 then a[i-1, j-1] := 0 else a[i-1, j-1] := se.Value; end; end; end; end; |
string4862
一般會員 發表:1 回覆:3 積分:0 註冊:2019-07-04 發送簡訊給我 |
===================引 用 herbert2 文 章=================== 每一個 TComboBox 的 Items 各有7個 Item, 那 a_1 ~ a_15 要對應什麼?" se1.Value ~ se7.Value 是那90個 TComboBox 的 7 個 Item 的 Value, 它的值不是 String 嗎? 怎能直接填入 integer 變數? 而且 90 個 TComboBox 的各 7 個 Item 都同名? for j: = 1 to Form1.ComponentCount -1 do 您都知道 Max. Component 的 Index 是 ComponentCount -1, 那怎麼從 1 而非 0 開始? 既然您全部 Component 都檢查了一次, 只要其一是 TComboBox, 且 ItemIndex = -1 ( := -1 是賦值, 不是邏輯判斷式吧! ), 就把 a_0 ~ a_15 都填 0, 您的程式是這麼寫的呀! 如果您能用中文說清楚您的需求, 而非用不完整且諸多錯誤的程式碼來提問, 或許有人能幫您! ※回文編輯器會吃掉部分文句, 且抓不到規則. Item統計分數用的 .... 如果 item = 0 的話 a1 = se1.Value (設定的分數 每一個 Combobox 都有一個對應的數值 |
string4862
一般會員 發表:1 回覆:3 積分:0 註冊:2019-07-04 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
不是很熟悉 delphi 語法, 大致改為如下:
[code delphi] var cbb1 : array[0..89] of TComboBox; // 原 cbb1 ~ cbb90 臨時工作用 cbb : array[0..5,0..14] of TComboBox; // 原 cbb1 ~ cbb90 分成六組各15個之二維陣列 v : array[0..5,0..14] of Integer; // 原 a1 ~ a15, b1 ~ b15, .... f1 ~ f15 r : array[0..5] of Integer; // 原 a,b,c,d,e,f se : array[0..6] of TSpinEdit; k : Integer; begin se := [se1, se2, se3, se4, se5, se6, se7]; // TComboBox 之 ItemIndex 0 .. 6 與 TSpinEdit 對應 cbb1 := [cbb0,cbb1, . . . . . ., cbb89]; for j := 0 to 14 do begin for i := 0 to 5 do begin cbb[i][j] := cbb1[i j*6]; // 0..5, 6..11, 12..17, .... 84..89 end; end; for j := 0 to 14 do begin for i := 0 to 5 do begin // 0,0~0,5, 1,0~1,5, . . . . 13,0~13,5, 14,0~14,5 k := cbb[i][j].ItemIndex; if k = -1 then begin v[i][j] := 0; end else begin v[i][j] := se[k].Value; end; end; end; end; // 這也可以寫成 for i:= 0 to 5 do 及 for j := 0 to 14 do 兩層迴圈 r[0] := v[0][0] + v[0][1] + v[0][2] + v[0][3] + v[0][4] + v[0][5] + v[0][6] + v[0][7] + v[0][8] + v[0][9] + v[0][10] + v[0][11] + v[0][12] + v[0][13] + v[0][14]; r[1] := v[1][0] + v[1][1] + v[1][2] + v[1][3] + v[1][4] + v[1][5] + v[1][6] + v[1][7] + v[1][8] + v[1][9] + v[1][10] + v[1][11] + v[1][12] + v[1][13] + v[1][14]; r[2] := v[2][0] + v[2][1] + v[2][2] + v[2][3] + v[2][4] + v[2][5] + v[2][6] + v[2][7] + v[2][8] + v[2][9] + v[2][10] + v[2][11] + v[2][12] + v[2][13] + v[2][14]; r[3] := v[3][0] + v[3][1] + v[3][2] + v[3][3] + v[3][4] + v[3][5] + v[3][6] + v[3][7] + v[3][8] + v[3][9] + v[3][10] + v[3][11] + v[3][12] + v[3][13] + v[3][14]; r[4] := v[4][0] + v[4][1] + v[4][2] + v[4][3] + v[4][4] + v[4][5] + v[4][6] + v[4][7] + v[4][8] + v[4][9] + v[4][10] + v[4][11] + v[4][12] + v[4][13] + v[4][14]; r[5] := v[5][0] + v[5][1] + v[5][2] + v[5][3] + v[5][4] + v[5][5] + v[5][6] + v[5][7] + v[5][8] + v[5][9] + v[5][10] + v[5][11] + v[5][12] + v[5][13] + v[5][14]; end; [/code] 若元素位置沒與您想要的對上, 請自行修正. 加號真的會被吃掉. |
string4862
一般會員 發表:1 回覆:3 積分:0 註冊:2019-07-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |