
ããŒã2
ããŒã3
ãã®ã·ãªãŒãºã®ç¬¬4åã§ã¯ãããã¹ã¯ããããã¢ããªã±ãŒã·ã§ã³ã®éçºã«æ»ãã LiveBindingããã€ã³ããããªããžã§ã¯ãã®ãã¯ãããžãŒããã詳现ã«ç解ããããšããŸãã ãã®ã¡ã«ããºã ã¯æ®éçã§ãããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãšãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ã«é©ããŠããŸãã ããã«ããã®ã¡ã«ããºã ã¯VCLã§ãæ©èœããŸãã LiveBindingã®ç¥èã¯ãå€å žçãªãããžã§ã¯ãããå§ããã®ãæé©ã§ãã
ãŸãæåã«ãåãã¿ã€ãã®ããã€ãã®ã¿ã¹ã¯ãå®è¡ããå¿ èŠããããŸããããã®äœæ¥ã¯æ¥åžžçãªäœæ¥ã«æãããããããŸããã ãªã¹ããç·šéããããã®ãã©ãŒã ãã€ãŸã枬å®åäœã®ãªã¹ããšè£œåã®ãªã¹ããäœæããããšã§ãã ãããã®ãã©ãŒã ã¯ã¡ã€ã³ãã©ãŒã ã¡ãã¥ãŒããåŒã³åºãããŸããããããäœæããå¿ èŠããããŸãã
ãã®ãããããŒã¿ã¢ãžã¥ãŒã«ã«2ã€ã®TFDTableã³ã³ããŒãã³ããé 眮ããtblUnitããŒãã«ãštblFoodstuffããŒãã«ã䜿çšããããã«æ§æããŸãïŒtblRecipeããŒãã«ã䜿çšããããã®ããŒã¿ã»ãããšåæ§ïŒã ã³ã³ããŒãã³ããããã«ã¯ãªãã¯ããŠãã£ãŒã«ããšãã£ã¿ãŒãéãããã¹ãŠã®ãã£ãŒã«ããè¿œå ããŸãïŒã³ã³ããã¹ãã¡ãã¥ãŒé ç®ã®[ãã¹ãŠã®ãã£ãŒã«ããè¿œå ]ïŒã
ã»ãšãã©ãã¹ãŠã®å®è£ ã§ãããŒã¿ã»ããã³ã³ããŒãã³ãã¯TDataSetã¯ã©ã¹ããç¶æ¿ãããããã€ãã®ãã£ãŒã«ãã»ããã§æ©èœããããšãç解ããããšãéèŠã§ãã ããã¯ãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã TFieldã®åå« ïŒTIntegerFieldãTStringFieldãªã©ïŒãæããŸãã äžé£ã®ãã£ãŒã«ãããã¶ã€ã³ã¿ã€ã ïŒãã¶ã€ã³ã¿ã€ã ïŒã«äœæããããªããžã§ã¯ãã€ã³ã¹ãã¯ã¿ãŒãã䜿çšããŠãã£ãŒã«ãã®ããããã£ãèšå®ã§ããŸãã TFDTableãèæ ®ããå ŽåãããŒãã«ã®ç©çãã£ãŒã«ãã«å¯Ÿå¿ãããã£ãŒã«ãã«å ããŠãèšç®ïŒèšç®ïŒãã£ãŒã«ããŸãã¯çœ®æïŒã«ãã¯ã¢ããïŒãã£ãŒã«ããªã©ãä»ã®ã¿ã€ãã®ãã£ãŒã«ããäœæã§ããŸãã ãããã®ãã£ãŒã«ãã®å€ã¯ãããã°ã©ã äžã«åçã«èšç®ãããããŒã¿ãœãŒã¹ããååŸãããŸããã 以äžã§ã¯ããã®ãããªãã£ãŒã«ããäœæããäŸãæ€èšããŸãã
åãå Žåããã£ãŒã«ãã»ããããã¶ã€ã³ã¢ãŒãã§äœæãããŠããªãå Žåãããã°ã©ã æäœäžã«ããŒã¿ã»ãããéããšããã£ãŒã«ãã»ãããèªåçã«äœæãããŸãã
以äžã¯ãuDM.dfmããŒã¿ã¢ãžã¥ãŒã«ãã©ãŒã ãã¡ã€ã«ã®ã¹ããããã§ãããŒã¿ã»ããã®1ã€ãšãã®é¢é£ãã£ãŒã«ãã®èª¬æãå«ãŸããŠããŸãã ãã©ãŒã ã®ã³ã³ããã¹ãã¡ãã¥ãŒã§[ããã¹ããšããŠè¡šç€º]ãéžæãããšããã©ãŒã ã®ããã¹ãè¡šçŸãååŸã§ããŸãã éåžžã®ãã©ãŒã éä¿¡ã¢ãŒãã«æ»ãã«ã¯ãããã©ãŒã ãšããŠè¡šç€ºããã¯ãªãã¯ããŸãã
object FDTUnits: TFDTable IndexFieldNames = 'Id' Connection = FDConnection1 UpdateOptions.UpdateTableName = 'tblUnit' TableName = 'tblUnit' Left = 112 Top = 208 object FDTUnitsId: TFDAutoIncField FieldName = 'Id' Origin = 'Id' ProviderFlags = [pfInWhere, pfInKey] ReadOnly = True end object FDTUnitsUnitName: TStringField FieldName = 'UnitName' Origin = 'UnitName' Required = True Size = 25 end object FDTUnitsAbbr: TStringField FieldName = 'Abbr' Origin = 'Abbr' Required = True Size = 7 end end
äœæãããããŒã¿ã»ããã¯ãããã°ã©ã ã®èµ·åæã«éãå¿ èŠããããŸãã ConnectToDBããã·ãŒãžã£ã次ã®ããã«å€æŽããŸãã
function TDM.ConnectToDB: Boolean; begin try FDConnection1.Connected := True; FDTRecipe.Open; FDTUnits.Open; FDTFoodstuff.Open; except end; Result := FDConnection1.Connected; end;
ã¢ããªã±ãŒã·ã§ã³éçºã®æ¬¡ã®ã¹ãããã¯ã枬å®åäœã®ããŒãã«ïŒãªã¹ãïŒã衚瀺ããã³ç·šéããããã®æ°ãããã©ãŒã ãäœæããããšã§ãã åœç¶ãããã¯FM HD圢åŒã«ãªããŸãã ãã®ãã©ãŒã ãã¡ã€ã³ãã©ãŒã ã®äžå€®ã«è¡šç€ºãããããã«ãPositionFormCenterãšããŠPositionããããã£ã®å€ãèšå®ããŸãã
implementationã»ã¯ã·ã§ã³ã®äœ¿çšæžã¿ã¢ãžã¥ãŒã«ã®ãªã¹ãã«ããŒã¿ã¢ãžã¥ãŒã«ãè¿œå ããŸãã
implementation {$R *.fmx} uses uDM;
TGridãTPanelã³ã³ããŒãã³ãããã©ãŒã ã«é 眮ããŸãã ããã«ã«ãå³ã«ç€ºãããã«ããã¿ã³ãå ¥åãã£ãŒã«ããããã³TLabelã©ãã«ãé 眮ããŸãã ãã¿ã³ã®å¯äžã®ç®çã¯ããã©ãŒã ãéããããšã§ãã ModalResultããããã£ã¯mrOkã«èšå®ãããŸãã
èŠèŠçãªã³ã³ããŒãã³ãã®ååã¯ãæ確ã«ããããã ãã«ããã©ã«ãã§ä¿æãããŸãã ãã¡ãããäœæ¥äžã®ãããžã§ã¯ãã§ã¯ãååãå€æŽããããšããå§ãããŸãã

LiveBindingãšãã£ã¿ãŒã䜿çšããŠãããžã¥ã¢ã«ã³ã³ããŒãã³ããããŒã¿ãœãŒã¹ã«é¢é£ä»ããŸãã æãäžè¬çãªçšèªã§ã¯ã LiveBindingã¯ãããŸããŸãªãªããžã§ã¯ãã®ããããã£ããã€ã³ãã§ããã¡ã«ããºã ã§ãããã³ã³ãã€ã«ãããããŒããªã³ã¯ã䜿çšãããæè»ãªåŒã«åºã¥ããŠããŸãã LiveBindingã¡ã«ããºã ã¯ããªãã¶ãŒããŒãã¿ãŒã³ã«åºã¥ããŠããŸãã ãã®ãããLiveBindingã䜿çšããŠãªããžã§ã¯ãAã®äžéšã®ããããã£ãå€æŽãããšããªããžã§ã¯ãBã®ããããã£ãå€æŽãããå¯èœæ§ããããŸãããªããžã§ã¯ãéã®æ¥ç¶ã¯åæ¹åããã³åæ¹åã«ã§ããŸãã ãã®ã¢ãããŒãã¯ãããŒã¿ã»ããã®ããŒã¿ã衚瀺ããã®ã«éåžžã«äŸ¿å©ã§ãã å®éãVCLæšæºã¢ãããŒãã§ã¯ãããŒãã«ããã®ããŒã¿ã衚瀺ããããã«ç¹å¥ãªDBæåïŒDB察å¿ïŒããžã¥ã¢ã«ã³ã³ããŒãã³ããå¿ èŠã§ããããLiveBindingã§ã¯ããã®ç®çã§æãäžè¬çãªã³ã³ãããŒã«ïŒãã³ã³ãããŒã«ãïŒã䜿çšã§ããŸãã ããã«ãããžã¥ã¢ã«ã³ã³ããŒãã³ãã¯ãLiveBindingã䜿çšããããã®ç¹å¥ãªæºåãå¿ èŠãšããŸããã ãã®ã¢ãããŒãã®å©ç¹ã¯æããã§ãã ãã®ããã»ã¹ãããå°ã泚ææ·±ããããå°ã詳ããèŠãŠã¿ãŸãããã
ãã®ããã LiveBindingãã¶ã€ããéããããŒã¿ã»ããã«å¯Ÿå¿ããèŠçŽ FDTUnitsãèŠã€ããŸãã ããŒã¿ã¢ãžã¥ãŒã«ã®èŠçŽ ãLiveBindingãã¶ã€ãã«è¡šç€ºãããªãå Žåã¯ãæŽæ°ããå¿ èŠããããŸãïŒã³ã³ããã¹ãã¡ãã¥ãŒã§[ãã¶ã€ãã®æŽæ°]ãéžæããŸãïŒã Edit1å ¥åãã£ãŒã«ãã®Textããããã£ã®å€ããããŒã¿ã»ããã®UnitNameãã£ãŒã«ãã®å€ã«æ¥ç¶ããŠã¿ãŸãããã éåžžã®ãã©ãã°ã¢ã³ãããããïŒdrag-n-dropïŒã䜿çšããŸãã

æ¬åœã«äœãèµ·ãã£ãã®ã§ããïŒ
ãã¶ã€ããŒãæ¥ç¶ãèŠèŠçã«è¡šç€ºãããšããäºå®ã«å ããŠã2ã€ã®æ°ããéèŠèŠçãªã³ã³ããŒãã³ãããã©ãŒã ã«è¡šç€ºãããŸããã TBindSourceDBã³ã³ããŒãã³ãã¯ãDataSetããããã£ã䜿çšããŠãå ã®ããŒã¿ã»ããïŒãã®å Žåã¯DM.FDTUnitsïŒãšéä¿¡ããŸãã ããžã¥ã¢ã«ã³ã³ããŒãã³ãã®ããããã£ãšãã£ãŒã«ãã®é¢ä¿ã確ç«ããããšããã«ãLiveBindingãã¶ã€ãã§ãDM.FDTUnitsãªããžã§ã¯ããæ°ããBindSourceDB1ãªããžã§ã¯ãã«ãã¹ãããããã®ãªããžã§ã¯ãããã©ãŒã ã«è¡šç€ºãããŸãã

ãã®ãªããžã§ã¯ããæã€DataSetããããã£ã®å€ãæšæž¬ããã®ã¯ç°¡åã§ãã ãã¯ã©ã·ãã¯VCLéçºãã®èŠ³ç¹ã§èãã人ã«ãšã£ãŠã TBindSourceDBãäœããã®TDataSourceã¢ããã°ãšèããã®ãæãç°¡åã§ãã ãã®ã³ã³ããŒãã³ãããã©ãŒã ã«ã¹ããŒããŠãDataSetããããã£ã®å€ãæå®ããã ãã§ãã ãããŠãã³ã³ãããŒã«ããã¢ã¿ãããããŸãã ä»ã§ã¯ç¹å¥ãªDBã³ã³ãããŒã«ã§ã¯ãªããèŠèŠçãªã³ã³ããŒãã³ãã«ãªããŸãã ãããã£ãŠãã³ã³ããŒãã³ãã®ããããã£ãšãããŒã¿ã»ããã®ããŒã¿ã衚瀺ïŒããã³å Žåã«ãã£ãŠã¯å€æŽïŒããæ¹æ³ãæå®ããå¿ èŠããããŸãã æ¹æ³ãèŠãŠã¿ãŸãããã
BindSourceDB1ã«å ããŠãå¥ã®ãªããžã§ã¯ãããã©ãŒã ã«è¡šç€ºãããŸã-BindingsList1ã ãªããžã§ã¯ãéã®ãã¹ãŠã®æ¥ç¶ã®ãªããžããªã§ãã ãããã®æ¥ç¶ã«ã¯ããŸããŸãªã¿ã€ãããããŸãã å³ãããããããã«ããã®å Žåã TLinkControlToFieldåã®ãªã³ã¯ãBindingsListã«è¿œå ãããŸããã

ããšãã°ãæ¥ç¶ãåæ¹åã§ã¯ãªãåæ¹åã«ããããã«ããã®ããããã£ãç·šéã§ããŸãã

æ°ããæ¥ç¶ãè¿œå ããããšãããšãå®éã«ã¯ããã¹ãŠã®ãã®ãšãã¹ãŠããæ¥ç¶ã§ãããããªãå€ãã®ç°ãªãçš®é¡ã®æ¥ç¶ãããããšãããããŸãã

次ã«ãGridãšBindNavigatorãããŒã¿ã»ããã«æ¥ç¶ããŸãã BindNavigatorã³ã³ããŒãã³ãã®å Žåã¯ãDataSourceããããã£ãèšå®ããã ãã§ãã ãã ããBindingsList1ãªã³ã¯ãªã¹ãã«æ°ãããªã³ã¯ã¯äœæãããŸããã ãã ããã°ãªããããã€ã³ããããšãå察ã«ãã¿ã€ãTLinkGridToDataSourceBindSourceDBã®ãªããžã§ã¯ããäœæãããŸãã

ãªããžã§ã¯ãã€ã³ã¹ãã¯ã¿ãŒã§ã¯ããã£ãŒã«ãã®ãªã¹ããç·šéã§ããŸãã ãããè¡ãã«ã¯ãColumnsããããã£ãåŒã³åºãããã£ãŒã«ããšãã£ã¿ãŒã§[ãã¹ãŠã®ãã£ãŒã«ããè¿œå ]ãã¿ã³ãã¯ãªãã¯ããŸãã ãšããã§ããã®ãšãã£ã¿ãŒã¯TDBGridã®ãã£ãŒã«ããšãã£ã¿ãŒã«éåžžã«äŒŒãŠããŸãã åãã£ãŒã«ãã«ã€ããŠãããããã£ãç¹ã«ãã£ãŒã«ãå¹ ãšã¿ã€ãã«ããã¹ããç·šéã§ããŸãã ããã«ãæ°ãããã£ãŒã«ããäœæããããŒãã«åã«è¡šç€ºããåŒïŒCustomFormatããããã£ïŒãèšå®ã§ããŸãã ãããã£ãŠãIDãšç¥èªã®çµã¿åããã衚瀺ããã«ã¯ã次ã®åŒãæå®ã§ããŸãã
DataSet.FieldByName('Id').AsString +" - "+DataSet.FieldByName('Abbr').AsString
äžèšãããããããã«ãLiveBindingã¡ã«ããºã ã¯ããŒã¿ã衚瀺ããããã®ååãªæ©äŒãæäŸããŸãã 次ã«ãLiveBindingãã¶ã€ãã䜿çšãããšãèŠèŠã³ã³ããŒãã³ããããŒã¿ãœãŒã¹ã«ãªã³ã¯ããããã»ã¹ãèŠèŠåããã³ç°¡çŽ åã§ããŸãã
çµè«ãšããŠãLiveBindingã䜿çšããå¥ã®ããªãã¯ãæ€èšããŠãã ããã ãã¶ã€ããŒã§ãDMèŠçŽ ã®Abbrãã£ãŒã«ããã¢ã¯ãã£ãã«ããŸãã FDTUnitsããã³ã³ã³ããã¹ãã¡ãã¥ãŒã§[æ°ããã³ã³ãããŒã«ãžã®ãªã³ã¯...]ãéžæããŸãã 衚瀺ããããªã¹ãã§ãTEditãéžæããŸãã

[OK]ãã¿ã³ãã¯ãªãã¯ãããšãæ°ããTEditã³ã³ãããŒã«ãšTLabelã©ãã«ããæ¥çããããŠãã©ãŒã ã«é 眮ãããŸãã ãã®ãªããžã§ã¯ããç®çã®äœçœ®ã«é 眮ããã©ãã«ã®Textããããã£ã«ç®çã®å€ãèšå®ããã ãã§ãã

ã¡ãã¥ãŒã䜿çšããŠãã¡ã€ã³ãã©ãŒã ãããªã¹ãç·šéãã©ãŒã ã®åŒã³åºããæŽçããŸãã ã¡ã€ã³ãã©ãŒã ã«TMainMenuã³ã³ããŒãã³ããé 眮ããŸãã ããã«ã¯ãªãã¯ããŠã¡ãã¥ãŒãšãã£ã¿ãŒãéããŸãã å³ã«ç€ºãããã«ãããã€ãã®ãã€ã³ããäœæããŸãã

ã¡ãã¥ãŒé ç®ã枬å®åäœãã«å¯ŸããŠã次ã®OnClickã€ãã³ããã³ãã©ãŒãå®çŸ©ããŸãã
procedure TfMain.aSprUnitExecute(Sender: TObject); begin fSprUnits.ShowModal; end;
åœç¶ããªã¹ã圢åŒã®ã¢ãžã¥ãŒã«ã¯ã¡ã€ã³åœ¢åŒã«æ¥ç¶ããå¿ èŠããããŸãã
implementation {$R *.fmx} uses uAddRecipe, uSprUnit;
é¡æšã«ãã£ãŠè£œåã®ãã©ãŒã ãªã¹ããäœæã§ããŸãã
ã·ãªãŒãºã®ãã®ããŒãã§ã¯ãLiveBindingã¡ã«ããºã ããã®ç®çãããã³ãã®ä»çµã¿ãããã«è©³ãã調ã¹ãŸããã ããã«ãããã°ã©ã æ©èœã®å®è£ ãç¶ç¶ããŸãã
次ã®éææ¥ãŸã§ïŒ