commit de67a00e751c01459a5c81c529c38c3467536162 Author: pagewiz@naver.com Date: Tue Nov 19 10:52:51 2024 +0900 데이타셋 데모 1. Tag를 활용한 리펙토링 2. Interface를 활용한 DataSet State 분리 diff --git a/source/MainUnit.dfm b/source/MainUnit.dfm new file mode 100644 index 0000000..c020efe --- /dev/null +++ b/source/MainUnit.dfm @@ -0,0 +1,399 @@ +object frmMain: TfrmMain + Left = 0 + Top = 0 + Caption = 'DataSet '#49892#49845 + ClientHeight = 685 + ClientWidth = 816 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Segoe UI' + Font.Style = [] + Position = poScreenCenter + OnCreate = FormCreate + TextHeight = 15 + object lcMain: TdxLayoutControl + Left = 0 + Top = 0 + Width = 816 + Height = 665 + Align = alClient + TabOrder = 0 + LayoutLookAndFeel = dxLayoutSkinLookAndFeel1 + object btnAdd: TcxButton + Left = 401 + Top = 12 + Width = 75 + Height = 35 + Action = acAdd + TabOrder = 0 + end + object btnEdit: TcxButton + Left = 483 + Top = 12 + Width = 75 + Height = 35 + Action = acEdit + TabOrder = 1 + end + object btnDelete: TcxButton + Left = 565 + Top = 12 + Width = 75 + Height = 35 + Action = acDelete + TabOrder = 2 + end + object btnPost: TcxButton + Left = 647 + Top = 12 + Width = 75 + Height = 35 + Action = acSave + TabOrder = 3 + end + object btnCancel: TcxButton + Left = 729 + Top = 12 + Width = 75 + Height = 35 + Action = acCancel + TabOrder = 4 + end + object grdEmployee: TcxGrid + Left = 12 + Top = 175 + Width = 792 + Height = 478 + TabOrder = 10 + object dbtvEmployee: TcxGridDBTableView + Navigator.Buttons.CustomButtons = <> + ScrollbarAnnotations.CustomAnnotations = <> + DataController.DataSource = dmData.dsEmployee + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsData.CancelOnExit = False + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Editing = False + OptionsData.Inserting = False + OptionsSelection.CellSelect = False + OptionsView.ColumnAutoWidth = True + OptionsView.GroupByBox = False + object dbtvEmployeeRecId: TcxGridDBColumn + DataBinding.FieldName = 'RecId' + Visible = False + end + object dbtvEmployeename: TcxGridDBColumn + Caption = #51060#47492 + DataBinding.FieldName = 'name' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taCenter + end + object dbtvEmployeeage: TcxGridDBColumn + Caption = #45208#51060 + DataBinding.FieldName = 'age' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taCenter + end + object dbtvEmployeeposition: TcxGridDBColumn + Caption = #51649#50948 + DataBinding.FieldName = 'position' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taCenter + Width = 41 + end + object dbtvEmployeesalary: TcxGridDBColumn + Caption = #44553#50668 + DataBinding.FieldName = 'salary' + PropertiesClassName = 'TcxCurrencyEditProperties' + HeaderAlignmentHorz = taCenter + end + object dbtvEmployeeaddress: TcxGridDBColumn + Caption = #51452#49548 + DataBinding.FieldName = 'address' + HeaderAlignmentHorz = taCenter + end + end + object grdEmployeeLevel1: TcxGridLevel + GridView = dbtvEmployee + end + end + object dbteName: TcxDBTextEdit + Left = 55 + Top = 93 + AutoSize = False + DataBinding.DataField = 'name' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 5 + Height = 27 + Width = 157 + end + object dbseAge: TcxDBSpinEdit + Left = 248 + Top = 93 + AutoSize = False + DataBinding.DataField = 'age' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 6 + Height = 27 + Width = 157 + end + object dbtePosition: TcxDBTextEdit + Left = 441 + Top = 93 + AutoSize = False + DataBinding.DataField = 'position' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 7 + Height = 27 + Width = 156 + end + object dbseSalary: TcxDBSpinEdit + Left = 633 + Top = 93 + AutoSize = False + DataBinding.DataField = 'salary' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 8 + Height = 27 + Width = 157 + end + object dbteAddress: TcxDBTextEdit + Left = 55 + Top = 127 + DataBinding.DataField = 'address' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 9 + Width = 735 + end + object lgRoot: TdxLayoutGroup + AlignHorz = ahClient + AlignVert = avClient + Hidden = True + ItemIndex = 1 + ShowBorder = False + Index = -1 + end + object lgToolbar: TdxLayoutGroup + Parent = lgRoot + CaptionOptions.Text = 'New Group' + CaptionOptions.Visible = False + ItemIndex = 4 + LayoutDirection = ldHorizontal + ShowBorder = False + Index = 0 + end + object lgInput: TdxLayoutGroup + Parent = lgRoot + CaptionOptions.Text = #52628#44032' / '#54200#51665 + ItemIndex = 1 + Index = 1 + end + object lgGrid: TdxLayoutGroup + Parent = lgRoot + AlignVert = avClient + CaptionOptions.Text = 'New Group' + CaptionOptions.Visible = False + ShowBorder = False + Index = 2 + end + object liAdd: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton1' + CaptionOptions.Visible = False + Control = btnAdd + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 0 + end + object liEdit: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton2' + CaptionOptions.Visible = False + Control = btnEdit + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 1 + end + object liDelete: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton3' + CaptionOptions.Visible = False + Control = btnDelete + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 2 + end + object liSave: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton4' + CaptionOptions.Visible = False + Control = btnPost + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Enabled = False + Index = 3 + end + object liCancel: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton5' + CaptionOptions.Visible = False + Control = btnCancel + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 4 + end + object liGird: TdxLayoutItem + Parent = lgGrid + AlignHorz = ahClient + AlignVert = avClient + CaptionOptions.Text = 'cxGrid1' + CaptionOptions.Visible = False + Control = grdEmployee + ControlOptions.OriginalHeight = 200 + ControlOptions.OriginalWidth = 250 + ControlOptions.ShowBorder = False + Index = 0 + end + object dxLayoutItem2: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #51060#47492 + Control = dbteName + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 0 + end + object dxLayoutItem3: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #45208#51060 + Control = dbseAge + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 1 + end + object dxLayoutItem4: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #51649#50948 + Control = dbtePosition + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 2 + end + object dxLayoutItem5: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #44553#50668 + Control = dbseSalary + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 3 + end + object dxLayoutItem6: TdxLayoutItem + Parent = lgInput + CaptionOptions.Text = #51452#49548 + Control = dbteAddress + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 1 + end + object dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup + Parent = lgInput + LayoutDirection = ldHorizontal + Index = 0 + end + end + object sbMain: TdxStatusBar + Left = 0 + Top = 665 + Width = 816 + Height = 20 + Panels = < + item + PanelStyleClassName = 'TdxStatusBarTextPanelStyle' + end> + end + object acToolbar: TActionList + Images = dmData.ilSmallIcons + Left = 288 + Top = 8 + object acAdd: TAction + Tag = 1 + Caption = #52628#44032 + ImageIndex = 0 + OnExecute = DataSetCRUD + end + object acEdit: TAction + Tag = 2 + Caption = #49688#51221 + ImageIndex = 1 + OnExecute = DataSetCRUD + end + object acDelete: TAction + Tag = 3 + Caption = #49325#51228 + ImageIndex = 2 + OnExecute = DataSetCRUD + end + object acSave: TAction + Tag = 4 + Caption = #51200#51109 + Enabled = False + ImageIndex = 3 + OnExecute = DataSetCRUD + end + object acCancel: TAction + Tag = 5 + Caption = #52712#49548 + ImageIndex = 4 + OnExecute = DataSetCRUD + end + end + object scTheme: TdxSkinController + NativeStyle = False + SkinName = 'WXI' + SkinPaletteName = 'Clearness' + Left = 72 + Top = 8 + end + object dxLayoutLookAndFeelList: TdxLayoutLookAndFeelList + Left = 176 + Top = 8 + object dxLayoutSkinLookAndFeel1: TdxLayoutSkinLookAndFeel + PixelsPerInch = 96 + end + end +end diff --git a/source/MainUnit.pas b/source/MainUnit.pas new file mode 100644 index 0000000..9958388 --- /dev/null +++ b/source/MainUnit.pas @@ -0,0 +1,114 @@ +unit MainUnit; + +interface + +uses + { Delphi } + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Actions, Vcl.ActnList, System.ImageList, Vcl.ImgList, + Vcl.Menus, Vcl.StdCtrls, Data.DB, + { DevExpress } + dxForms, cxGraphics, dxUIAClasses, cxControls, dxLayoutControlAdapters, dxLayoutContainer, + cxButtons, cxClasses, dxLayoutControl, cxStyles, cxCustomData, cxFilter, cxData, + cxDataStorage, cxEdit, cxNavigator, dxDateRanges, dxScrollbarAnnotations, cxDBData, + cxGridLevel, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxGrid, dxmdaset, dxLayoutcxEditAdapters, cxTextEdit, cxCurrencyEdit, cxContainer, + cxImageList, cxMaskEdit, cxSpinEdit, cxDBEdit, dxCore, dxStatusBar, + { DevExpress Skin } + cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinWXI, dxLayoutLookAndFeels, dxSkinsForm, + { Custom } + DataUnit; + +type + TfrmMain = class(TdxForm, IDataStateNotifier) + lgRoot: TdxLayoutGroup; + lcMain: TdxLayoutControl; + lgToolbar: TdxLayoutGroup; + lgInput: TdxLayoutGroup; + lgGrid: TdxLayoutGroup; + btnAdd: TcxButton; + liAdd: TdxLayoutItem; + btnEdit: TcxButton; + liEdit: TdxLayoutItem; + btnDelete: TcxButton; + liDelete: TdxLayoutItem; + btnPost: TcxButton; + liSave: TdxLayoutItem; + btnCancel: TcxButton; + liCancel: TdxLayoutItem; + dbtvEmployee: TcxGridDBTableView; + grdEmployeeLevel1: TcxGridLevel; + grdEmployee: TcxGrid; + liGird: TdxLayoutItem; + dbtvEmployeeRecId: TcxGridDBColumn; + dbtvEmployeename: TcxGridDBColumn; + dbtvEmployeeage: TcxGridDBColumn; + dbtvEmployeeposition: TcxGridDBColumn; + dbtvEmployeesalary: TcxGridDBColumn; + dbtvEmployeeaddress: TcxGridDBColumn; + dbteName: TcxDBTextEdit; + dxLayoutItem2: TdxLayoutItem; + dbseAge: TcxDBSpinEdit; + dxLayoutItem3: TdxLayoutItem; + dbtePosition: TcxDBTextEdit; + dxLayoutItem4: TdxLayoutItem; + dbseSalary: TcxDBSpinEdit; + dxLayoutItem5: TdxLayoutItem; + dbteAddress: TcxDBTextEdit; + dxLayoutItem6: TdxLayoutItem; + dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup; + acToolbar: TActionList; + acAdd: TAction; + acEdit: TAction; + acDelete: TAction; + acSave: TAction; + acCancel: TAction; + scTheme: TdxSkinController; + dxLayoutLookAndFeelList: TdxLayoutLookAndFeelList; + dxLayoutSkinLookAndFeel1: TdxLayoutSkinLookAndFeel; + sbMain: TdxStatusBar; + procedure DataSetCRUD(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + procedure NotifyDataSetStateChange(const AState: TDataSetState); + public + { Public declarations } + end; + +var + frmMain: TfrmMain; + +implementation + +{$R *.dfm} + +procedure TfrmMain.DataSetCRUD(Sender: TObject); +// action에 Tag로 하나의 함수로 리펙토링 +begin + var Tag:= TAction(Sender).Tag; + Case Tag of + 1: // 추가 + begin + dmData.mdEmployee.Append; + dbteName.SetFocus; + end; + 2: dmData.mdEmployee.Edit; // 수정 + 3: dmData.mdEmployee.Delete; // 삭제 + 4: dmData.mdEmployee.Post; // 저장 + 5: dmData.mdEmployee.Cancel; // 취소 + End; +end; + +procedure TfrmMain.FormCreate(Sender: TObject); +begin + // DataSet State를 DataUnit으로 분리(유닛간 결합도를 분리) 리펙토링 + if Assigned(dmData) then + dmData.SetNotifier(Self); +end; + +procedure TfrmMain.NotifyDataSetStateChange(const AState: TDataSetState); +begin + acSave.Enabled:= Not(AState in [dsBrowse]); +end; + +end. diff --git a/source/controller/DataUnit.dfm b/source/controller/DataUnit.dfm new file mode 100644 index 0000000..f1b1b04 --- /dev/null +++ b/source/controller/DataUnit.dfm @@ -0,0 +1,456 @@ +object dmData: TdmData + OnCreate = DataModuleCreate + Height = 332 + Width = 408 + object mdEmployee: TdxMemData + Indexes = <> + Persistent.Data = { + 5665728FC2F5285C8FFE3F050000000A000000010005006E616D650002000000 + 02000400616765000500000001000900706F736974696F6E0004000000030007 + 0073616C61727900320000000100080061646472657373000106000000C8ABB1 + E6B5BF011F000104000000B4EBB8AE0140E133000112000000BACEBBEA20B5BF + B7A1B1B820B8EDC0E5B5BF0106000000B1E8B8BBB5BF012A000104000000B0FA + C0E501401640000112000000BACEBBEA20C7D8BFEEB4EBB1B820BFECB5BF} + SortOptions = [] + Left = 208 + Top = 80 + object mdEmployeename: TStringField + FieldName = 'name' + Size = 10 + end + object mdEmployeeage: TSmallintField + FieldName = 'age' + end + object mdEmployeeposition: TStringField + FieldName = 'position' + Size = 5 + end + object mdEmployeesalary: TIntegerField + FieldName = 'salary' + end + object mdEmployeeaddress: TStringField + FieldName = 'address' + Size = 50 + end + end + object dsEmployee: TDataSource + AutoEdit = False + DataSet = mdEmployee + OnStateChange = dsEmployeeStateChange + Left = 112 + Top = 80 + end + object ilSmallIcons: TcxImageList + SourceDPI = 96 + FormatVersion = 1 + Left = 136 + Top = 160 + Bitmap = { + 494C010105000800040010001000FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000002000000001002000000000000020 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000010000130000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000201001E683908B10000000000000000000000000000 + 00000000000000000000000000002816036F0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000042A170372C36B0FF3D77610FF0000000000000000000000000000 + 0000000000000000000E4C2905974A2905970000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000905 + 00358C4D0BCED77610FFD77610FFD77610FF00000008010000120603002C180D + 02574E2B069ABC670EEFD77610FF0B06003B0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000E45260591D274 + 10FCD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776 + 10FFD77610FFD77610FF703D08B8000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000160C0152AB5E0DE4D77610FFD776 + 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776 + 10FFD77610FFAC5F0DE40201001C000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000001109014AA45A0DDFD77610FFD776 + 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776 + 10FF894B0BCC0302002200000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000B3E220489CF72 + 10FBD77610FFD77610FFD77610FFD77610FFC76E0FF6A45A0DDF623507AC170D + 0155000000030000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000703 + 002E83480AC7D77610FFD77610FFD77610FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000022414026ABE690FF0D77610FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000020100195F3407A90000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000001F8C02F2229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF209202F6000000000000000000000000000000000000 + 000000000008071F0073166501CF219602FB219702FB176901D1072100760000 + 000A000000000000000000000000000000000000000000000000D77610FFD575 + 10FE211202650201001900000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000805052A73121289CF1B1BC9FB1B1BCAFB12128CD105052C760000 + 000A0000000000000000000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000000000000001 + 001B176902D1229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF186E + 02D60002001F0000000000000000000000000000000000000000D57510FE2112 + 026508040034BC670EEF321C037C000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 021B12128DD11B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1414 + 93D60000031F00000000000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000000000071767 + 02D0229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF186E02D60000000A00000000000000000000000000000000211202650804 + 0034BC670EEFD77610FFD77610FF321C037C0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000071212 + 8BD01B1BD1FF12128DD21717ADE81B1BD1FF1B1BD1FF1818B7EF111185CC1B1B + D1FF141493D60000000A000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000061C006E229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF07210076000000000000000000000000000000000000000EB664 + 0EEBD77610FFD77610FFD77610FFD77610FF321C037C00000000000000000000 + 00000000000000000000000000000000000000000000000000000505266E1B1B + D1FF131390D4000001140000052B1717ADE81717B2EC010108340000000E1111 + 80C81B1BD1FF05052C76000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000156001C9229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF176902D10000000000000000000000000000000000000000190D + 0257D07210FBD77610FFD77610FFD77610FFD77610FF321C037C000000000000 + 0000000000000000000000000000000000000000000000000000111182C91B1B + D1FF1818B7EF01010834000000000000052B0000072F000000000000052B1616 + A9E51B1BD1FF12128CD1000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000208E02F3229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229702FB00000000000000000000000000000000000000000000 + 0000190D0257D07210FBD77610FFD77610FFD77610FFD77610FF321C037C0000 + 00000000000000000000000000000000000000000000000000001919BDF31B1B + D1FF1B1BD1FF1818B7EF0101083400000000000000000000062D1717ADE81B1B + D1FF1B1BD1FF1B1BCAFB000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF0000000000000000000000001F8D02F3229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF219602FB00000000000000000000000000000000000000000000 + 000000000000190D0257D07210FBD77610FFD77610FFD77610FFD77610FF301A + 03790000000000000000000000000000000000000000000000001818BCF31B1B + D1FF1B1BD1FF1717B2EC0000072F00000000000000000000052B1717ADE81B1B + D1FF1B1BD1FF1A1AC9FB000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000145E01C7229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF166601CF00000000000000000000000000000000000000000000 + 00000000000000000000190D0257D07210FBD77610FFD77610FFCF7210FA150C + 015104020024000000000000000000000000000000000000000011117FC71B1B + D1FF1717B2EC0000072F000000000000072F01010834000000000000052B1717 + ADE81B1BD1FF121289CF000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000061B006B229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF071F007300000000000000000000000000000000000000000000 + 0000000000000000000000000000190D0257D07210FBCF7210FA150C0151120A + 014BCB7010F8311B037B000000000000000000000000000000000505246B1B1B + D1FF141494D7000001170000072F1717B2EC1818B7EF01010834000001141212 + 8DD21B1BD1FF05052A73000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000061663 + 01CC229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF176902D10000000800000000000000000000000000000000000000000000 + 000000000000000000000000000000000000190D0257150C0151120A014BCB70 + 10F8D77610FFBD680EEF00000000000000000000000000000000000000061111 + 85CC1B1BD1FF141494D71717B2EC1B1BD1FF1B1BD1FF1818B7EF131390D41B1B + D1FF12128DD100000008000000000000000000000000229C02FF229C02FF229C + 02FF00000000229C02FF229C02FF229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000000001 + 0017166301CC229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF1767 + 01D00001001B0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000001000017C56C0FF4D776 + 10FFC56C0FF40D07003F00000000000000000000000000000000000000000000 + 0117111185CC1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1212 + 8BD00000021B00000000000000000000000000000000229C02FF229C02FF229C + 02FF00000000229C02FF00000000229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000000000 + 000000000006061B006B145E01C71F8D02F31F8E02F3156001C9061C006E0000 + 0007000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000190D0257AF60 + 0DE60D07003F0000000000000000000000000000000000000000000000000000 + 0000000000060505246B11117FC71919BDF31919BDF3111182C90505266E0000 + 00070000000000000000000000000000000000000000229C02FF229C02FF229C + 02FF00000000229C02FF00000000229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000001E8802EE229C02FF229C + 02FF00000000229C02FF229C02FF229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF1F8C02F2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000200000000100010000000000000100000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000} + DesignInfo = 10485896 + ImageInfo = < + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061 + 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437 + 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646 + 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A + 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669 + 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66 + 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B + 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431 + 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2241 + 6464436972636C6564223E0D0A09093C7061746820636C6173733D2247726565 + 6E2220643D224D31362C3443392E342C342C342C392E342C342C313673352E34 + 2C31322C31322C31327331322D352E342C31322D31325332322E362C342C3136 + 2C347A204D32342C3138682D367636682D34762D364838762D34683656386834 + 763668365631387A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\Icon Builder\Actions_AddCircled.svg' + Keywords = 'Icon Builder;Actions;AddCircled' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061 + 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437 + 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646 + 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A + 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669 + 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66 + 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B + 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431 + 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2245 + 646974223E0D0A09093C7061746820636C6173733D22426C75652220643D224D + 32372E362C382E326C2D332E382D332E38632D302E352D302E352D312E342D30 + 2E352D312E392C306C2D322E352C322E356C352E382C352E386C322E352D322E + 354332382E312C392E362C32382E312C382E382C32372E362C382E327A222F3E + 0D0A09093C706F6C79676F6E20636C6173733D22426C75652220706F696E7473 + 3D22342C323820392E382C323820342C32322E32202623393B222F3E0D0A0909 + 3C7265637420783D22352E382220793D2231332E3422207472616E73666F726D + 3D226D617472697828302E373037202D302E3730373220302E3730373220302E + 373037202D382E303732312031352E34303438292220636C6173733D22426C75 + 65222077696474683D2231372E3622206865696768743D22382E32222F3E0D0A + 093C2F673E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\Icon Builder\Actions_Edit.svg' + Keywords = 'Icon Builder;Actions;Edit' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061 + 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437 + 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646 + 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A + 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669 + 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66 + 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B + 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431 + 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2244 + 656C657465436972636C6564223E0D0A09093C7061746820636C6173733D2252 + 65642220643D224D31362C3443392E342C342C342C392E342C342C313673352E + 342C31322C31322C31327331322D352E342C31322D31325332322E362C342C31 + 362C347A204D32332E312C32302E326C2D322E382C322E384C31362C31382E38 + 6C2D342E322C342E3220202623393B2623393B6C2D322E382D322E386C342E32 + 2D342E326C2D342E322D342E326C322E382D322E386C342E322C342E326C342E + 322D342E326C322E382C322E384C31382E382C31364C32332E312C32302E327A + 222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\Icon Builder\Actions_DeleteCircled.svg' + Keywords = 'Icon Builder;Actions;DeleteCircled' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F637373223E2E477265656E7B + 66696C6C3A233033394332333B7D3C2F7374796C653E0D0A3C7061746820636C + 6173733D22477265656E2220643D224D32392C32682D35763130483856324833 + 43322E342C322C322C322E342C322C3376323663302C302E362C302E342C312C + 312C3168323663302E362C302C312D302E342C312D3156334333302C322E342C + 32392E362C322C32392C327A204D32342C32344838762D3620202623393B6831 + 365632347A204D31302C327638683856324831307A204D31342C38682D325634 + 683256387A222F3E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\XAF\Action_SaveScript.svg' + Keywords = 'XAF;Action;SaveScript' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66 + 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61 + 73733D22426C75652220643D224D33322C323863302C302C302D382D31362D38 + 76364C302C31364C31362C3676364333322C31322C33322C32382C33322C3238 + 7A222F3E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\XAF\Action_Cancel.svg' + Keywords = 'XAF;Action;Cancel' + end> + end +end diff --git a/source/controller/DataUnit.pas b/source/controller/DataUnit.pas new file mode 100644 index 0000000..289ffbc --- /dev/null +++ b/source/controller/DataUnit.pas @@ -0,0 +1,80 @@ +unit DataUnit; + +interface + +uses + { Delphi } + System.SysUtils, System.Classes, Data.DB, dxmdaset, System.ImageList, + Vcl.ImgList, Vcl.Controls, cxImageList, cxGraphics, + { Constom } + Employee.Model; + +type + /// MainUnit에서 DataSet State를 사용하기 위해 인터페이스로 전달 + IDataStateNotifier = interface + procedure NotifyDataSetStateChange(const AState: TDataSetState); + end; + + TdmData = class(TDataModule) + mdEmployee: TdxMemData; + mdEmployeename: TStringField; + mdEmployeeage: TSmallintField; + mdEmployeeposition: TStringField; + mdEmployeesalary: TIntegerField; + mdEmployeeaddress: TStringField; + dsEmployee: TDataSource; + ilSmallIcons: TcxImageList; + procedure dsEmployeeStateChange(Sender: TObject); + procedure DataModuleCreate(Sender: TObject); + private + FNotifier: IDataStateNotifier; + public + procedure SetNotifier(ANotifier: IDataStateNotifier); + /// Employee 전체 데이타 반환 + /// TArray TEmployee 레코드를 배열로 반환 + /// 예제함수 + function GetAllEmployee: TArray; + end; + +var + dmData: TdmData; + +implementation + +{$R *.dfm} + +procedure TdmData.DataModuleCreate(Sender: TObject); +begin + mdEmployee.Active:= True; +end; + +procedure TdmData.dsEmployeeStateChange(Sender: TObject); +begin + // DataSet 상태가 변할때 NotifyDataSetStateChange 메소드로 전달 + if Assigned(FNotifier) then + FNotifier.NotifyDataSetStateChange(dsEmployee.DataSet.State); +end; + +procedure TdmData.SetNotifier(ANotifier: IDataStateNotifier); +begin + FNotifier:= ANotifier; +end; + +function TdmData.GetAllEmployee: TArray; +begin + var Employees: TArray; + var i:= 0; + + SetLength(Employees, mdEmployee.RecordCount); + mdEmployee.First; + + while Not mdEmployee.EOF do + begin + Employees[i].Name:= mdEmployee.FieldByName('Name').AsString; + Inc(i); + mdEmployee.Next; + end; + + result:= Employees; +end; +end. diff --git a/source/model/Employee.Model.pas b/source/model/Employee.Model.pas new file mode 100644 index 0000000..5bbc131 --- /dev/null +++ b/source/model/Employee.Model.pas @@ -0,0 +1,16 @@ +unit Employee.Model; + +interface + +type + TEmployee = record + Name: string; + Age: integer; + Position: string; + Salary: integer; + Address: string; + end; + +implementation + +end. diff --git a/source/직원관리.dpr b/source/직원관리.dpr new file mode 100644 index 0000000..e4356a1 --- /dev/null +++ b/source/직원관리.dpr @@ -0,0 +1,17 @@ +program ; + +uses + Vcl.Forms, + MainUnit in 'MainUnit.pas' {frmMain}, + DataUnit in 'controller\DataUnit.pas' {dmData: TDataModule}, + Employee.Model in 'model\Employee.Model.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.MainFormOnTaskbar := True; + Application.CreateForm(TdmData, dmData); + Application.CreateForm(TfrmMain, frmMain); + Application.Run; +end. diff --git a/source/직원관리.dproj b/source/직원관리.dproj new file mode 100644 index 0000000..f82529e --- /dev/null +++ b/source/직원관리.dproj @@ -0,0 +1,1123 @@ + + + {EA31A137-83B2-4C28-B86E-FB0AB60319AC} + 20.2 + VCL + True + Debug + Win32 + 직원관리 + 3 + Application + 직원관리.dpr + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + ..\dcu\$(Platform)\$(Config) + ..\bin\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + 직원관리 + 1042 + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + + + cxSchedulerRS29;dxPScxCommonRS29;dxRibbonRS29;DataSnapServer;vclwinx;dxPScxExtCommonRS29;dxRichEditControlCoreRS29;fmx;dxSpreadSheetReportDesignerRS29;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;dxComnRS29;dxFlowChartDesignerRS29;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;dxBarExtDBItemsRS29;dbxcds;vcledge;cxVerticalGridRS29;FmxTeeUI;cxFireDACAdaptersRS29;dxPSDBTeeChartRS29;cxSchedulerWebServiceStorageRS29;DBXFirebirdDriver;dxRichEditControlRS29;dxPsPrVwAdvRS29;dacvcl290;FireDACSqliteDriver;DbxClientDriver;dxPSdxGaugeControlLnkRS29;soapmidas;dxRibbonCustomizationFormRS29;TeeUI;dbexpress;dxEMFRS29;dxDockingRS29;vquery290;inet;vcltouch;dxPSdxFCLnkRS29;dxorgcRS29;FireDACDBXDriver;dxSpreadSheetCoreConditionalFormattingDialogsRS29;fmxdae;dxPSRichEditControlLnkRS29;dxPSdxSpreadSheetLnkRS29;CustomIPTransport;FireDACMSSQLDriver;cxADOAdaptersRS29;dxPSPrVwRibbonRS29;IndySystem;dxPScxTLLnkRS29;dxPSdxDBOCLnkRS29;dxGDIPlusRS29;ibxbindings;vclFireDAC;dxPSCoreRS29;dxSpreadSheetRS29;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;cxGridEMFRS29;dxPSdxMapControlLnkRS29;dxGanttControlRS29;dxPScxVGridLnkRS29;dxPScxPivotGridLnkRS29;dxADOServerModeRS29;dxWizardControlRS29;bindcompdbx;rtl;FireDACMySQLDriver;dxCloudServiceLibraryRS29;cxIBXAdaptersRS29;dxServerModeRS29;DBXSqliteDriver;dxBarDBNavRS29;TMSVCLUIPackPkgDXE15;DBXSybaseASEDriver;dxSpreadSheetCoreRS29;dxNavBarRS29;vclimg;DataSnapFireDAC;unidacfmx290;inetdbxpress;FireDAC;xmlrtl;ibxpress;dxFireDACEMFRS29;dsnap;FireDACDb2Driver;dxPSdxLCLnkRS29;DBXOracleDriver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;DatasnapConnectorsFreePascal;dxPSLnksRS29;dxmdsRS29;dxPSdxOCLnkRS29;sgcWebSocketsD12;cxSchedulerGridRS29;dxPScxSchedulerLnkRS29;TMSLogging;emshosting;dxADOEMFRS29;dxChartControlRS29;dxPSdxDBTVLnkRS29;FireDACCommonDriver;dxGaugeControlRS29;IndyIPClient;dxPDFViewerRS29;bindcompvclwinx;dxOrgChartAdvancedCustomizeFormRS29;emsedge;bindcompfmx;TMSVCLUIPackPkgExDXE15;dxBarExtItemsRS29;crcontrols290;dxFlowChartLayoutsRS29;inetdb;dxdborRS29;ibmonitor;FireDACASADriver;Tee;dxPScxGridLnkRS29;cxPivotGridChartRS29;vclactnband;TMSVCLUIPackPkgXlsDXE15;fmxFireDAC;FireDACInfxDriver;dxRichEditCoreRS29;cxTreeListdxBarPopupMenuRS29;DBXMySQLDriver;dxFlowChartAdvancedCustomizeFormRS29;VclSmp;cxSchedulerRibbonStyleEventEditorRS29;DataSnapCommon;dxPSTeeChartRS29;fmxase;dxtrmdRS29;dxFlowChartRS29;TMSVCLUIPackPkgWizDXE15;DBXOdbcDriver;dbrtl;dxPScxPCProdRS29;FireDACOracleDriver;Skia.Package.FMX;TeeDB;FireDACMSAccDriver;cxGridRS29;dxSpellCheckerRS29;DataSnapIndy10ServerTransport;dxRichEditDocumentModelRS29;dxMapControlRS29;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;FireDACTDataDriver;cxLibraryRS29;Skia.Package.VCL;vcldb;dxPSdxPDFViewerLnkRS29;cxSchedulerTreeBrowserRS29;unidacvcl290;dacfmx290;bindcomp;dxTabbedMDIRS29;cxExportRS29;inetstn;IndyCore;RESTBackendComponents;dxHttpIndyRequestRS29;dxTileControlRS29;dxFireDACServerModeRS29;cxPivotGridOLAPRS29;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;adortl;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;dxCoreRS29;cxPivotGridRS29;dxdbtrRS29;dac290;DBXDb2Driver;dxSkinsCoreRS29;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;dxBarRS29;tethering;bindcompvcl;DBXSybaseASADriver;CloudService;dxSpreadSheetConditionalFormattingDialogsRS29;cxTreeListRS29;FMXTee;soaprtl;unidac290;dxDBXServerModeRS29;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + + + cxSchedulerRS29;dxPScxCommonRS29;dxRibbonRS29;DataSnapServer;vclwinx;dxPScxExtCommonRS29;dxRichEditControlCoreRS29;fmx;dxSpreadSheetReportDesignerRS29;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;dxComnRS29;dxFlowChartDesignerRS29;appanalytics;IndyProtocols;vclx;dxBarExtDBItemsRS29;dbxcds;vcledge;cxVerticalGridRS29;FmxTeeUI;cxFireDACAdaptersRS29;dxPSDBTeeChartRS29;cxSchedulerWebServiceStorageRS29;DBXFirebirdDriver;dxRichEditControlRS29;dxPsPrVwAdvRS29;FireDACSqliteDriver;DbxClientDriver;dxPSdxGaugeControlLnkRS29;soapmidas;dxRibbonCustomizationFormRS29;TeeUI;dbexpress;dxEMFRS29;dxDockingRS29;inet;vcltouch;dxPSdxFCLnkRS29;dxorgcRS29;FireDACDBXDriver;dxSpreadSheetCoreConditionalFormattingDialogsRS29;fmxdae;dxPSRichEditControlLnkRS29;dxPSdxSpreadSheetLnkRS29;CustomIPTransport;FireDACMSSQLDriver;cxADOAdaptersRS29;dxPSPrVwRibbonRS29;IndySystem;dxPScxTLLnkRS29;dxPSdxDBOCLnkRS29;dxGDIPlusRS29;ibxbindings;vclFireDAC;dxPSCoreRS29;dxSpreadSheetRS29;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;cxGridEMFRS29;dxPSdxMapControlLnkRS29;dxGanttControlRS29;dxPScxVGridLnkRS29;dxPScxPivotGridLnkRS29;dxADOServerModeRS29;dxWizardControlRS29;bindcompdbx;rtl;FireDACMySQLDriver;dxCloudServiceLibraryRS29;cxIBXAdaptersRS29;dxServerModeRS29;DBXSqliteDriver;dxBarDBNavRS29;TMSVCLUIPackPkgDXE15;DBXSybaseASEDriver;dxSpreadSheetCoreRS29;dxNavBarRS29;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;xmlrtl;ibxpress;dxFireDACEMFRS29;dsnap;FireDACDb2Driver;dxPSdxLCLnkRS29;DBXOracleDriver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;DatasnapConnectorsFreePascal;dxPSLnksRS29;dxmdsRS29;dxPSdxOCLnkRS29;sgcWebSocketsD12;cxSchedulerGridRS29;dxPScxSchedulerLnkRS29;emshosting;dxADOEMFRS29;dxChartControlRS29;dxPSdxDBTVLnkRS29;FireDACCommonDriver;dxGaugeControlRS29;IndyIPClient;dxPDFViewerRS29;bindcompvclwinx;dxOrgChartAdvancedCustomizeFormRS29;emsedge;bindcompfmx;TMSVCLUIPackPkgExDXE15;dxBarExtItemsRS29;dxFlowChartLayoutsRS29;inetdb;dxdborRS29;ibmonitor;FireDACASADriver;Tee;dxPScxGridLnkRS29;cxPivotGridChartRS29;vclactnband;TMSVCLUIPackPkgXlsDXE15;fmxFireDAC;FireDACInfxDriver;dxRichEditCoreRS29;cxTreeListdxBarPopupMenuRS29;DBXMySQLDriver;dxFlowChartAdvancedCustomizeFormRS29;VclSmp;cxSchedulerRibbonStyleEventEditorRS29;DataSnapCommon;dxPSTeeChartRS29;fmxase;dxtrmdRS29;dxFlowChartRS29;DBXOdbcDriver;dbrtl;dxPScxPCProdRS29;FireDACOracleDriver;TeeDB;FireDACMSAccDriver;cxGridRS29;dxSpellCheckerRS29;DataSnapIndy10ServerTransport;dxRichEditDocumentModelRS29;dxMapControlRS29;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;FireDACTDataDriver;cxLibraryRS29;Skia.Package.VCL;vcldb;dxPSdxPDFViewerLnkRS29;cxSchedulerTreeBrowserRS29;bindcomp;dxTabbedMDIRS29;cxExportRS29;inetstn;IndyCore;RESTBackendComponents;dxHttpIndyRequestRS29;dxTileControlRS29;dxFireDACServerModeRS29;cxPivotGridOLAPRS29;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;adortl;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;dxCoreRS29;cxPivotGridRS29;dxdbtrRS29;DBXDb2Driver;dxSkinsCoreRS29;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;dxBarRS29;tethering;bindcompvcl;DBXSybaseASADriver;CloudService;dxSpreadSheetConditionalFormattingDialogsRS29;cxTreeListRS29;FMXTee;soaprtl;dxDBXServerModeRS29;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + + + DEBUG;$(DCC_Define) + true + false + true + true + true + true + true + + + false + PerMonitorV2 + true + 1033 + + + PerMonitorV2 + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + PerMonitorV2 + + + PerMonitorV2 + + + + MainSource + + +
frmMain
+ dfm +
+ +
dmData
+ dfm + TDataModule +
+ + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + Application + + + + 직원관리.dpr + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + 직원관리.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + True + True + + + 12 + + + + +
diff --git a/source/직원관리.dproj.local b/source/직원관리.dproj.local new file mode 100644 index 0000000..6753e22 --- /dev/null +++ b/source/직원관리.dproj.local @@ -0,0 +1,21 @@ + + + + 1899-12-30 00:00:00.000.450,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\controller\DataUnit.dfm=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.dfm + 1899-12-30 00:00:00.000.095,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.172,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.114,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.547,=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.833,=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.842,=D:\Embarcadero\projects\WebModuleUnit1.pas + 1899-12-30 00:00:00.000.905,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\직원관리.dproj=D:\Embarcadero\projects\Project1.dproj + 1899-12-30 00:00:00.000.724,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Employee.Model.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\model\Employee.Model.pas + 1899-12-30 00:00:00.000.127,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\MainUnit.pas=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.127,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\MainUnit.dfm=D:\Embarcadero\projects\Unit1.dfm + 1899-12-30 00:00:00.000.001,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\model\Employee.Model.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.851,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.450,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\controller\DataUnit.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.106,=D:\Embarcadero\projects\FormUnit1.pas + 1899-12-30 00:00:00.000.805,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Employee.Model.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\model\Employee.Model.pas + + diff --git a/source/직원관리.identcache b/source/직원관리.identcache new file mode 100644 index 0000000..4d1087e Binary files /dev/null and b/source/직원관리.identcache differ diff --git a/source/직원관리.res b/source/직원관리.res new file mode 100644 index 0000000..6dae403 Binary files /dev/null and b/source/직원관리.res differ diff --git a/source/직원관리.skincfg b/source/직원관리.skincfg new file mode 100644 index 0000000..e44e66c --- /dev/null +++ b/source/직원관리.skincfg @@ -0,0 +1,61 @@ +[ExpressSkins] +Default=1 +ShowNotifications=0 +Enabled=1 +dxSkinBasic=0 +dxSkinBlack=0 +dxSkinBlue=0 +dxSkinBlueprint=0 +dxSkinCaramel=0 +dxSkinCoffee=0 +dxSkinDarkroom=0 +dxSkinDarkSide=0 +dxSkinDevExpressDarkStyle=0 +dxSkinDevExpressStyle=0 +dxSkinFoggy=0 +dxSkinGlassOceans=0 +dxSkinHighContrast=0 +dxSkiniMaginary=0 +dxSkinLilian=0 +dxSkinLiquidSky=0 +dxSkinLondonLiquidSky=0 +dxSkinMcSkin=0 +dxSkinMetropolis=0 +dxSkinMetropolisDark=0 +dxSkinMoneyTwins=0 +dxSkinOffice2007Black=0 +dxSkinOffice2007Blue=0 +dxSkinOffice2007Green=0 +dxSkinOffice2007Pink=0 +dxSkinOffice2007Silver=0 +dxSkinOffice2010Black=0 +dxSkinOffice2010Blue=0 +dxSkinOffice2010Silver=0 +dxSkinOffice2013DarkGray=0 +dxSkinOffice2013LightGray=0 +dxSkinOffice2013White=0 +dxSkinOffice2016Colorful=0 +dxSkinOffice2016Dark=0 +dxSkinOffice2019Black=0 +dxSkinOffice2019Colorful=0 +dxSkinOffice2019DarkGray=0 +dxSkinOffice2019White=0 +dxSkinPumpkin=0 +dxSkinSeven=0 +dxSkinSevenClassic=0 +dxSkinSharp=0 +dxSkinSharpPlus=0 +dxSkinSilver=0 +dxSkinSpringtime=0 +dxSkinStardust=0 +dxSkinSummer2008=0 +dxSkinTheAsphaltWorld=0 +dxSkinTheBezier=0 +dxSkinValentine=0 +dxSkinVisualStudio2013Blue=0 +dxSkinVisualStudio2013Dark=0 +dxSkinVisualStudio2013Light=0 +dxSkinVS2010=0 +dxSkinWhiteprint=0 +dxSkinWXI=1 +dxSkinXmas2008Blue=0