StringGrid選取欄位做加總平均? |
尚未結案
|
damay
一般會員 發表:5 回覆:1 積分:1 註冊:2003-03-27 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
tech_state
版主 發表:44 回覆:638 積分:641 註冊:2003-02-10 發送簡訊給我 |
引言: 請問一下 StringGrid可以做到選取部分欄位後, 知道它選取了多少筆,進一步做這些選取欄位的平均及加總嗎? 是否可以請高手指點我一下, 選取欄位是用mousemove事件嗎? 另外計算平均或總和,有既定的函數可以使用嗎? 謝謝damay, 您好 我寫了一小段程式, 給您參考參考, 希望對您有幫助。 //全域變數: int FirstCol, FirstRow, LastCol, LastRow; bool FirstSelect; void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect) { // 記錄點選的第一個點與最二個點 if(FirstSelect) { FirstCol = ACol; FirstRow = ARow; FirstSelect = false; } else { FirstSelect = true; LastCol = ACol; LastRow = ARow; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // 選擇預計算的範圍後,按下計算button得到結果 int c, r, i, j; int TCount, TSum; float TAve; c = LastCol - FirstCol 1; r = LastRow - FirstRow 1; TCount = c * r; Edit1->Text = TCount; for(i = FirstCol; i <= LastCol; i ) { for(j = FirstRow; j <= LastRow; j ) TSum = TSum StrToInt(StringGrid1->Cells[j][i]); } Edit2->Text = TSum; TAve = TSum / TCount; Edit3->Text = TAve; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { FirstSelect = true; }======================= 是非終日有,不聽自然無 天下本無事,庸人自擾之 |
damay
一般會員 發表:5 回覆:1 積分:1 註冊:2003-03-27 發送簡訊給我 |
|
tech_state
版主 發表:44 回覆:638 積分:641 註冊:2003-02-10 發送簡訊給我 |
引言: 謝謝你的程式碼,這樣我懂了~ 不過我又遇到另一個問題了... 如果是使用DBGrid,它並沒有onSelectCell的事件... 那我又該如何處理,才能做到我要的功能呢???damay, 您好 可以試試用OnCellClick的事件, 但是DBGrid是以Row或Col為主, 在Options的屬性中將dgMultiSelect設為true, 可以一次選擇多行(Row), 運用迴圈應該可以達到您的需求, 試試看囉! 有問題歡迎再提出來! ======================= <>是非終日有,不聽自然無> <>天下本無事,庸人自擾之> |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |