線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:690
推到 Plurk!
推到 Facebook!

新手請問for循環問題,謝謝!

尚未結案
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-30 20:57:24 IP:219.132.xxx.xxx 未訂閱
各位大大好!    如下圖:有六組RadioGroup,若我選擇第一,三,四,六組為1.0mm 那麼點擊Button按鈕時,需顯示的結果為選擇的組別分別為1,3,4,6. 但是我現在做的只能顯示錯誤為0,1,2,3 請問該怎麼做呢?    不好意思,新手上路,還請大家能夠支持與幫助,感激不盡!!! 代碼如下: < class="code"> procedure TForm1.Button1Click(Sender: TObject); var i,iTesttot: Integer ; begin iTestTot := 0 ; if RadioGroup1.ItemIndex <> 0 then begin iTestTot := iTestTot + 1 ; end; if RadioGroup2.ItemIndex <> 0 then begin iTestTot := iTestTot + 1 ; end; if RadioGroup3.ItemIndex <> 0 then begin iTestTot := iTestTot + 1 ; end; if RadioGroup4.ItemIndex <> 0 then begin iTestTot := iTestTot + 1 ; end; if RadioGroup5.ItemIndex <> 0 then begin iTestTot := iTestTot + 1 ; end; if RadioGroup6.ItemIndex <> 0 then begin iTestTot := iTestTot + 1 ; end; Memo1.Lines.Clear; if iTestTot > 0 then begin for I := 0 to iTestTot - 1 do Memo1.Lines.Add(inttostr(i)) ; end; end;
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-30 21:13:57 IP:211.74.xxx.xxx 未訂閱
引言: 代碼如下:
procedure TForm1.Button1Click(Sender: TObject);
var
   i,iTesttot: Integer ;
begin
  iTestTot := 0 ;
  if RadioGroup1.ItemIndex <> 0 then
    begin
    iTestTot := iTestTot   1 ;
    end;
  if RadioGroup2.ItemIndex <> 0 then
    begin
    iTestTot := iTestTot   1 ;
    end;
  if RadioGroup3.ItemIndex <> 0 then
    begin
    iTestTot := iTestTot   1 ;
    end;
  if RadioGroup4.ItemIndex <> 0 then
    begin
    iTestTot := iTestTot   1 ;
    end;      if RadioGroup5.ItemIndex <> 0 then
    begin
    iTestTot := iTestTot   1 ;
    end;      if RadioGroup6.ItemIndex <> 0 then
    begin
    iTestTot := iTestTot   1 ;
    end;
   Memo1.Lines.Clear;         if iTestTot > 0 then
        begin
          for I := 0 to iTestTot - 1 do
            Memo1.Lines.Add(inttostr(i)) ;
       end;
end;
妳的想法有些不太對勁哩~ 照妳的程式碼看來,變成是在紀錄有幾個 1.0mm 被選中了, 這跟 for 無關阿~ 若照妳的需求,程式碼直接改成這樣就好啦
procedure TForm1.Button1Click(Sender: TObject);
begin
  iTestTot := 0 ;
  if RadioGroup1.ItemIndex <> 0 then
    begin
    Memo1.Lines.Add('1') ;
    end;
  if RadioGroup2.ItemIndex <> 0 then
    begin
    Memo1.Lines.Add('2') ;
    end;
  if RadioGroup3.ItemIndex <> 0 then
    begin
    Memo1.Lines.Add('3') ;
    end;
  if RadioGroup4.ItemIndex <> 0 then
    begin
    Memo1.Lines.Add('4') ;
    end;
  if RadioGroup5.ItemIndex <> 0 then
    begin
    Memo1.Lines.Add('5') ;
    end;
  if RadioGroup6.ItemIndex <> 0 then
    begin
    Memo1.Lines.Add('6') ;
    end;
end;
-- http://www.csie.nctu.edu.tw/~chtai/software.php 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-30 21:26:22 IP:210.68.xxx.xxx 未訂閱
zxy666666你好: 我有一點搞不懂妳要的是什麼... 就你的程式碼來看,你的做法是勾了幾個(n) memo中就會show, 0~n-1,不會是你說的那個 樣子,我大概猜了一下你的意思,看看合不合 用    
    procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  RG: TRadioGroup;
begin
  Memo1.Lines.Clear;
  for i:=0 to Self.ComponentCount-1 do
  begin
    if Self.Components[i] is TRadioGroup then
    begin
      RG:= TRadioGroup(Self.Components[i]);
      if RG.ItemIndex <> 0 then
        Memo1.Lines.Add(RG.Caption);
    end;
  end;
end;    
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-31 09:48:40 IP:219.130.xxx.xxx 未訂閱
hi,chtai大大你好!謝謝你的回答.按我上面的要求,確實你那樣做就可以了。 (其實還不止那樣啦...)    TO:  jimmy_wei大大    
procedure TForm1.Button1Click(Sender: TObject);
var
  i,iTest: Integer;
  RG: TRadioGroup;
begin
  itest := 0 ;
  Memo1.Lines.Clear;
  for i:=0 to Self.ComponentCount-1 do
  begin
    if Self.Components[i] is TRadioGroup then
    if Self.Components[i].Tag = 1 then
    //因為Form上還有不需要計算的RadioGroup的Tag都預設為0,所以需要算在裡面的Tag值我統一設為1
    begin
      RG:= TRadioGroup(Self.Components[i]);
      if RG.ItemIndex <> 0 then
        iTest := iTest   1;  //先合計有幾個被選擇1.0mm
    end;
  end;    //謝謝,以上方法真好:假如我不止6組,若有10組20組的這樣合計就方便多了(呵呵,我以前的算法真是笨笨~~)    //  >     >         
        
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-31 09:54:03 IP:211.75.xxx.xxx 未訂閱
插花一下原始程式的邏輯^^Y,我是來搞怪的    程式顯示 0 1 2 3 是很正常的事情 解說 你總共點了4組所以iTestTot內容為4 if iTestTot > 0 then  //iTestTot大於0運行 目前是4所以會繼續執行下面程式 begin for I := 0 to iTestTot - 1 do //I=0 iTestTot = 3 Memo1.Lines.Add(inttostr(i)) ; //列印出I值,I變化0~3故顯示0 1 2 3 end; 看出來了嗎?你想要的功能應該是希望回傳第幾組被選取的值吧!! 解決方式有上面大大的方法,我只好灌灌水CC,說說邏輯 數學 程式 經驗=不懂^^
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-31 11:14:38 IP:219.130.xxx.xxx 未訂閱
引言: 插花一下原始程式的邏輯^^Y,我是來搞怪的 程式顯示 0 1 2 3 是很正常的事情 解說 你總共點了4組所以iTestTot內容為4 if iTestTot > 0 then //iTestTot大於0運行 目前是4所以會繼續執行下面程式 begin for I := 0 to iTestTot - 1 do //I=0 iTestTot = 3 Memo1.Lines.Add(inttostr(i)) ; //列印出I值,I變化0~3故顯示0 1 2 3 end; 看出來了嗎?你想要的功能應該是希望回傳第幾組被選取的值吧!! 解決方式有上面大大的方法,我只好灌灌水CC,說說邏輯 數學 程式 經驗=不懂^^
非常感謝juneo大大的指教! 你說的對,我想要的功能就是希望能回傳第幾組被選取的值(數字). 一定要給出一個變數,因為我在
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-31 15:49:18 IP:210.68.xxx.xxx 未訂閱
如果你一定要用迴圈的話提供你以下的方法    1.開一個陣列 2.設定每一個RadioGroup的taborder依順序來設定 3.就寫程式囉 我想這樣可以達成你的需求,只是我真的覺得你可以 好好的重新分析你的問題,我不認為這是好的程式邏 輯.....提供你做參考    
    procedure TForm1.Button1Click(Sender: TObject);
var
  i, iTag: Integer;
  RG: TRadioGroup;
  ArrayCheck: Array of Integer;
begin
  SetLength(ArrayCheck, 10);      iTag:=0;
  Memo1.Lines.Clear;
  for i:=0 to Self.ComponentCount-1 do
  begin
    if Self.Components[i] is TRadioGroup then
    begin
      RG:= TRadioGroup(Self.Components[i]);
      if RG.ItemIndex <> 0 then
      begin
        Memo1.Lines.Add(RG.Caption);
        ArrayCheck[iTag]:= RG.TabOrder   1;
        iTag:= iTag   1;
      end;
    end;
  end;      for i:=0 to 6 do
    Memo1.Lines.Add(IntToStr(ArrayCheck[i]));
end;    
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-31 17:12:07 IP:219.130.xxx.xxx 未訂閱
非常感謝jimmy_wei大大的幫助.< > 這樣就可以了(雖然是有點怪的邏輯,但是目前我只想到這樣做而已).< >
系統時間:2024-06-08 7:56:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!