unit EmployeeUnit; interface uses System.SysUtils, System.Classes, Data.DB, dxmdaset, System.ImageList, Vcl.ImgList, Vcl.Controls, cxImageList, cxGraphics; type TdmData = class(TDataModule) mdEmployee: TdxMemData; mdEmployeename: TStringField; mdEmployeeage: TSmallintField; mdEmployeesalary: TIntegerField; mdEmployeesex: TBooleanField; mdEmployeeaddress: TStringField; mdEmployeeposition: TStringField; dsEmployee: TDataSource; liSmallIcons: TcxImageList; mdPosition: TdxMemData; mdPositionName: TStringField; mdPositionid: TIntegerField; procedure DataModuleCreate(Sender: TObject); procedure DataModuleDestroy(Sender: TObject); procedure dsEmployeeStateChange(Sender: TObject); private { Private declarations } public { Public declarations } end; var dmData: TdmData; implementation {%CLASSGROUP 'Vcl.Controls.TControl'} {$R *.dfm} uses Vcl.Dialogs, MainUnit; var Path: string; procedure TdmData.DataModuleCreate(Sender: TObject); begin Path:= GetCurrentDir + '\data.db'; // 'D:\Embarcadero\projects\스터디\2024.12.01.dataset_demo\bin\Win32\Debug\data.db' if FileExists(Path) then mdEmployee.LoadFromBinaryFile(Path); end; procedure TdmData.DataModuleDestroy(Sender: TObject); begin mdEmployee.SaveToBinaryFile(Path); end; procedure TdmData.dsEmployeeStateChange(Sender: TObject); { dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc, dsOpening } begin // ShowMessage('데아타셋 상태값이 변경이 되었습니다'); frmMain.acSave.Enabled:= dsEmployee.State in [dsInsert, dsEdit]; // if (dsEmployee.State = dsInsert) or (dsEmployee.State = dsEdit) then // frmMain.acSave.Enabled:= True end; end.