데이타셋 데모

1. Tag를 활용한 리펙토링
2. Interface를 활용한 DataSet State 분리
This commit is contained in:
pagewiz@naver.com
2024-11-19 10:52:51 +09:00
commit de67a00e75
11 changed files with 2287 additions and 0 deletions
+399
View File
@@ -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
+114
View File
@@ -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.
+456
View File
@@ -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
+80
View File
@@ -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
/// <summary>MainUnit에서 DataSet State를 사용하기 위해 인터페이스로 전달</summary>
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);
/// <summary>Employee 전체 데이타 반환</summary>
/// <returns>TArray<TEmployee> TEmployee 레코드를 배열로 반환</returns>
/// <remarks>예제함수</remarks>
function GetAllEmployee: TArray<TEmployee>;
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<TEmployee>;
begin
var Employees: TArray<TEmployee>;
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.
+16
View File
@@ -0,0 +1,16 @@
unit Employee.Model;
interface
type
TEmployee = record
Name: string;
Age: integer;
Position: string;
Salary: integer;
Address: string;
end;
implementation
end.
+17
View File
@@ -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.
File diff suppressed because it is too large Load Diff
+21
View File
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<Transactions>
<Transaction>1899-12-30 00:00:00.000.450,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\controller\DataUnit.dfm=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.dfm</Transaction>
<Transaction>1899-12-30 00:00:00.000.095,=D:\Embarcadero\projects\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.172,=D:\Embarcadero\projects\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.114,=D:\Embarcadero\projects\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.547,=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.833,=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.842,=D:\Embarcadero\projects\WebModuleUnit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.905,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\직원관리.dproj=D:\Embarcadero\projects\Project1.dproj</Transaction>
<Transaction>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</Transaction>
<Transaction>1899-12-30 00:00:00.000.127,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\MainUnit.pas=D:\Embarcadero\projects\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.127,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\MainUnit.dfm=D:\Embarcadero\projects\Unit1.dfm</Transaction>
<Transaction>1899-12-30 00:00:00.000.001,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\model\Employee.Model.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.851,=D:\Embarcadero\projects\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.450,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\controller\DataUnit.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.106,=D:\Embarcadero\projects\FormUnit1.pas</Transaction>
<Transaction>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</Transaction>
</Transactions>
</BorlandProject>
Binary file not shown.
Binary file not shown.
+61
View File
@@ -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