ùòåø 10

ùòåø 9

ùòåø 8

ùòåø 6

ùòåø 5

ùòåø 4

ùòåø 3

ùòåø 2

ùòåø 1

 
 

òåìí äãìôé

ùéòåø 7: èéôåì áùâéàåú á EuroCC 

 

 áâøñà äñåôéú ùì EuroCC  äåñôðå ÷öú ìçéùåú åôòîåðéí. ÷áåöú ëôúåøéí ðåñôú îàôùøú äâãøú îñôø äñôøåú àçøé äð÷åãä äòùøåðéú ì- 2 àå 4. àðçðå ðèôì áùâéàåú , áî÷øä ùäåëðñ òøê ìà çå÷é.

äöâðå àú äåøàú ä- Case , ùîçìéôä îñôø äåøàåú î÷åððåú ùì if…then…else.


äëðåú 

1.      àí òãééï ìà òùéú æàú, äåøã îéã àú euoroen03.zip  ì- \DelphiLa  (ãó ääåøãåú ).

2.      öåø ñôøéä çãùä \DelphiLa\EuroEN03.

3.      äòú÷ àú euoroen03.zip ì- \DelphiLa\EuroEN03 åòùä ìå "unzip" ìñôøéä æå. áãå÷ ù÷áìú àú ä÷áöéí euroen03.dpr, euroform.dfm å- euroform.pas.

áùìá æä, àúä éåãò èåá îàã ìùéí øëéáéí á- form, àéê ìòøåê àú äîàôééðéí (properties) ùìäí, åàéê ìëúåá îáöòé àéøåòéí (event handlers). àæ ãéìâúé òì äçåîø ìîúçéìéí. áùéòåø æä úáðä éùéøåú òì ÷áöé ä-EuroEN03  ùäåøãú.

 


[ìøàù äòîåã]

îä ðåñó ìèåôñ (Form)?

 

1.      á-radiogroup, CurrRadioG, ôøéè àçã ðåñó: FRF.

 

2.       úååéú ðåñôä  ì French Francs: FRFLabel.

 

3.      Bevel-component  ðåñó (îòîåã Additional  áôìèä): Bevel1. îàôééï ä-
Shape
ùìå ùåðä î- standard bsBox ì- bsFrame  åâåãìå äùúðä áàåôï îúàéí ëê ùäåà "î÷éó" àú ä- label.

 

èéô: àí úùéí Bevel  (÷öä) "îñáéá" ìøëéáéí æä éëåì ìä÷ùåú àú äáçéøä ùì äøëéáéí á- Form  ò"é ìçéöú òëáø òìéäí. ãìôé úúøâí àú äìçéöä ëìçéöä òì ä- Bevel (÷öä), áâìì ùä- Bevel äåà "áøàù" äøëéáéí. áî÷øä æä, áçø àú ä- Bevel  åùìç àåúå ìø÷ò (backround).

4.      radiogruop ùðéä ðåñôä: DecimalsRadioG. äëåúøú ùåðúä ì- Decimals äôøéèéí äí:

2

4

áëãé ìùéí àú äôøéèéí (items) "æä ìöã æä" áî÷åí äàøâåï äàðëé äñèðãøèé, äîàôééï  Columns  ùåðä î-  1 ì- 2 .

ä- Itemlndex  ð÷áò ìòøê 0 (ëôúåø äøãéå äøàùåï ìçåõ).

 


[ìøàù äòîåã]

îä äùúðä á÷åã äî÷åø ?

·        ùúé ùâøåú ðåñôå: ConvertShow  å- SerLabelInvisible. ò"é ùáéøú ä÷åã ùäéä áùâøú ä- CurrOnvert, ä÷ìðå  àú úçæå÷ú äúëðéú. àì úùëç ùòãéï òìéðå ìäåñéó òåã äøáä îèáòåú:

 

·        áâìì ùîùúîùéí áîùúðä Euro  áëîä ùâøåú (øåèéðåú) îç÷úé àåúå  î- CurrentConvert åéöøúé îùúðä âìåáìé áùí æä.

 

·        ëîä ÷áåòéí ðåñôå, ùðéúï ìäùúîù áäí áëì äôøåöãåøåú á- unit.

 

·        îáöò îàåøò OnClick  ðåöø òáåø ä- radiogroup  áùí DecimalRadioG . äåà ôùåè îáöò àú äôøåöãåøä CurrCovert.

 

áåàå, ðñúëì éåúø î÷øåá òì äùéðåééí á÷åã. äåöàúé ëîòè àú ëì ääòøåú. àê, ëøâéì, ä÷åã ùàúä äåøãú îìà áäòøåú.

 

1.      áôøåöãåøä CurrConvert  ùìîèä, úùéí ìá ìùéðåééí òáåø äîèáò FRF .

 

éåúø îøùéîä äéà äòåáãä ùáòú ääîøä ì-Euro , äòøê äîéìåìé ùì ô÷èåø ääîøä ðòìí. ëòú àðçðå îçì÷éí á- cfBEF, cfFRE å- cfNLG (áî÷åí 40.3399, 6.55957 å- 2.20371) cf  îééöâ àú äîéìéí "convertion factor" ("ô÷èåø ääîøä").

 

ääîøä î- Euro ìîèáòåú î÷åîééí åäúöåâä ùì äúåöàåú òáøä ìôøåöãåøä ConvertShow. ëîå ëï äòìîú äúååéú äîúàéîä ðòùéú ëòú òì éãé SetLabelInvisible. îéã ðøàä æàú.

 
 
procedure TForm1.CurrConvert; var Amount: real; begin Amount := StrToFloat(InputEdit.Text); 
if CurrRadioG.ItemIndex = 1 then Euro := Amount / cfBEF else if CurrRadioG.ItemIndex 
= 2 then Euro := Amount / cfFRF else if CurrRadioG.ItemIndex = 3 then Euro := 
Amount / cfNLG else Euro := Amount; ConvertShow; SetLabelInvisible; end;

 

2.      ô÷èåøé ääîøä àéðí îùúðéí éåúø: äöäøðå òìéäí ëòì ÷áåòéí. éåúø îæàú, ðéúï ìäùúîù á÷áåòéí àìä áëì äùâøåú á- unit, ëéååï ùäöäøðå òìéäí îéã áúçéìú çì÷ äîéîåù (implementation-section). îéã ìàçø îëï, úøàä àú ääöäøä òì äîùúðä äâìåáìé Euro.

 procedure TForm1.CurrConvert; var Amount, // Amount to 
convert to Euro CFactor: real; // Conversion factor begin Amount := StrToFloat(InputEdit.Text); 
case CurrRadioG.ItemIndex of 1: CFactor := cfBEF; 2: CFactor := cfFRF; 3: CFactor 
:= cfNLG; else CFactor := 1; // first radiobutton is for Euro end; Euro := Amount 
/ CFactor; // ...and so on...

 

3.      äôøåöãåøä ConvertShow îùúîùú áîùúðä FStr ùáå  éäéå äòøëéí ùì îçøåæú äôåøîè (øàä ùòåø 4 formatting string). ð÷áò àú òøëä ëê ùúøàä 2 àå 4 ñôøåú òùøåðéåú áúåöàåú, áúìåú áëôúåø äøãéå ùðáçø á- DecimalsRadioG. ëîå ëï ùéí ìá ìùéîåù áîùúðä äâìåáìé Euro åá÷áåòéí äâìåáìééí cfBEF, cfFRE, å- cfNLG  (ô÷èåøé ääîøä).

 
procedure TForm1.ConvertShow; var FStr: string; begin if DecimalsRadioG.ItemIndex 
= 0 then FStr := '0.00' else FStr := '0.0000'; EuroLabel.Caption := FormatFloat(FStr, 
Euro) + ' EURO '; BEFLabel.Caption := FormatFloat(FStr, Euro * cfBEF) + ' BEF/LUF'; 
FRFLabel.Caption := FormatFloat(FStr, Euro * cfFRF) + ' FRF '; NLGLabel.Caption 
:= FormatFloat(FStr, Euro * cfNLG) + ' NLG '; end;

 

 

4.      ãáø ìà äúçãù á- SetlabelInvisible, àðçðå òãééï îùúîùéí áàåúä èëðé÷ä ùäåöâä áùéòåø 4.

 
 
procedure TForm1.ConvertShow; var FStr: string; begin if DecimalsRadioG.ItemIndex 
= 0 then FStr := '0.00' else FStr := '0.0000'; EuroLabel.Caption := FormatFloat(FStr, 
Euro) + ' EURO '; BEFLabel.Caption := FormatFloat(FStr, Euro * cfBEF) + ' BEF/LUF'; 
FRFLabel.Caption := FormatFloat(FStr, Euro * cfFRF) + ' FRF '; NLGLabel.Caption 
:= FormatFloat(FStr, Euro * cfNLG) + ' NLG '; end;

 


[ìøàù äòîåã]

ùéîåù á- "CASE" áî÷åí á- IF – éí î÷åððéí

 äñãøä ùì äåøàåú if…then…else… î÷åððåú, áçéùåá ùì äîùúðä  Euro éëåìä ìääôê îòè àøåëä, àí ðåñéó ÷åã ðåñó òáåø òåã îèáòåú. òãéó ìäçìéó àú äøöó äîñåøáì ùì if…then…else… áô÷åãú case. ëê äúëðéú äåôëú äøáä éåúø ÷øéàä (åâí îäéøä, àí úùéí àú äòøëéí ùì ä- selector áñãø òåìä).

àéï ãøê èåáä éåúø ìäîçéù æàú îàùø ÷öú ÷åã:

 
 
procedure TForm1.CurrConvert; var Amount, // Amount to convert to Euro CFactor: 
real; // Conversion factor begin Amount := StrToFloat(InputEdit.Text); case CurrRadioG.ItemIndex 
of 1: CFactor := cfBEF; 2: CFactor := cfFRF; 3: CFactor := cfNLG; else CFactor 
:= 1; // first radiobutton is for Euro end; Euro := Amount / CFactor; // ...and 
so on...

 

ô÷åãú ä- case îëéìä áéèåééí (áéèåéé ä- selector) ùúåöàúí áòøê îñåâ ñéãåøé. ùðé äñåâéí äñéãåøééí äéãåòéí äí (character) char å-  integer, àáì éùðí òåã ñåâéí ñéãåøééí øáéí.

ò÷åá àçø øùéîú äàôùøåéåú òáåø ä- selector. ëì ùåøä îëéìä òøê, øùéîú òøëéí, èååç ùì òøëéí àå ùéìåáéí ùì äð"ì. äòøëéí öøéëéí ìäéåú ÷áåòéí åééçåãééí. ëì àôùøåú îìååä á- statement.

ìáñåó, éëåìä ìäéåú ô÷åãú else, ùîèôìú áëì äî÷øéí ùìà äåîøå òãééï.

  ãåâîà ðåñôú ìîáðä ùì case.

 
 
var SelChar: char; // This is the selector ... begin ... case SelChar of 'a' : 
statement1; 'b' : statement2; 'c', 'C', 'd' : statement3; // a LIST of values 
'e'..'j' : statement4; // a RANGE of values 'k', 'K', 'l'..'z': statement5; // 
a LIST and a RANGE end; ...

ëîåáï, ùëì  "statement" áøùéîä éëåìä ìäéåú áìå÷ ùì ô÷åãåú, î÷åððåú áéï îéìåú äîôúç begin   å- end.


[ìøàù äòîåã]

 

èéôåì áùâéàåú ÷ìè

àí äîùúîù îëðéñ òøê ìà çå÷é (îçøåæú) á- Edit-box,  úúøçù ùâéàä ëàùø äúëðéú úðñä ìäîéø àú äîçøåæú ìòøê îñôøé.

òì éãé ùéîåù áîáðä  try…except, ðåëì ìèôì áúðàé äùâéàä áòöîðå åìäöéâ äåãòú ùâéàä îùìðå. ãáø ëæä éãçå÷ àú äåãòú äùâéàä ùì ãìôé.

ùðä àú äôøåöãåøä CurrConvert  ëãìäìï:

 
 
procedure TForm1.CurrConvert; var Amount, CFactor: real; begin try Amount := StrToFloat(InputEdit.Text); 
case CurrRadioG.ItemIndex of 1: CFactor := cfBEF; 2: CFactor := cfFRF; 3: CFactor 
:= cfNLG; else CFactor := 1; end; Euro := Amount / CFactor; ConvertShow; SetLabelInvisible; 
except { When there is a conversion error, we end up here, IMMEDIATELY after trying 
to execute the function StrToFloat() } on EConvertError do MessageDlg('Illegal 
input!', mtWarning, [mbOk], 0); end; end;

ëàùø äåøàä æå úéëùì áâìì è÷ñè ìà çå÷é á÷åôñú äòøéëä:

Amount:=StrTot[FloaEdit.Text]

  …äúëðéú ú÷ôåõ ìçì÷ ä- except, áìé ìáöò àó äåøàä àçøú. ìàçø îëï, ãìôé áåã÷ú äàí éù àéæùäå  “on” condition áçì÷ ä- except ùúåàí àú äçøéâä (exception) ùäúøçùä.

àí ëï, ääåøàä ùìàçø îëï îáåöòú.

àí àéï çøéâä îúàéîä ááìå÷ ä-except. ãìôé ðåèìú àú äôé÷åã åîøàä äåãòú ùâéàä îùì òöîä, ëàùø àçøéä äúëðéú éëåìä ìäúçãù (áøåá äî÷øéí, ìôçåú, àí àéðä î÷ôéàä àú úëðéúê…).

 

áî÷øä ùìðå öøéëä ìäéåú çøéâú "Conversion", ëê ùúðàé “on EconvertError" éúàéí. EconvertError äåà áéìè-àéï åéù òåã äøáä ëàìå: EdivByZero, EzeroDivide, åëå'…(äñúëì á- Delphi’s Help system).


[ìøàù äòîåã]

ìäúøàåú áùéòåø 8!

ìùìåç øëéá ìø÷ò (background)

áñìðâ ùì îúëðúéí æä ð÷øà "ìùðåú àú ä- Z-order ùì àåáéé÷è âøôé" (ðéúï ìùéí àåáéé÷èéí âøôéí àçã òì äùðé, ëê ðåöøåú ùëáåú). ðéúï ìùìåç øëéá åéæåàìé ìø÷ò úçéìä òì éãé áçéøúå åàçø ëê òì éãé ìçéöä àú äàôùøåú Send to Back áúôøéè ä- Edit. ùéèä àìèøðèéáéú: áçø àú äøëéá òí ëôúåø éîðé áòëáø åáçø á- Send to Back áúôøéè äîäéø ùîåôéò.

         

Copyright (C) 2000 Guido Festraets

Webmaster of the DelphiLand site: http://www.festra.com

îáðä äùéòåø: 
äëðåú 
?îä ðåñó ìèåôñ 
îä äùúðä á÷åã ?äî÷åø 
case - ùéîåù á 
èéôåì áùâéàåú ÷ìè