diff options
Diffstat (limited to 'extras')
-rw-r--r-- | extras/tiopf/demos/Common/Model_View.pas | 77 | ||||
-rw-r--r-- | extras/tiopf/demos/EditControlsDemo/frmMain.pas | 46 |
2 files changed, 72 insertions, 51 deletions
diff --git a/extras/tiopf/demos/Common/Model_View.pas b/extras/tiopf/demos/Common/Model_View.pas index 82a9027b..d50762fd 100644 --- a/extras/tiopf/demos/Common/Model_View.pas +++ b/extras/tiopf/demos/Common/Model_View.pas @@ -7,10 +7,10 @@ unit Model_View; interface uses - Classes - ,tiGenericEditMediators - ,tiGenericListMediators -// ,tiCompositeMediators + Classes, tiMediators +// , tiListMediators +// ,tiGenericEditMediators +// ,tiGenericListMediators ; type @@ -28,8 +28,8 @@ type procedure OnTextChanged(Sender: TObject); protected procedure SetupGUIandObject; override; - procedure GuiToObject; override; - procedure ObjectToGui; override; + procedure DoGuiToObject; override; + procedure DoObjectToGui; override; end; @@ -64,11 +64,11 @@ type { TPersonList_ComboBox_Mediator } - TPersonList_ComboBox_Mediator = class(TComboBoxMediator) - protected - procedure SetupGUIandObject; override; - end; - + //TPersonList_ComboBox_Mediator = class(TComboBoxMediator) + //protected + //procedure SetupGUIandObject; override; + //end; + (* TPersonList_ListView_CompositeMediator = class(TCompositeListViewMediator) protected @@ -79,7 +79,23 @@ type implementation uses - Model, SysUtils; + Model, SysUtils, tiBaseMediator, TypInfo, tiObject; + + +procedure RegisterMediators; +begin + // Fallbacks (generic) + gMediatorManager.RegisterMediator(TMediatorEditView,TTiObject,[tkSstring,tkAstring,tkinteger,tkFloat]); + gMediatorManager.RegisterMediator(TMediatorCheckBoxView,TTiObject,[tkBool]); + gMediatorManager.RegisterMediator(TMediatorComboboxView,TTiObject,[tkSString,tkAString]); + gMediatorManager.RegisterMediator(TMediatorStaticTextView,TTiObject); + gMediatorManager.RegisterMediator(TMediatorTrackBarView,TTiObject,[tkInteger]); + gMediatorManager.RegisterMediator(TMediatorDynamicComboBoxView,TTiObject,[tkClass]); + gMediatorManager.RegisterMediator(TMediatorMemoView,TTiObject,[tksString,tkAString]); + // Specific +// gMediatorManager.RegisterMediator(TMediatorCalendarComboView,TLeerling,'DateOfBirth'); +// gMediatorManager.RegisterMediator(TMediatorComboboxView,TLeerling,'Gender'); +end; { TPersonNameView } @@ -120,12 +136,12 @@ end; { TPersonList_ComboBox_Mediator } -procedure TPersonList_ComboBox_Mediator.SetupGUIandObject; -begin - inherited SetupGUIandObject; -// View.Style := csDropDownList; -// View.ReadOnly := True; -end; +//procedure TPersonList_ComboBox_Mediator.SetupGUIandObject; +//begin + //inherited SetupGUIandObject; +//// View.Style := csDropDownList; +//// View.ReadOnly := True; +//end; { TPersonList_ListView_CompositeMediator } @@ -167,33 +183,24 @@ begin EditControl.OnChange := @OnTextChanged; end; -procedure TPerson_Age_TextEdit_View.GuiToObject; +procedure TPerson_Age_TextEdit_View.DoGuiToObject; begin - inherited GuiToObject; + inherited DoGuiToObject; // manual example without RTTI // TPerson(Subject).Age := StrToInt(EditControl.Text); end; -procedure TPerson_Age_TextEdit_View.ObjectToGui; +procedure TPerson_Age_TextEdit_View.DoObjectToGui; begin - inherited ObjectToGui; + inherited DoObjectToGui; // manual example without RTTI // EditControl.Text := IntToStr(TPerson(Subject).Age); end; + initialization - {----------------------------------------------------------------------------- - Register all your Mediator Views here - Params: ClassName and Property name of the business object as a string - Mediator View class - -----------------------------------------------------------------------------} + { Register all your Mediator Views here } + RegisterMediators; - // This is not used anymore and needs to be removed -{ - gMediatorFactory.RegisterMediatorClass('TPerson.Name' ,TPerson_Name_TextEdit_View); - gMediatorFactory.RegisterMediatorClass('TPerson.Age' ,TPerson_Age_SpinEdit_View); - gMediatorFactory.RegisterMediatorClass('TPerson.Age' ,TPerson_Age_TrackBar_Mediator); - gMediatorFactory.RegisterMediatorClass('TPerson.Name' ,TPerson_Name_Memo_Mediator); - gMediatorFactory.RegisterMediatorClass('TPerson.GenderGUI',TPerson_Gender_ComboBox_Mediator); -} end. + diff --git a/extras/tiopf/demos/EditControlsDemo/frmMain.pas b/extras/tiopf/demos/EditControlsDemo/frmMain.pas index 83d25adc..d6e416de 100644 --- a/extras/tiopf/demos/EditControlsDemo/frmMain.pas +++ b/extras/tiopf/demos/EditControlsDemo/frmMain.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, gui_form, gui_button, gui_label, gui_edit, gui_trackbar, - gui_combobox, gui_memo, Model, tiGenericEditMediators; + gui_combobox, gui_memo, Model, tiFormMediator, Model_View; type TMainForm = class(TfpgForm) @@ -25,12 +25,14 @@ type { The object we will be working with. } FPerson: TPerson; + { Form Mediator } + FMediator: TFormMediator; { Edit mediators } - FEditNameMediator: TMediatorEditView; -// FSpinEditAgeMediator: TMediatorSpinEditView; - FTrackBarAgeMediator: TMediatorTrackBarView; - FMemoNameMediator: TMediatorMemoView; - FComboBoxGenderMediator: TMediatorComboBoxView; +// FEditNameMediator: TMediatorEditView; +//// FSpinEditAgeMediator: TMediatorSpinEditView; +// FTrackBarAgeMediator: TMediatorTrackBarView; +// FMemoNameMediator: TMediatorMemoView; +// FComboBoxGenderMediator: TMediatorComboBoxView; procedure btnCloseClick(Sender: TObject); procedure btnShowModelClick(Sender: TObject); @@ -52,7 +54,6 @@ implementation uses gui_dialogs - ,Model_View ; { TMainForm } @@ -77,7 +78,7 @@ end; procedure TMainForm.edtNameChange(Sender: TObject); begin - FEditNameMediator.GUIChanged; + //FEditNameMediator.GUIChanged; end; procedure TMainForm.edtAgeChange(Sender: TObject); @@ -87,13 +88,13 @@ end; procedure TMainForm.AgeTrackBarChange(Sender: TObject; APosition: integer); begin - FTrackBarAgeMediator.GUIChanged; + //FTrackBarAgeMediator.GUIChanged; end; procedure TMainForm.cbGenderChange(Sender: TObject); begin - writeln('cbGenderChange'); - FComboBoxGenderMediator.GUIChanged; + //writeln('cbGenderChange'); + //FComboBoxGenderMediator.GUIChanged; end; procedure TMainForm.InitializeComponents; @@ -227,11 +228,24 @@ end; procedure TMainForm.SetupMediators; begin +{ FEditNameMediator := TPerson_Name_TextEdit_View.CreateCustom(edtName, FPerson, 'Name', 'Text'); // FSpinEditAgeMediator := TPerson_Age_SpinEdit_View.CreateCustom(edtAge, FPerson, 'Age', 'Value'); FTrackBarAgeMediator := TPerson_Age_TrackBar_Mediator.CreateCustom(AgeTrackBar, FPerson, 'Age', 'Position'); FMemoNameMediator := TPerson_Name_Memo_Mediator.CreateCustom(memMemo, FPerson, 'Name', ''); FComboBoxGenderMediator := TPerson_Gender_ComboBox_Mediator.CreateCustom(cbGender, FPerson, 'GenderGUI', 'Text'); +} + if not Assigned(FMediator) then + begin + FMediator := TFormMediator.Create(self); + FMediator.Name := 'DemoMediator'; + FMediator.AddProperty('Name', edtName); + FMediator.AddProperty('Age', AgeTrackBar); + FMediator.AddProperty('Name', memMemo); + FMediator.AddProperty('GenderGUI', cbGender); + end; + FMediator.Subject := FPerson; + FMediator.Active := True; end; procedure TMainForm.SetupEventHandlers; @@ -266,11 +280,11 @@ end; destructor TMainForm.Destroy; begin { free mediators - they will detach themselves } - FEditNameMediator.Free; -// FSpinEditAgeMediator.Free; - FTrackBarAgeMediator.Free; - FMemoNameMediator.Free; - FComboBoxGenderMediator.Free; +// FEditNameMediator.Free; +//// FSpinEditAgeMediator.Free; +// FTrackBarAgeMediator.Free; +// FMemoNameMediator.Free; +// FComboBoxGenderMediator.Free; FPerson.Free; inherited Destroy; |