關於StringGrid 的一些問題,感謝 |
答題得分者是:P.D.
|
hcker
中階會員 發表:95 回覆:118 積分:62 註冊:2003-02-09 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
既然你用StringGrid, 那就必須使用迴圈來算了, 重點是如何取得甲乙丙值. 我的做法利用一個陣列
namearray: Array of String ==> 因為不知道有多少人, 所以用動態的 valuearray: Array of Double ==> 這是要儲存甲乙丙的值, 當然如果用二維陣列可以一次解決 再來使用迴圈分析, 大致程式是如此, 我沒有實證過(只有paper上寫), 所以程式執行起來是否有bug請自行run 相關變數自行定義 arraycount:= 0; for i:= 0 to StringGrid.RowCount-1 do begin // 這段在判斷甲乙丙是否存在, 否則加入陣列 nowarray= -1; for j:= low(namearray) to high(namearray) do begin if namearray[j]=StringGrid1.Cell[x,i] then begin // x 是 甲乙丙的cell column nowarray:= j; break; end; next; if nowarray=-1 then begin inc(arraycount); setlength(namearray,arraycount); setlength(valuearray,arraycount); nowarray:= arraycount-1 end; valuearray[nowarray]:= valuearray[nowarray] StringGrid1.Cell[y,i]; // y 為甲乙丙各值的cell column next; ===================引 用 hcker 文 章=================== 在StringGridStringGrid編號姓名工資 2.甲 3909.2 4.丙 100.2 6.甲 799.1 合併後迴圈傳遞兩個參數出來即可姓名累計例如甲因為我在學習我想傳遞過去繪餅狀圖 |
hcker
中階會員 發表:95 回覆:118 積分:62 註冊:2003-02-09 發送簡訊給我 |
多謝指點,後來我也參考的寫了一段代碼,不過得執行三次才能將排列列出來。應該效率是比較低的。我先取出姓名的列進行分析找出重複的部分剩下部分相應的數值進行累加。
:= iCount 1; while iNext < st.Count do begin if TmpStr = st.Strings[iNext] then begin st.Delete(iNext); end; Inc(iNext); end; Inc(iCount); end; |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |