
ãã®èšäºã¯é¢çœããã®ã§ã¯ãªãããããæè¡çãªãã®ãªã®ã§ãçŸãã玹ä»æã¯æžããŸããã ãã®äžã§ãç§ã¯MVCã¹ã¿ã€ã«ã®å€å žçãªDelphiãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³çšã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããã°ã©ãã³ã°ææ³ã«æ³šç®ãããã ããã¯ãåŸç¶ã®ã·ãªãŒãºã®å ¥éèšäºã§ãã
ãŸã ç«ã®äžã§ãã®éçºç°å¢ã䜿çšããŠããå°æ°ã®äººã ã«å°ããŸãã
ã¯ã©ã·ãã¯ã¢ããªã±ãŒã·ã§ã³ãšã¯ãVCLã«åºã¥ããWindowsçšã®ãã¹ã¯ãããGUIã¢ããªã±ãŒã·ã§ã³ãæå³ããŸãã Delphiã®æ°ããããŒãžã§ã³ã«ç»å ŽããFireMonkeyãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠãä»ã®èª°ãã«èšäºãæžãããŠãã ããã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯éåžžã«å€æ§ã§ãã ãããŠããŠã§ãäžã§ããããäžè¬ã«å®å šãªåç©åã§ããå Žåããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã¹ãŠãããä¿å®çã«è¡ãããŸãã ãã¡ãããäžéšã®ã¢ããªã±ãŒã·ã§ã³ïŒSkypeãMikogoãOffice 2010ãåç §ïŒã®éçºè ã¯ã䜿ãããããããã«åäžãããããã«èšèšãããããããçš®é¡ã®èŠèŠçãªããªãã¯ãèãåºãç¶ããŠããŸãããç§ãã¡ïŒå€ãåŠæ ¡ã®äººã ïŒã®ã»ãšãã©ã¯ãæšæºã®Windowsããã³VCLã³ã³ãããŒã«ãçºæããŸããããããWindows 3.1ã®æ代ã«é¡ããŸãã
-ãã¿ã³ïŒTButtonïŒ
-ãã§ãã¯ããŒã¯ïŒTCheckBoxïŒ
-ã¹ã€ããïŒã©ãžãªãã¿ã³ãTRadioButtonïŒ
-åäžè¡å ¥åãã£ãŒã«ãïŒTEditïŒ
-è€æ°è¡ã®å ¥åãã£ãŒã«ãïŒTMemoãŸãã¯TRichEditïŒ
-ããããçš®é¡ã®è€åã³ã³ãããŒã«ïŒTSpinEditãTDateTimeEditïŒ
-ãã«ãããŒãžã³ã³ãããŒã«ïŒTPageControlãTTabControlïŒ
-ã°ãªãã
-ããã«ãã°ã«ãŒãããã¯ã¹ãããã«ãã·ã§ã€ããImageBoxãªã©
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããéã®äž»ãªã¿ã¹ã¯ã¯ãäžèšã®èŠçŽ ã䜿çšããŠããã°ã©ã ã®å éšããŒã¿ããã®ããã«è¡šçŸããããšã§ããããã«ããããŠãŒã¶ãŒããã®ããŒã¿ãæäœãããããªããŸãã ããŠããããã¯ãã®äžæ¹ã§ããŠãŒã¶ãŒãããã°ã©ã ã«åœŒããäœãèãã¹ãããããã°ã©ã ã«äŒããããšãã§ãããããªèŠçŽ ã®ã»ãããèãåºããŸãã
èŠçŽ ã®ã¬ã€ã¢ãŠãã®èŠ³ç¹ããã€ã³ã¿ãŒãã§ãŒã¹ãèšèšããããšã¯ãããèªäœããªãè€éã§éèŠãªã¿ã¹ã¯ã§ãã ã€ã³ã¿ãŒãã§ãŒã¹ã¯ããŠãŒã¶ãŒãããã°ã©ã ãšå¯Ÿè©±ããããã®äž»èŠãªæ段ã§ãïŒCtrl + Alt + Delã«ããåé€ã¯ã«ãŠã³ããããŸããïŒã ã ããããããŠãŒã¶ãŒãããã£ãŒãããã¯ãåãåããã³ã«ã€ã³ã¿ãŒãã§ã€ã¹ãå埩çã«èšèšããå¿ èŠãããã®ã¯ããŠãŒã¶ãŒãããã°ã©ã ãæäœããã®ã«äŸ¿å©ãªã®ããããŠã¹ã200åã¯ãªãã¯ããå¿ èŠãããã®ãââããµããŠã£ã³ããŠïŒæåŸã«ã¯ã¢ãŒãã«ã§ãããïŒã«ç§»åããã®ãã10åãããŒã¿ãäžåºŠå ¥åãããšããŠã£ã³ããŠã«åå ¥åãããšãã«ä¿åãããªãããã§ãã ãªã© ïŒç§ã¯ãæŽç·Žãããèªè ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ããã¹ãã§ãªããã®ã®ããå€ãã®äŸãäžããããšãã§ãããšç¢ºä¿¡ããŠããŸã:)ïŒã
ã€ã³ã¿ãŒãã§ãŒã¹èšèšãçå£ãã€åŸ¹åºçã«ãšãæµ·æŽã®è³¢ã人ã¯ãããã°ã©ã ã§äœæ¥ãããšãã«ããŠã¹ã®åãã远跡ããïŒç¡é§ã«æ»ããªãããã«ããïŒãã¯ãªãã¯ãã«ãŠã³ãããããŠãŒã¶ãŒã®èŠç·ã®æ¹åã远跡ãããªã©ã®æè¡ã䜿çšãããšèšãããŠããŸãç®ãã©ã³ãã ãªæ¹åã«èµ°ãå§ããŸããããã¯é©ãã¹ãããšã§ãïŒã
ãããããã®èšäºã¯ãããã®å¥è·¡ã«ã€ããŠã§ã¯ãããŸããã ãã®ãŠã£ã³ããŠãŸãã¯ãã®ãŠã£ã³ããŠãã©ã®ããã«è¡šç€ºãããããæ¢ã«ç解ããŠããããšãåæãšããŠããŸãã ã©ããããããããã®ãã¥ãŒãããã°ã©ã ã®å éšããŒã¿ã«æ¥ç¶ããå¿ èŠããããŸãã ãããŠããã®æ¥ç¶ã®æ¹æ³ã«ã€ããŠå ·äœçã«ã話ããããšæããŸãã
ããªããã£ãããå§ããŸãããã ãã§ãã¯ããŒã¯
ãããŠã£ã³ããŠïŒTCheckBoxïŒã«ãã§ãã¯ããŒã¯ãããã2ã€ã®ãªãã·ã§ã³ã®ããããã®éžæãåæ ããŠãããšããŸãã ç空äžã®ç圢ã®éŠ¬ã«ã€ããŠè©±ããªãããã«ãäœããã®æå³ãäžããŸãã ç¹å®ã®ãã£ã¬ã¯ããªã®ãã¡ã€ã«ããããŒã¿ããŒã¹ã«ããŒã¿ãã€ã³ããŒãããããã®ãŠã£ã³ããŠãšããŸãã ãã§ãã¯ããŒã¯ã¯ãæäœã®å®äºåŸã«ã€ã³ããŒãããããã¡ã€ã«ãåé€ãããã©ãããåæ ããŸãã 次ã«ããã§ãã¯ããŒã¯ãåŒã³åºããŸããã
cbNeedDeleteFiles: TCheckBox;
ãšããã§ãã³ã³ãããŒã«ã®çš®é¡ã«åºã¥ããŠã³ã³ãããŒã«åã«ãã¬ãã£ãã¯ã¹ãä»ããããšã¯éåžžã«äŸ¿å©ã§ãã ããšãã°ãTCheckBoxã®å Žåã¯cbãTRadioButtonã®å Žåã¯rbãTButtonã®å Žåã¯btã§ãã Delphiã«cnPackæ¡åŒµããã±ãŒãžãã€ã³ã¹ããŒã«ããå Žåããã©ãŒã ã«æ¬¡ã®ã³ã³ãããŒã«ãé 眮ãããšãèŠåã«åŸã£ãŠãã®ã³ã³ãããŒã«ã®ååãããã«å€æŽããææ¡ããŠã£ã³ããŠã«ãããã¢ãã衚瀺ãããŸãã ããã«ããããã©ãŒã äžã«ããButton87ãCheckBox32ãªã©ã®åªäœæ§ãåé¿ãããŸãã
ååãšããŠããã©ãŒã äžã®é©åãªå Žæã«ã³ã³ãããŒã«ãé 眮ããåŸãããã°ã©ãã¯å®å¿ããŠããæ¯ãã€ããèœã¡çããŸãã ããã§ãããã°ã©ã å ã®ã©ãããã§ãcbNeedDeleteFiles.Checkedã«ã¢ã¯ã»ã¹ããŠããã§ãã¯ããŒã¯ãä»ããŠãããã©ããã確èªã§ããŸãã ãããããããã°ã©ããŒã¯åäžã®å Žæã§Checkedããããã£ã«ã¢ã¯ã»ã¹ããŸããããŠã£ã³ããŠãäœæãããšãã«ããã®ããããã£ãŸãã¯ãã®ä¿åå€ã®ããã©ã«ãç¶æ ãèšå®ãããå ŽåããããŸãããã®åŸãã¡ã€ã³ã®å ŽæïŒã€ã³ããŒããå®è¡ãããå ŽæïŒã§ããã®å±æ§ãå床確èªããå¿ èŠããããŸãããŠã£ã³ããŠãéãããšãã«ãã®å±æ§ã®å€ãä¿åãã次ã«ãŠã£ã³ããŠãéãããšãã«ãã§ãã¯ããŒã¯ã®ç¶æ ã埩å ããŸãã ä»ã®æ¡ä»¶ã«åºã¥ããŠããã®å±æ§ã®å€ãããã°ã©ã ã§å€æŽããå¿ èŠãããå ŽåããããŸãã ããšãã°ããŠãŒã¶ãŒãå ¥åãã¡ã€ã«ã®ãããã£ã¬ã¯ããªãéžæãããå Žåããã®ãã£ã¬ã¯ããªã«å³å¯ã«å®çŸ©ãããã¿ã€ãã®ãã¡ã€ã«ã®ã¿ãå«ãŸããŠããå ŽåããŸãã¯ãã¹ãŠã®ãã£ã¬ã¯ããªãã¡ã€ã«ã®ååãç¹å®ã®ãã¹ã¯ãæºããå Žåããã®ãã§ãã¯ããã¯ã¹ãåžžã«èªåçã«è¡šç€ºãããããã«æ±ããããšãã§ããŸãã ãããã£ãŠãããã°ã©ã ã®å Žæã®å±±ã«ã¯ã次ã®ãããªãã®ã衚瀺ãããŸãã
if cbNeedDeleteFiles.Checked then ... if Something then cbNeedDeleteFiles.Checked := True; if SomethingElse then cbNeedDeleteFiles.Checked := False;
äžèŠãããã¯äœãæªãããšã§ã¯ãããŸããã ããããé·æçãªå®è·µã瀺ãããã«ãããã¯çŽ æŽãããã§ãã ããã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãžã®ã¿ã€ããªã³ã¯ãšåŒã°ããŸãã åŸã§TCheckBoxããã€ã³ããŒããããã¡ã€ã«ãåé€ããããšãã€ã³ããŒããããã¡ã€ã«ãåé€ããªãã§ãã ãããã®2ã€ã®ã©ãžãªãã¿ã³ã«çœ®ââãæããå¿ èŠããããšããŸãã ããã¯ããŸãæå³ããããŸããããèŠèŠåãæ¹åããããããŸãã¯ãã€ã³ããŒããšã©ãŒããªãå Žåã®ã¿ãã¡ã€ã«ãåé€ããããªã©ããã®èšå®ã®3çªç®ã®ç¶æ ãè¿œå ããåã«ãªãã¡ã¯ã¿ãªã³ã°ã®äžéšãšããŠè¡ãããšãã§ããŸãã ãã®ç¬éãRadioButtonã§äœæ¥ããããã®ã³ãŒãããcbNeedDeleteFiles.Checkedãžã®é£çµ¡ã«äœ¿çšããŠããå Žæã®ããŒãã«é 眮ããå¿ èŠããããŸãã
ãããé¿ããæ¹æ³ã¯ïŒ
ãããã¯ãŒã¯äžã§é·ãéã MVC ã MVP ã MVVMã«ã€ããŠå€ãã®ãã©ã³ããããããŠããŸããã ãããã¯ãã®ãããªå¥è·¡çãªææ³ã§ãããã®ããã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããæ£ãããããã°ã©ã ã§ããäžèšã®ããããã¯ãããŸããã å®éããããã¯æ¬åœã«åœ¹ç«ã€ã¢ãããŒãã«ãããŸããããç°ãªãããã°ã©ãã³ã°èšèªãããã«ã¯1ã€ã®èšèªã§ããŸã£ããç°ãªãæ¹æ³ã§å®è£ ã§ããŸãã ã€ãŸã ãããã¯ã©ã¡ãã®åŽããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããã°ã©ãã³ã°ã«æé©ã§ããããšããããªãã®ãã³ãã§ãã
ç¥èªãããäžåºŠèŠããšã3ã€ãã¹ãŠã«æåMïŒã¢ãã«ãã¢ãã«ïŒãšVïŒãã¥ãŒããã¥ãŒïŒãããããšãããããŸãã éåžžã«åçŽãªèšèªã§èšãã°ãã¢ãã«ã¯ããã°ã©ã ã®å éšããŒã¿ã§ããããã¬ãŒã³ããŒã·ã§ã³ã¯å€éšïŒãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒã§ãã ãã§ãã¯ããŒã¯ã«æ»ããšãããŒã«å€ããã®ãã§ãã¯ããŒã¯ã®å éšè¡šçŸã§ããããšã¯æããã§ãã ã©ã®ã¯ã©ã¹å±æ§ããã®å€ã«æ ŒçŽãããã®æ±ºå®ã¯ãããããã®å Žåã«åå¥ã«è¡ãããŸãã ããšãã°ãããã°ã©ã èšå®ãžã®ã¢ã¯ã»ã¹ãæäŸããTConfigã¯ã©ã¹ã«ããããšãã§ããŸãã ãã ããåçŽãªå Žåããã©ãŒã ã¯ã©ã¹ã ãã«å¯Ÿå¿ããå±æ§ãäœæããã ãã§ååã§ãã
TfmImport = class(TForm) ... private ... FNeedDeleteFiles: Boolean; public ... property NeedDeleteFiles: Boolean read FNeedDeleteFiles write SetNeedDeleteFiles; end;
次ã«ãNeedDeleteFilesããããã£ã®ç¶æ ãããžã¥ã¢ã«ã³ã³ããŒãã³ãïŒTCheckBoxïŒcbNeedDeleteFilesã®ç¶æ ã«é¢é£ä»ããå¿ èŠããããŸãã ããã¯ãããããã£èšå®ã¡ãœããã䜿çšããŠç°¡åã«å®è¡ã§ããŸãã
procedure TfmImport.SetNeedDeleteFiles(const Value: Boolean); begin if FNeedDeleteFiles <> Value then begin FNeedDeleteFiles := Value; cbNeedDeleteFiles.Checked := FNeedDeleteFiles; end; end;
FNeedDeleteFiles <> Valueæ¡ä»¶ãå¿ èŠãªçç±å°ãåŸã§èª¬æããŸãã äž»ãªããšã¯ãNeedDeleteFilesããããã£ã«å€ãå²ãåœãŠããšãèªåçã«ãã§ãã¯ãããããšã§ãïŒããã¯ã»ãšãã©MVCã¢ãã«ã§ã-ã¢ãã«èŠçŽ ã®å€ãå€æŽãããšããã¥ãŒãèªåçã«å€æŽãããŸãïŒã ãã ãããã®æ¥ç¶ã¯ãå éšããŒã¿ããã€ã³ã¿ãŒãã§ã€ã¹ãžã®1ã€ã®æ¹æ³ã«ãããŸããã ãã¥ãŒïŒã€ãŸãããã§ãã¯ããŒã¯ïŒããã¢ãã«ãžã®ãã£ãŒãããã¯ãéæããå¿ èŠããããŸãã ãããè¡ãã«ã¯ããã§ãã¯ããã¯ã¹ã®OnClickãã³ãã©ãŒã«æ¬¡ã®ã³ãŒããèšè¿°ããŸãã
procedure TfmImport.cbNeedDeleteFilesClick(Sender: TObject); begin NeedDeleteFiles := cbNeedDeleteFiles.Checked; end;
ã€ãŸã ãã¥ãŒã«å¯Ÿããã¢ã¯ã·ã§ã³ïŒãã®å Žåããã§ãã¯ããŒã¯ãã¯ãªãã¯ããïŒã¯ãã¢ãã«ããã¥ãŒã®çŸåšã®ç¶æ ã«åãããŸãã ãã ããã¢ãã«ã¯ãã¥ãŒã決ããŠä¿¡é Œããªãããããã¥ãŒã®ç¶æ ãã¢ãã«ã®ç¶æ ã«æ»ããŸãïŒforce cbNeedDeleteFiles.CheckedïŒ= FNeedDeleteFilesãããã«åé¡ã¯ãããŸãããFNeedDeleteFiles<> OnClickãã³ãã©ãŒã¯å床åŒã³åºããŸãããå®éã«ã¯åæ§ã®ãã§ãã¯ããããããåŒã³åºããŸããã
procedure TCustomCheckBox.SetChecked(Value: Boolean); begin if Value then State := cbChecked else State := cbUnchecked; end; procedure TCustomCheckBox.SetState(Value: TCheckBoxState); begin if FState <> Value then begin FState := Value; ... end; end;
ããã§ãTfmImport.NeedDeleteFilesããããã£ã®ç¶æ ããäž¡æ¹åã®dawç¶æ cbNeedDeleteFiles.CheckedãšåæããŸããã cbNeedDeleteFiles.Checkedãžã®ã¢ã¯ã»ã¹ã«äœ¿çšããããã°ã©ã ã®ãã¹ãŠã®å Žæã§ãNeedDeleteFilesããããã£ã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãã ããã«ãããNeedDeleteFilesèŠçŽ ã®è¡šçŸãCheckBoxã§ããããšãå®å šã«å¿ããããšãã§ããŸãã ãããã©ãã»ã©çŽ æŽããããæ³åããããšããã§ããŸããã ãã®åŸãCheckBoxã2ã€ã®ã©ãžãªãã¿ã³ãªã©ã«çœ®ãæããããšãã§ããŸããSetNeedDeleteFilessetã¡ãœããïŒModel-> View directionïŒãšããã¥ãŒã¹ããŒããå€æŽããããšãã«èµ·åãããã³ãã©ãŒã®ã¿ã§æžãæããå¿ èŠããããŸãã èŠèŠã³ã³ããŒãã³ãïŒè¡šç€º->ã¢ãã«ã®æ¹åïŒã
NeedDeleteFilesããããã£ã®å€ãšããžã¥ã¢ã«ã³ã³ããŒãã³ãã®ç¶æ ã®åæåæãªã©ã®éèŠãªãã€ã³ããèŠéããŸããã ãã¡ããããŠã£ã³ããŠãéãããšãã«ãdawãåžžã«èšå®ãŸãã¯åžžã«ãªãã«ãªã£ãŠããå ŽåãDesignTimeã§æ£ããç¶æ ãèšå®ãããã©ãŒã ã¯ã©ã¹ã®OnCreateã§FNeedDeleteFilesãã£ãŒã«ãã«å¯Ÿå¿ããå€ãå²ãåœãŠãããšãã§ããŸãã ãã ããããã¯ããŸãä¿¡é Œæ§ãé«ããªãããïŒããã«åŸãå¿ èŠããããççŸãé¿ããã®ã¯ç°¡åã§ãïŒããããã£ãŠãOnCreateã§ã¯ããã©ãŒã ã¯ã©ã¹ã次ã®ã³ãŒããé 眮ããæ¹ãé©åã§ãã
procedure TfmImport.FormCreate(Sender: TObject); begin FNeedDeleteFiles := False; // , , , set- NeedDeleteFiles := True; // set- GUI ( ) end;
èšäºã®æ¬¡ã®éšåã§ã¯ãããè€éãªã±ãŒã¹ã«ã€ããŠèª¬æããŸãïŒèŠçŽ ã®ãªã¹ãïŒTListBoxãTCheckListBoxãTComboBoxïŒã䜿çšããMVCã¹ã¿ã€ã«ã§ã®äœæ¥ãšããŠã£ã³ããŠãéãããããšãã®èŠèŠèŠçŽ ã®ç¶æ ãèšæ¶ããéã®èœãšãç©Žã«ã€ããŠã
UPDã èšäºã®2çªç®ã®éšåãè¿œå ãããŸãã
UPDã èšäºã®3çªç®ã®éšåãè¿œå ãããŸãã