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

StringGrid選取欄位做加總平均?

尚未結案
damay
一般會員


發表:5
回覆:1
積分:1
註冊:2003-03-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-07 15:00:55 IP:203.66.xxx.xxx 未訂閱
請問一下 StringGrid可以做到選取部分欄位後, 知道它選取了多少筆,進一步做這些選取欄位的平均及加總嗎? 是否可以請高手指點我一下, 選取欄位是用mousemove事件嗎? 另外計算平均或總和,有既定的函數可以使用嗎? 謝謝
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-07 16:14:03 IP:203.75.xxx.xxx 未訂閱
我建議做在 MouseUp 及 SelectCell, 一個處理用 mouse 選取, 一個處理用 keyboard 選取, 然後可以宣告一個 TGridRect 的變數指定為 StringGrid 的 Selection 的值, 這樣就可以知道選取範圍, 再用迴圈作加總或平均.    Jesse Chan
------
Jesse Chan
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-08 11:55:20 IP:61.221.xxx.xxx 未訂閱
引言: 請問一下 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-08 16:24:58 IP:203.66.xxx.xxx 未訂閱
謝謝你的程式碼,這樣我懂了~ 不過我又遇到另一個問題了... 如果是使用DBGrid,它並沒有onSelectCell的事件... 那我又該如何處理,才能做到我要的功能呢???
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-09 00:45:05 IP:203.204.xxx.xxx 未訂閱
引言: 謝謝你的程式碼,這樣我懂了~ 不過我又遇到另一個問題了... 如果是使用DBGrid,它並沒有onSelectCell的事件... 那我又該如何處理,才能做到我要的功能呢???
damay, 您好 可以試試用OnCellClick的事件, 但是DBGrid是以Row或Col為主, 在Options的屬性中將dgMultiSelect設為true, 可以一次選擇多行(Row), 運用迴圈應該可以達到您的需求, 試試看囉! 有問題歡迎再提出來! ======================= <>是非終日有,不聽自然無 <>天下本無事,庸人自擾之
系統時間:2024-05-03 11:35:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!