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

delphi計算機

答題得分者是:pceyes
darkblackword
一般會員


發表:3
回覆:7
積分:2
註冊:2008-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-12 22:10:41 IP:61.229.xxx.xxx 訂閱
各位大大好~
我想問如果我的delphi元件是用combox來做加減乘除
那我的那段程式該如何寫~
等於之後要清除edit的話~那要如何設變數又不會清到我需要用到的有個位十位數的功能?
謝謝
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-12 23:46:39 IP:59.126.xxx.xxx 訂閱
嗯~~~ 看了您的問題.......
覺得要嘛~~,您對 delphi 不熟,怎會想用一個下拉式選單 (ComboBox) 來讓 User 選擇 加減乘除,
應該是 Button 吧??? 不然就是您的計算機是還蠻別出心裁的設計

如何設變數又不會清到我需要用到的有個位十位數的功能? ==> 這句話不明白意思

所以建議您要不要先學一下 Delphi 呢??
可以先看下面這篇,也許您看完後就有心得知道該怎麼做囉~~!
站內基礎資料整理 (新手必看)

===================引 用 darkblackword 文 章===================
各位大大好~
我想問如果我的delphi元件是用combox來做加減乘除
那我的那段程式該如何寫~
等於之後要清除edit的話~那要如何設變數又不會清到我需要用到的有個位十位數的功能?
謝謝
------
價值的展現,來自於你用哪一個角度來看待它!!
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-13 10:44:14 IP:124.199.xxx.xxx 訂閱
您的作法應該是用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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-13 19:20:11 IP:220.130.xxx.xxx 訂閱
謝謝各位大大的回答~~
我研究出來的是

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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-10-13 21:54:42 IP:59.126.xxx.xxx 訂閱
嗯~~~,不錯哦~~,很有研究的精神,你可以把程式碼改像 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-01-12 20:25:01 IP:203.186.xxx.xxx 訂閱

[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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2018-07-05 15:10:16 IP:117.56.xxx.xxx 未訂閱
網路上找到的,直接在 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]
系統時間:2024-11-21 16:49:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!