各位大大好~
我想問如果我的delphi元件是用combox來做加減乘除
那我的那段程式該如何寫~
等於之後要清除edit的話~那要如何設變數又不會清到我需要用到的有個位十位數的功能?
謝謝
我想問如果我的delphi元件是用combox來做加減乘除
那我的那段程式該如何寫~
等於之後要清除edit的話~那要如何設變數又不會清到我需要用到的有個位十位數的功能?
謝謝
delphi計算機 |
答題得分者是:pceyes
|
darkblackword
一般會員 發表:3 回覆:7 積分:2 註冊:2008-10-12 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
嗯~~~ 看了您的問題.......
覺得要嘛~~,您對 delphi 不熟,怎會想用一個下拉式選單 (ComboBox) 來讓 User 選擇 加減乘除, 應該是 Button 吧??? 不然就是您的計算機是還蠻別出心裁的設計 如何設變數又不會清到我需要用到的有個位十位數的功能? ==> 這句話不明白意思 所以建議您要不要先學一下 Delphi 呢?? 可以先看下面這篇,也許您看完後就有心得知道該怎麼做囉~~! 站內基礎資料整理 (新手必看) ===================引 用 darkblackword 文 章=================== 各位大大好~ 我想問如果我的delphi元件是用combox來做加減乘除 那我的那段程式該如何寫~ 等於之後要清除edit的話~那要如何設變數又不會清到我需要用到的有個位十位數的功能? 謝謝
------
價值的展現,來自於你用哪一個角度來看待它!! |
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
您的作法應該是用combobox誏使用者選+-*/吧!
您後面的問題,因目前看不懂,暫回答前一個問題 [code delphi] procedure TForm1.Button1Click(Sender: TObject); var total : currency; begin case combobox1.itemindex of 0: total :=strtoint(edit1.text) strtoint(edit2.text); 1: total :=strtoint(edit1.text) - strtoint(edit2.text); 2: total :=strtoint(edit1.text) * strtoint(edit2.text); 3: total :=strtoint(edit1.text) / strtoint(edit2.text); end; showmessage(floattostr(total)); end; [/code]
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-10-13 12:51:28, 註解 無‧
|
darkblackword
一般會員 發表:3 回覆:7 積分:2 註冊:2008-10-12 發送簡訊給我 |
謝謝各位大大的回答~~
我研究出來的是 procedure TMasterFM.ComboBox1Change(Sender: TObject); begin Number_x1 := StrToInt(Edit1.Text) ; boo := true ; if ComboBox_y = 0 then begin sum_z := sum_z Number_x1 ; edit1.Text := '' ; end; if ComboBox_y = 1 then begin sum_z := sum_z - Number_x1 ; edit1.Text := '' ; end; if ComboBox_y = 2 then begin sum_z := sum_z * Number_x1 ; edit1.Text := '' ; end; if ComboBox_y = 3 then begin sum_z := sum_z / Number_x1 ; edit1.Text := '' ; end; edit1.Text := sum_z; ComboBox_y := ComboBox1.ItemIndex; bb:= false ; end; |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
嗯~~~,不錯哦~~,很有研究的精神,你可以把程式碼改像 pceyes 大這樣的寫法,會更簡潔好維護
只是.....建議你 delphi 的書還是要多看一下,尤其是變數的命名規則......... ===================引 用 darkblackword 文 章=================== 謝謝各位大大的回答~~ 我研究出來的是 procedure TMasterFM.ComboBox1Change(Sender: TObject); begin Number_x1 := StrToInt(Edit1.Text) ; boo := true ; if ComboBox_y = 0 then begin sum_z := sum_z Number_x1 ; edit1.Text := '' ; end; if ComboBox_y = 1 then begin sum_z := sum_z - Number_x1 ; edit1.Text := '' ; end; if ComboBox_y = 2 then begin sum_z := sum_z * Number_x1 ; edit1.Text := '' ; end; if ComboBox_y = 3 then begin sum_z := sum_z / Number_x1 ; edit1.Text := '' ; end; edit1.Text := sum_z; ComboBox_y := ComboBox1.ItemIndex; bb:= false ; end;
------
價值的展現,來自於你用哪一個角度來看待它!! |
roviury
一般會員 發表:3 回覆:49 積分:15 註冊:2008-08-28 發送簡訊給我 |
[code delphi] var Form1: TForm1; beforeA,beforeB:string; //記錄之前的edit.text implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a,b,total:integer; begin a:=strtointdef(Edit1.Text,0);//當edit1.text不是數字就會變成0 b:=strtointdef(Edit2.Text,0); case combobox1.itemindex of 0: total :=a b; 1: total :=a - b; 2: total :=a * b; 3: total :=a div b; //而不是上面所說的/ 因為/會出現小數 ,div是整除 end; label2.Caption:=inttostr(total); end; procedure TForm1.Edit1Change(Sender: TObject); begin if strtointdef(Edit1.Text,0)<10 then begin //十位數以下不能刪 Edit1.Text:=beforeA; exit;//不會執行下面的設定 end; beforeA:=Edit1.Text; end; procedure TForm1.Edit2Change(Sender: TObject); begin if strtointdef(Edit2.Text,0)<10 then begin //十位數以下不能刪 Edit2.Text:=beforeB; exit; end; beforeB:=Edit2.Text; end; [/code] edit1是前面的 edit2是後面的 combobox1是中間的(design時style=csDropDownList,itemindex=0) label1是'=' label2是結果 button1是計算 這個方法是計算整數 而計算小數的方法是,把以下函數/類型轉換 inttostr->floattostr strtointdef->strtofloatdef integer->double div->/ 而且是combobox而不是combox 而且你是不是港人??
編輯記錄
roviury 重新編輯於 2009-01-12 20:30:42, 註解 無‧
|
wangccw
一般會員 發表:21 回覆:39 積分:17 註冊:2005-01-30 發送簡訊給我 |
網路上找到的,直接在 edit 裡面直接key數學運算式,回傳結果,供大家參考
[code delphi] function Calc(const CalcStr: string): string; var v : Variant; begin v := CreateOleObject('MSScriptControl.ScriptControl'); try try v.Language := 'JScript'; Result := v.Eval(CalcStr); except end; finally v := Unassigned; end; end; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |