"連續"超過或小於中心值三次就發mail通知與字體變紅 |
答題得分者是:P.D.
|
jay08210821
一般會員 發表:3 回覆:5 積分:1 註冊:2012-04-25 發送簡訊給我 |
今天客戶要求在報表裡的grid裡輸入三個值 如果"連續"超過或小於中心值三次就發mail通知與字體變紅。(如附件)
我的程式是這樣寫的 設一個integer變數 sRow和sRow1 中心值 Midvalue := strTofloat(midval.text) CellValue := StrToFloat(Cells[i,j]); if Cells[i,j] <> ' ' then begin if CellValue > MidValue then begin sRow := sRow 1 ; end else sRow := sRow -1 ; if CellValue < MidValue then begin sRow1 := sRow1 1 ; end else sRow1 := sRow1 -1 ; if (sRow = 3)or(sRow1 = 3 )then begin Canvas.Font.Color:=ClRed; MailFlag := True; end; end; 但怎麼輸入sRow都是1...sRow1 等於-1... 不知道我的邏輯是否有錯? 請問是否有更好的想法可以幫忙解決此問題呢? |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
1.當然, 你犯了一個很大的邏輯上的錯誤
先看第一組紅字 (我不要用公式, 用常式來說明) if CellValue < MidValue then 這是否有矛盾 依上述的判斷 if CellValue <= MidValue 然而, 你卻又下了第二組 if CellValue < MidValue 為真 否則為否 這豈又不把已經計算的值, 還原成第一組條件了嗎? 難怪你的值永遠在 1 與 -1 if CellValue > MidValue then begin sRow := sRow 1 ; end else sRow := sRow -1 ; if CellValue < MidValue then begin sRow1 := sRow1 1 ; end else sRow1 := sRow1 -1 ; if (sRow = 3)or(sRow1 = 3 )then begin Canvas.Font.Color:=ClRed; MailFlag := True; end; end; 但怎麼輸入sRow都是1...sRow1 等於-1... 不知道我的邏輯是否有錯? 請問是否有更好的想法可以幫忙解決此問題呢? |
jay08210821
一般會員 發表:3 回覆:5 積分:1 註冊:2012-04-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |